{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"],"owasp":"A07:2025"}},{"id":"D14","name":"License Compliance","shortDescription":{"text":"License Compliance"},"helpUri":"https://codehealth.canine.dev/dimensions/D14"},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D20","name":"ADR Quality","shortDescription":{"text":"ADR Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D20"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"],"owasp":"A07:2025"}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A05:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"],"owasp":"A05:2025"}},{"id":"D30","name":"Dependency Vulnerabilities","shortDescription":{"text":"Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D30","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"],"owasp":"A03:2025"}},{"id":"D31","name":"IaC \u0026 Container Security","shortDescription":{"text":"IaC \u0026 Container Security"},"helpUri":"https://codehealth.canine.dev/dimensions/D31","relationships":[{"target":{"id":"CWE-1032","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-16","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1032","CWE-732","CWE-16"],"owasp":"A02:2025"}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D36","name":"Supply-chain Provenance \u0026 Signing","shortDescription":{"text":"Supply-chain Provenance \u0026 Signing"},"helpUri":"https://codehealth.canine.dev/dimensions/D36","relationships":[{"target":{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"],"owasp":"A03:2025"}},{"id":"D37","name":"Vulnerability-disclosure Policy","shortDescription":{"text":"Vulnerability-disclosure Policy"},"helpUri":"https://codehealth.canine.dev/dimensions/D37","relationships":[{"target":{"id":"CWE-1059","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1059"],"owasp":"A02:2025"}},{"id":"D40","name":"Network Egress Confinement","shortDescription":{"text":"Network Egress Confinement"},"helpUri":"https://codehealth.canine.dev/dimensions/D40"},{"id":"D41","name":"Kernel \u0026 Syscall Confinement","shortDescription":{"text":"Kernel \u0026 Syscall Confinement"},"helpUri":"https://codehealth.canine.dev/dimensions/D41"},{"id":"D43","name":"Malicious Dependencies","shortDescription":{"text":"Malicious Dependencies"},"helpUri":"https://codehealth.canine.dev/dimensions/D43","relationships":[{"target":{"id":"CWE-506","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A08:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-506"],"owasp":"A08:2025"}},{"id":"D44","name":"Platform End-of-Life","shortDescription":{"text":"Platform End-of-Life"},"helpUri":"https://codehealth.canine.dev/dimensions/D44"},{"id":"AC1","name":"Text alternatives","shortDescription":{"text":"Text alternatives"},"helpUri":"https://codehealth.canine.dev/dimensions/AC1"},{"id":"AC2","name":"Forms \u0026 labels","shortDescription":{"text":"Forms \u0026 labels"},"helpUri":"https://codehealth.canine.dev/dimensions/AC2"},{"id":"AC3","name":"Page structure","shortDescription":{"text":"Page structure"},"helpUri":"https://codehealth.canine.dev/dimensions/AC3"},{"id":"AC6","name":"Visual \u0026 motion safety","shortDescription":{"text":"Visual \u0026 motion safety"},"helpUri":"https://codehealth.canine.dev/dimensions/AC6"},{"id":"AC7","name":"A11y enforcement","shortDescription":{"text":"A11y enforcement"},"helpUri":"https://codehealth.canine.dev/dimensions/AC7"},{"id":"AX10","name":"Code composition","shortDescription":{"text":"Code composition"},"helpUri":"https://codehealth.canine.dev/dimensions/AX10"},{"id":"AX3","name":"Project dependency cycles","shortDescription":{"text":"Project dependency cycles"},"helpUri":"https://codehealth.canine.dev/dimensions/AX3"},{"id":"AX4","name":"Dependency direction","shortDescription":{"text":"Dependency direction"},"helpUri":"https://codehealth.canine.dev/dimensions/AX4"},{"id":"AX9","name":"CQS / query purity","shortDescription":{"text":"CQS / query purity"},"helpUri":"https://codehealth.canine.dev/dimensions/AX9"},{"id":"AXB2","name":"Runtime readiness","shortDescription":{"text":"Runtime readiness"},"helpUri":"https://codehealth.canine.dev/dimensions/AXB2"},{"id":"C2","name":"Access Controls","shortDescription":{"text":"Access Controls"},"helpUri":"https://codehealth.canine.dev/dimensions/C2"},{"id":"ED5","name":"Idempotency","shortDescription":{"text":"Idempotency"},"helpUri":"https://codehealth.canine.dev/dimensions/ED5"},{"id":"ES1","name":"Fold determinism","shortDescription":{"text":"Fold determinism"},"helpUri":"https://codehealth.canine.dev/dimensions/ES1"},{"id":"ES2","name":"Immutable events","shortDescription":{"text":"Immutable events"},"helpUri":"https://codehealth.canine.dev/dimensions/ES2"},{"id":"M1","name":"Documentation (README)","shortDescription":{"text":"Documentation (README)"},"helpUri":"https://codehealth.canine.dev/dimensions/M1"},{"id":"M2","name":"Architecture documentation","shortDescription":{"text":"Architecture documentation"},"helpUri":"https://codehealth.canine.dev/dimensions/M2"},{"id":"M3","name":"Folder \u0026 project structure","shortDescription":{"text":"Folder \u0026 project structure"},"helpUri":"https://codehealth.canine.dev/dimensions/M3"},{"id":"M4","name":"Documentation accuracy","shortDescription":{"text":"Documentation accuracy"},"helpUri":"https://codehealth.canine.dev/dimensions/M4"},{"id":"P1","name":"CI/CD gates","shortDescription":{"text":"CI/CD gates"},"helpUri":"https://codehealth.canine.dev/dimensions/P1"},{"id":"P10","name":"Library API \u0026 versioning","shortDescription":{"text":"Library API \u0026 versioning"},"helpUri":"https://codehealth.canine.dev/dimensions/P10"},{"id":"P12","name":"CI test-gate honesty","shortDescription":{"text":"CI test-gate honesty"},"helpUri":"https://codehealth.canine.dev/dimensions/P12"},{"id":"P2","name":"Observability","shortDescription":{"text":"Observability"},"helpUri":"https://codehealth.canine.dev/dimensions/P2"},{"id":"P3","name":"Security \u0026 performance tooling","shortDescription":{"text":"Security \u0026 performance tooling"},"helpUri":"https://codehealth.canine.dev/dimensions/P3"},{"id":"P4","name":"Deployment \u0026 Rollback","shortDescription":{"text":"Deployment \u0026 Rollback"},"helpUri":"https://codehealth.canine.dev/dimensions/P4"},{"id":"P5","name":"DR \u0026 Backup","shortDescription":{"text":"DR \u0026 Backup"},"helpUri":"https://codehealth.canine.dev/dimensions/P5"},{"id":"P6","name":"Release Hygiene","shortDescription":{"text":"Release Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/P6"},{"id":"P7","name":"Outbound HTTP resilience","shortDescription":{"text":"Outbound HTTP resilience"},"helpUri":"https://codehealth.canine.dev/dimensions/P7"},{"id":"PF3","name":"Async \u0026 latency hygiene","shortDescription":{"text":"Async \u0026 latency hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/PF3"},{"id":"S1","name":"Web-Security Posture","shortDescription":{"text":"Web-Security Posture"},"helpUri":"https://codehealth.canine.dev/dimensions/S1"},{"id":"X1","name":"Async correctness","shortDescription":{"text":"Async correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/X1"},{"id":"X10","name":"Duplicated predicate","shortDescription":{"text":"Duplicated predicate"},"helpUri":"https://codehealth.canine.dev/dimensions/X10"},{"id":"X12","name":"Unreachable branch","shortDescription":{"text":"Unreachable branch"},"helpUri":"https://codehealth.canine.dev/dimensions/X12"},{"id":"X13","name":"Undrained process stream","shortDescription":{"text":"Undrained process stream"},"helpUri":"https://codehealth.canine.dev/dimensions/X13"},{"id":"X14","name":"Bypassable address classification","shortDescription":{"text":"Bypassable address classification"},"helpUri":"https://codehealth.canine.dev/dimensions/X14"},{"id":"X15","name":"Unvalidated length from an untrusted reader","shortDescription":{"text":"Unvalidated length from an untrusted reader"},"helpUri":"https://codehealth.canine.dev/dimensions/X15"},{"id":"X17","name":"Uncapped recursion over a caller-supplied document","shortDescription":{"text":"Uncapped recursion over a caller-supplied document"},"helpUri":"https://codehealth.canine.dev/dimensions/X17"},{"id":"X19","name":"Unrestored process-global state","shortDescription":{"text":"Unrestored process-global state"},"helpUri":"https://codehealth.canine.dev/dimensions/X19"},{"id":"X20","name":"Mistyped argument guard","shortDescription":{"text":"Mistyped argument guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X20"},{"id":"X21","name":"Side-effecting pattern guard","shortDescription":{"text":"Side-effecting pattern guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X21"},{"id":"X22","name":"Contradicted release guard","shortDescription":{"text":"Contradicted release guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X22"},{"id":"X23","name":"Unguarded diagnostic materialisation","shortDescription":{"text":"Unguarded diagnostic materialisation"},"helpUri":"https://codehealth.canine.dev/dimensions/X23"},{"id":"X24","name":"Document value interpolated into markup unescaped","shortDescription":{"text":"Document value interpolated into markup unescaped"},"helpUri":"https://codehealth.canine.dev/dimensions/X24"},{"id":"X25","name":"Inert configuration knob","shortDescription":{"text":"Inert configuration knob"},"helpUri":"https://codehealth.canine.dev/dimensions/X25"},{"id":"X26","name":"Unsynchronised callback handoff","shortDescription":{"text":"Unsynchronised callback handoff"},"helpUri":"https://codehealth.canine.dev/dimensions/X26"},{"id":"X27","name":"Collection changed while being enumerated","shortDescription":{"text":"Collection changed while being enumerated"},"helpUri":"https://codehealth.canine.dev/dimensions/X27"},{"id":"X28","name":"Index access outside its own emptiness guard","shortDescription":{"text":"Index access outside its own emptiness guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X28"},{"id":"X29","name":"Per-element action decided by a fixed element","shortDescription":{"text":"Per-element action decided by a fixed element"},"helpUri":"https://codehealth.canine.dev/dimensions/X29"},{"id":"X3","name":"Exception handling","shortDescription":{"text":"Exception handling"},"helpUri":"https://codehealth.canine.dev/dimensions/X3"},{"id":"X30","name":"Support guard that admits what it rejects","shortDescription":{"text":"Support guard that admits what it rejects"},"helpUri":"https://codehealth.canine.dev/dimensions/X30"},{"id":"X32","name":"Type resolved by simple name across every loaded assembly","shortDescription":{"text":"Type resolved by simple name across every loaded assembly"},"helpUri":"https://codehealth.canine.dev/dimensions/X32"},{"id":"X4","name":"Structured logging","shortDescription":{"text":"Structured logging"},"helpUri":"https://codehealth.canine.dev/dimensions/X4"},{"id":"X6","name":"Hand-rolled structured-format parsing","shortDescription":{"text":"Hand-rolled structured-format parsing"},"helpUri":"https://codehealth.canine.dev/dimensions/X6"},{"id":"X7","name":"Silent fallback defaults","shortDescription":{"text":"Silent fallback defaults"},"helpUri":"https://codehealth.canine.dev/dimensions/X7"},{"id":"X9","name":"Subsumed condition operand","shortDescription":{"text":"Subsumed condition operand"},"helpUri":"https://codehealth.canine.dev/dimensions/X9"}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cuda::host::dispatch (cyclomatic 292): smolvm_cuda::host::dispatch has cyclomatic complexity 292 (threshold 15). Of this number, 289 points are the body\u0027s own statements and 3 belong to 2 function items inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":4714}}}],"partialFingerprints":{"codehealthFindingId/v1":"a20e9c0572000e7f693fffb86588ce623a76a59da08d4d4336882814f84e7c26"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::agent::launcher::launch_agent_vm (cyclomatic 190): smolvm::agent::launcher::launch_agent_vm has cyclomatic complexity 190 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5d4908bb90f7502d4b3d418b64a1e5d73c040572914b6b166b220797c2914c4"}},{"ruleId":"D1","level":"warning","message":{"text":"RunCmd::run (cyclomatic 125): RunCmd::run has cyclomatic complexity 125 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":1384}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d0ad65c3343fe016791c0c66e0438e7def13bf7b1063cf355a3427ecf1b35a4"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cuda::proto::encode_request (cyclomatic 115): smolvm_cuda::proto::encode_request has cyclomatic complexity 115 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/proto.rs"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"40743353f69908c4f38e5e9f97c9f7794e3e20043f00f5996e83d1e3163ece82"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cuda::proto::decode_request (cyclomatic 114): smolvm_cuda::proto::decode_request has cyclomatic complexity 114 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/proto.rs"},"region":{"startLine":1674}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a7616beeec42a3038de8fac772176439fb9cc03ceda4395bfa1d145f24c446e"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::portable_checkpoint::capture_with_completion (cyclomatic 113): smolvm::portable_checkpoint::capture_with_completion has cyclomatic complexity 113 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":1951}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c12f0a944c666bd4c078d952ae7882b103caadd3de8a612b3b2bf17b7ade9a1"}},{"ruleId":"D1","level":"warning","message":{"text":"S3Fs::dispatch (cyclomatic 99): S3Fs::dispatch has cyclomatic complexity 99 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/fs.rs"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"34b4d3029e022943749e414db22732d6579c25992ca00a69a2f93019831d9838"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cuda_daemon::spawn_clone_worker (cyclomatic 93): smolvm::cuda_daemon::spawn_clone_worker has cyclomatic complexity 93 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":5348}}}],"partialFingerprints":{"codehealthFindingId/v1":"05334fe11660d314d1f3828022c25816f42b86d14b322c62dd2eb3210b076724"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::agent::launcher_dynamic::launch_agent_vm_dynamic (cyclomatic 88): smolvm::agent::launcher_dynamic::launch_agent_vm_dynamic has cyclomatic complexity 88 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher_dynamic.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"08b50aab8fe1c60a5e6d00c31c8ba0b7ebfa30467d063157cb505b072f58efde"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::api::handlers::machines::create_machine_to_end (cyclomatic 85): smolvm::api::handlers::machines::create_machine_to_end has cyclomatic complexity 85 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":2666}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1d52c8909c96029d9f73dfe49ca4c39d552304bb4efc5e3e11bb2a568c9c851"}},{"ruleId":"D1","level":"warning","message":{"text":"AgentManager::start_via_subprocess (cyclomatic 82): AgentManager::start_via_subprocess has cyclomatic complexity 82 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":2509}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddfcbe44e16ca577904ea81aa94d8d7636f5ceb3f31bbc126f3ad35b6558a4df"}},{"ruleId":"D1","level":"warning","message":{"text":"GpuBackend::cuda_driver_library_call (cyclomatic 78): GpuBackend::cuda_driver_library_call has cyclomatic complexity 78 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":745}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcece8857dfa4a2f7366527278de128caf4b4ac840f31748c1db73e1c0a6013a"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_pack::extract::safe_unpack_skipping (cyclomatic 72): smolvm_pack::extract::safe_unpack_skipping has cyclomatic complexity 72 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":986}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dd92a3d2d4fa1e7d2fd1ac9234579ef9fec8a06e3e88894a9ddd882eaee380c"}},{"ruleId":"D1","level":"warning","message":{"text":"UpdateCmd::run (cyclomatic 70): UpdateCmd::run has cyclomatic complexity 70 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":7127}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6464e00a1564de9cf0cdeed910faae78d81a936997b37988a488fe4f1ffb107"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::internal_boot::run (cyclomatic 65): smolvm::internal_boot::run has cyclomatic complexity 65 (threshold 15). Of this number, 62 points are the body\u0027s own statements and 3 belong to one function item inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/internal_boot.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"a13b2072aaea143f1cf158a2d2378de3f2c0346bc916f9368d4c0ff30f4aca70"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::agent::fork::prepare_forks_reusing (cyclomatic 62): smolvm::agent::fork::prepare_forks_reusing has cyclomatic complexity 62 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":2534}}}],"partialFingerprints":{"codehealthFindingId/v1":"494b0e7c64301ab32371fa0ca4024c26d118e7db1a3a0e0a238338db3a2549d3"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cuda_daemon::write_module_handoff (cyclomatic 61): smolvm::cuda_daemon::write_module_handoff has cyclomatic complexity 61 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":5061}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fffc9256e90907596d1aa3ed5245f7c8ab189f1ede454753e7659519742d3b7"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cli::vm_common::start_vm_named_with_db (cyclomatic 60): smolvm::cli::vm_common::start_vm_named_with_db has cyclomatic complexity 60 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":1696}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a2e4c36881e5d5ca019026fde2f2174caf7419db5798bb88e402284ddc34491"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_agent::handle_request (cyclomatic 58): smolvm_agent::handle_request has cyclomatic complexity 58 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":2472}}}],"partialFingerprints":{"codehealthFindingId/v1":"a13a8bcc725040ce953daa3da53ef6ada899950a0421b64a5e81c208ccf7ab2f"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateCmd::run_from_smolmachine (cyclomatic 54): CreateCmd::run_from_smolmachine has cyclomatic complexity 54 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":5067}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a2a5a4511d4a0b50cc4ebd0f230bf6b6352d7d354a3967e6564355ee1f7021d"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cuda_daemon::reconstruct_golden_memory (cyclomatic 54): smolvm::cuda_daemon::reconstruct_golden_memory has cyclomatic complexity 54 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":2843}}}],"partialFingerprints":{"codehealthFindingId/v1":"4de509e99d019462c7b1c74d76aa58db498c3fdc2e871d742d4b4c048af9c7a8"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_agent::run_interactive_loop (cyclomatic 53): smolvm_agent::run_interactive_loop has cyclomatic complexity 53 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6033}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0f95fe9f749fdfb6245220474d54e5342e6beeb23d1a14fc6287c563d4330bf"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cuda::host::serve_rings (cyclomatic 48): smolvm_cuda::host::serve_rings has cyclomatic complexity 48 (threshold 15). Of this number, 37 points are the body\u0027s own statements and 11 belong to one function item inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":3394}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ddc65531d29b6cbd4022d1875ce979c66f0c7b33b097a2de2a44a9f9ffba517"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::api::handlers::machines::start_machine (cyclomatic 48): smolvm::api::handlers::machines::start_machine has cyclomatic complexity 48 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":3956}}}],"partialFingerprints":{"codehealthFindingId/v1":"f89fd5b1e4bfa78c69206a810e41fede2b5524abe72983605afe0cbe03bd3d5c"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_agent::run_interactive_loop_pty (cyclomatic 41): smolvm_agent::run_interactive_loop_pty has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6339}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6df13b983b5e1ad82d3dbcc739789cb0bec92eb81dba6bed8a754addea6709a"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::agent::vnc::run_client (cyclomatic 36): smolvm::agent::vnc::run_client has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"7248585ad0a09df39a8ed1d0ef5cf13fe463868a72ef4bc51f6877d3f9cb2c1c"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_network::stack::run_network_stack (cyclomatic 35): smolvm_network::stack::run_network_stack has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/stack.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"33310f70b600eaae7d1f955bbb8f88ab847cfd4243340d6cda522eb21178a276"}},{"ruleId":"D1","level":"warning","message":{"text":"GpuBackend::graph_exec_patch (cyclomatic 34): GpuBackend::graph_exec_patch has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":2133}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c6b7963d8ccfc59bec01d9dd29e02c0da91a7ad96436234fe31047bec9cf827"}},{"ruleId":"D1","level":"warning","message":{"text":"PoolAdmissionState::observe (cyclomatic 34): PoolAdmissionState::observe has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/admission.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a13591a5661b81d89229319c9cad00e1b0615353bbab6cff5a1d99ffb5573ca"}},{"ruleId":"D1","level":"warning","message":{"text":"LibkrunVm::exec_vm (cyclomatic 34): LibkrunVm::exec_vm has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ef3cd7892e993ce1c88bbcd6cae16f960b529de506ced374e51b4697ac40207"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_network::tcp_relay::relay_stream (cyclomatic 33): smolvm_network::tcp_relay::relay_stream has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_relay.rs"},"region":{"startLine":1252}}}],"partialFingerprints":{"codehealthFindingId/v1":"383064d73158db596d0470e46fc315ac9634018759deadcb93d452e2339a358c"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::portable_checkpoint::install_with (cyclomatic 33): smolvm::portable_checkpoint::install_with has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5925}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9666c305b8b6258b4a39086079551fe465c06c873412b8aade84bee50dbb374"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_agent::storage::pull_image_with_progress_and_auth (cyclomatic 32): smolvm_agent::storage::pull_image_with_progress_and_auth has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":3221}}}],"partialFingerprints":{"codehealthFindingId/v1":"50a3314625814b973ac9518d88bfaba3423345f2d9032b3a17a8c418eba24a87"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cuda_daemon::reconstruct_golden_modules (cyclomatic 32): smolvm::cuda_daemon::reconstruct_golden_modules has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":3311}}}],"partialFingerprints":{"codehealthFindingId/v1":"086232aac7e77f3a50c9e242c07c0257dad7f7f5292b280a1579700b40d119bc"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_agent::main (cyclomatic 31): smolvm_agent::main has cyclomatic complexity 31 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa7f5b3d2e3c516628132de0ac5cbdd267479fb78177f76ab74c5174d2d3fe41"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cuda_daemon::route_clone_connection (cyclomatic 31): smolvm::cuda_daemon::route_clone_connection has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":3968}}}],"partialFingerprints":{"codehealthFindingId/v1":"62097b1d3f579e10b6d0b9ee9675227f72294de9d6f3233ae37213f64d0726b5"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_agent::handle_connection (cyclomatic 30): smolvm_agent::handle_connection has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":2138}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb44b84aba2adc40668e8ccb08f1b2db27cabc24f0595a77eff2e4913a589940"}},{"ruleId":"D1","level":"warning","message":{"text":"State::forward (cyclomatic 30): State::forward has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-credentials/src/intercept.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b5666d5537d20196c8e52338b59253e4d52c433b3f25cf99194cfb5e79d65c7"}},{"ruleId":"D1","level":"warning","message":{"text":"AgentClient::interactive_session (cyclomatic 30): AgentClient::interactive_session has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":2452}}}],"partialFingerprints":{"codehealthFindingId/v1":"bab2b3b6276d49a07fc7b862a98701cd6b2096ef152e11cfdb0b5a943048631d"}},{"ruleId":"D1","level":"warning","message":{"text":"MonitorCmd::run (cyclomatic 29): MonitorCmd::run has cyclomatic complexity 29 (threshold 15). Of this number, 28 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: MachineCmd::run (cyclomatic 31) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":8052}}}],"partialFingerprints":{"codehealthFindingId/v1":"5734d46060c3326c9861ef4020ca4cc73d788877fcfd929062738e933ef1a9f6"}},{"ruleId":"D1","level":"warning","message":{"text":"VmRecord::updated_egress (cyclomatic 29): VmRecord::updated_egress has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/config.rs"},"region":{"startLine":1487}}}],"partialFingerprints":{"codehealthFindingId/v1":"752d57f2ed20a6b8712aad79c9ab9fe03bb37b9ebc619fec3c31ddee12203d7a"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::portable_checkpoint::stage_disk_chains_with_links (cyclomatic 29): smolvm::portable_checkpoint::stage_disk_chains_with_links has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":4839}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc840a852040cbf40002e08ead283bc606d2f3b192664182fc6120d07c879348"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::api::handlers::machines::restore_portable_checkpoint (cyclomatic 28): smolvm::api::handlers::machines::restore_portable_checkpoint has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":2103}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cb6062766e3807a73ea78261de52a7639659f5e587a30ae44e7136573daea09"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_checkpoint::store::prune_in_batches (cyclomatic 27): smolvm_checkpoint::store::prune_in_batches has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":1743}}}],"partialFingerprints":{"codehealthFindingId/v1":"7081ddffe7fa875d7460648da7434687ca9d1ca69f1f1a15a4cfc6d19258ba7e"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_pack::extract::extract_sidecar_capped (cyclomatic 27): smolvm_pack::extract::extract_sidecar_capped has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":2188}}}],"partialFingerprints":{"codehealthFindingId/v1":"a86aa795aa6f3041d1cccede2d57c288c1900ab9ed7a348c3bc9c9b333f75c67"}},{"ruleId":"D1","level":"warning","message":{"text":"PackRunCmd::run (cyclomatic 27): PackRunCmd::run has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbaa56f059b031d847ace2ea5ca84040faa188780ff4b230e79646e65b9cb12b"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cli::vm_common::fork_vm_batch (cyclomatic 27): smolvm::cli::vm_common::fork_vm_batch has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"44a984741c726d6f1641bed1f8076a553f0932a7722ae73552e8a63927517cd4"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::portable_checkpoint::validate_compatibility (cyclomatic 27): smolvm::portable_checkpoint::validate_compatibility has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5216}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b2a6ce643f2f50d9fdac198b6c9b5595dc47d963eb237229822fc6aa65989f9"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_agent::handle_run_detached (cyclomatic 26): smolvm_agent::handle_run_detached has cyclomatic complexity 26 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":4294}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddb20f8165ede4782b8128268e06428a4da2a4f8a1b834f2a3cbc4d2584a54bd"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cuda::host::translate_dptrs (cyclomatic 26): smolvm_cuda::host::translate_dptrs has cyclomatic complexity 26 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":2790}}}],"partialFingerprints":{"codehealthFindingId/v1":"506b821fbba04a5d18e15dd3aabd39cdeadf1b4f8791164260decdd350591d55"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cuda::host::replay_capture_graph (cyclomatic 26): smolvm_cuda::host::replay_capture_graph has cyclomatic complexity 26 (threshold 15). Of this number, 18 points are the body\u0027s own statements and 8 belong to 2 function items inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":4564}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb16a2a5d82e51129b5de3d49d34485c33bfcea27f415d71f89617097b03fc77"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_pack::extract::post_process_extraction (cyclomatic 26): smolvm_pack::extract::post_process_extraction has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":4529}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eb1e079c8d0c59668b98003fc08d4342314beecdb10fe1d67a2df6a173f03f7"}},{"ruleId":"D1","level":"warning","message":{"text":"PackCreateCmd::run (cyclomatic 26): PackCreateCmd::run has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"e786d2af013ddf47f71f66513977ca6ea7067b22f2c901332f834d5d749430e4"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::api::rollout::validate_generate_request (cyclomatic 26): smolvm::api::rollout::validate_generate_request has cyclomatic complexity 26 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":1873}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bb3e7c906636d326b1216743368dc30361278d29b4e823447d12645e2fd1fb4"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cli::vm_common::list_vms (cyclomatic 26): smolvm::cli::vm_common::list_vms has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":3663}}}],"partialFingerprints":{"codehealthFindingId/v1":"16c2d6d3d594d54c540007f5a05efdbdf8a88139a518d2a4e7ac08e74f528892"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cuda_host::proxy_to_daemon (cyclomatic 26): smolvm::cuda_host::proxy_to_daemon has cyclomatic complexity 26 (threshold 15). Most of this is not in the body itself: 10 of the 26 points are its own statements and the rest belongs to 2 function items inside it that branch (guest_ram_advert, guest_ram_procmem_advert). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_host.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"0246b2b97a475adb673128b2391da5a3b9e1f93babc29b929d78bdd38d34306f"}},{"ruleId":"D1","level":"warning","message":{"text":"CredentialPolicy::validate (cyclomatic 25): CredentialPolicy::validate has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-protocol/src/credentials.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd882282017be41ac4b3c3641e1226bb217c0a093ce28fcc63493af027970ca1"}},{"ruleId":"D1","level":"warning","message":{"text":"ServeStartCmd::run_server (cyclomatic 25): ServeStartCmd::run_server has cyclomatic complexity 25 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/serve.rs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"c707c1519de5fe3fa2ab224eac88c52cc11cf46bc66bfe89d38e38e11dd9de39"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_agent::storage::oci_archive_compatibility (cyclomatic 24): smolvm_agent::storage::oci_archive_compatibility has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: StorageError::fmt (cyclomatic 25) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":1997}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfea0cb90a87d17a06b1f32fcd606b13c55c5eaed369ee578daa9ee4ce329304"}},{"ruleId":"D1","level":"warning","message":{"text":"AgentClient::interactive_session_io (cyclomatic 24): AgentClient::interactive_session_io has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":2917}}}],"partialFingerprints":{"codehealthFindingId/v1":"88dad46f9a10b70c3f8605f2ba402a96d0f58770d04be23bd88ba85f5db9494a"}},{"ruleId":"D1","level":"warning","message":{"text":"AgentManager::wait_for_ready (cyclomatic 24): AgentManager::wait_for_ready has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":3792}}}],"partialFingerprints":{"codehealthFindingId/v1":"eee729d3f46f256622588598a9dadbb47127e467a66283003d0ea88664233097"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::agent::vnc::read_client_messages (cyclomatic 24): smolvm::agent::vnc::read_client_messages has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc.rs"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d8c4f885ad0f4afc35893aaaa929f4a41954c6b7791ee8737f91ecb85008d93"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::api::handlers::machines::resize_machine (cyclomatic 24): smolvm::api::handlers::machines::resize_machine has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":6616}}}],"partialFingerprints":{"codehealthFindingId/v1":"2626383998282208cc33dbee3716839ad87ea5bd118a350c53071c6c774a0cb4"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cli::smolfile::build_create_params (cyclomatic 24): smolvm::cli::smolfile::build_create_params has cyclomatic complexity 24 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/smolfile.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6bb3e58ac2df9440b98ca12a6662576be76370d4248efbd611292c50524632a"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_agent::setup_persistent_rootfs (cyclomatic 23): smolvm_agent::setup_persistent_rootfs has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":1197}}}],"partialFingerprints":{"codehealthFindingId/v1":"70b99af32cd3a62be5bc13035006143732ba2b3b83d017c91c8d23ac708d5b5e"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_checkpoint::store::materialize_cached (cyclomatic 23): smolvm_checkpoint::store::materialize_cached has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":1998}}}],"partialFingerprints":{"codehealthFindingId/v1":"50a00aa5a85775b84c285d23b08db685045bd369e47af45efcef2c170aebc9a9"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cuda::host::reclaim_session (cyclomatic 23): smolvm_cuda::host::reclaim_session has cyclomatic complexity 23 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline. This is NOT this file\u0027s highest cyclomatic complexity: smolvm_cuda::host::optrace_summary (cyclomatic 26) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":818}}}],"partialFingerprints":{"codehealthFindingId/v1":"be35fa65194a8e4e8da8aa6b898055b7fc4215b5d136013547f666fa8da47693"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cuda::host::execute_auto_graph_segment (cyclomatic 23): smolvm_cuda::host::execute_auto_graph_segment has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: smolvm_cuda::host::optrace_summary (cyclomatic 26) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":4223}}}],"partialFingerprints":{"codehealthFindingId/v1":"47c8730bd2b26ba45e4998c8e2235c647afdb7b9dcc75911f5c627a064474e75"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_network::dns_relay::run_dns_relay (cyclomatic 23): smolvm_network::dns_relay::run_dns_relay has cyclomatic complexity 23 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/dns_relay.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"177bbf73c8c2b8eda463207dd44165905dba9252cb535ba6a9ab8f50c4464bf8"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_network::icmp_relay::run_icmp_relay (cyclomatic 23): smolvm_network::icmp_relay::run_icmp_relay has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/icmp_relay.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"38a7a8d705e10220f76c91fa5353dcee043b13970586a06c74e92a9aa86579d4"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateCmd::run (cyclomatic 23): CreateCmd::run has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: MachineCmd::run (cyclomatic 31) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":4849}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fd5443f655a70fff615138eae91c172822f60be7ccb357a456471e6b5906579"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::api::handlers::pools::acquire_lease_inner (cyclomatic 23): smolvm::api::handlers::pools::acquire_lease_inner has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/pools.rs"},"region":{"startLine":804}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f83bd63a09616c2397545c36f257e5e40a4c7bbdc494efb276f2e1b2bfb9031"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::main (cyclomatic 23): smolvm::main has cyclomatic complexity 23 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/main.rs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d49f31a9d8d7154909bf2fe36fccb1c2c2745912de87e26789c7f2eaef91b01"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_agent::handle_vm_exec (cyclomatic 22): smolvm_agent::handle_vm_exec has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":8090}}}],"partialFingerprints":{"codehealthFindingId/v1":"9788430a3729191a1f3fd941cfb8b9da0780e711fbb59c6df4bf77ab052e0fbd"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cudart_shim::module_image_len (cyclomatic 22): smolvm_cudart_shim::module_image_len has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":4564}}}],"partialFingerprints":{"codehealthFindingId/v1":"d35a1962361cd616d037cbbcc51d7639e044baca879e78330a4686992edc1149"}},{"ruleId":"D1","level":"warning","message":{"text":"NvmlSampler::new (cyclomatic 22): NvmlSampler::new has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/admission.rs"},"region":{"startLine":1034}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dea073499564aed1d48c0c701f09a5720bdf7cf1c35f6da81cd1fbcf35c5cd1"}},{"ruleId":"D1","level":"warning","message":{"text":"GpuBackend::gen_lib_call (cyclomatic 21): GpuBackend::gen_lib_call has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":4169}}}],"partialFingerprints":{"codehealthFindingId/v1":"edac5b4c3652ea565af36d101c6aed2ed8445f9f7d01f1c24fb4fdb7b35708bc"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_network::stack::classify_guest_frame (cyclomatic 21): smolvm_network::stack::classify_guest_frame has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/stack.rs"},"region":{"startLine":1330}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5f957baa98bf9cdfb0d90451408dc1836c9d887b8948c1212cf6c5cc44af498"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_network::udp_relay::run_udp_relay (cyclomatic 21): smolvm_network::udp_relay::run_udp_relay has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/udp_relay.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"994e44f767a975afafd89fe8162913614a7e996d4f9fbd014562a218c1b04c0c"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_oci_layer::extract_oci_layer_with_size (cyclomatic 21): smolvm_oci_layer::extract_oci_layer_with_size has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-oci-layer/src/lib.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"f518f1caad295dde37e2e8c246aa99d38a9ef34f07200c9f39821b599bc848a6"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_shim::engine::pump_loop (cyclomatic 21): smolvm_shim::engine::pump_loop has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-shim/src/engine.rs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"71347f673c248596a03d7c4387a5cac65202b06a5b322847c095af6c0fd40802"}},{"ruleId":"D1","level":"warning","message":{"text":"Reference::parse (cyclomatic 21): Reference::parse has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/registry.rs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"9982d053d028d563aedc320b4cae0137c66a716ecf561b277ed1047f7a4c97e2"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::api::handlers::exec::log_event_stream (cyclomatic 21): smolvm::api::handlers::exec::log_event_stream has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":1021}}}],"partialFingerprints":{"codehealthFindingId/v1":"62a78def4f6292f5898374413c9860a1be5055163aa1e68205ef864d6316a015"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cli::machine::ensure_init_layer (cyclomatic 21): smolvm::cli::machine::ensure_init_layer has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: MachineCmd::run (cyclomatic 31) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":1138}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2d33eea182490133545e9773bc0ded697aeaf462261d586a93ba861503a92ed"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cuda_host::start_with_clone_mode (cyclomatic 21): smolvm::cuda_host::start_with_clone_mode has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_host.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"c887a5fd0dc176682dbb85f6b9ff1ed1256f63ba87568615dee1f05c3fc8e1fb"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_agent::process::wait_with_timeout_cleanup_and_liveness (cyclomatic 20): smolvm_agent::process::wait_with_timeout_cleanup_and_liveness has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/process.rs"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"41cbbd88c30db73dd0e6377f37250394669f58fb888bc8eb72ec498fff8eba8a"}},{"ruleId":"D1","level":"warning","message":{"text":"Client::ring_pop_response (cyclomatic 20): Client::ring_pop_response has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/client.rs"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd19c73337d1002b1e845ae8f2a9f7fcf0996a616574669a8911bedbade700d"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cudart_shim::do_memcpy_inner (cyclomatic 20): smolvm_cudart_shim::do_memcpy_inner has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":2033}}}],"partialFingerprints":{"codehealthFindingId/v1":"398e51b36ca4ef00ea03a6a484b40a41ee2a30f6f61641a0d01e0a06496f9a77"}},{"ruleId":"D1","level":"warning","message":{"text":"Client::list_dir_snapshot (cyclomatic 20): Client::list_dir_snapshot has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/s3.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"33db5135281d8f1780ac730a78d7951ea13ce498e32822df18c8ac30a0efe343"}},{"ruleId":"D1","level":"warning","message":{"text":"ForkPoolController::fill_pool (cyclomatic 20): ForkPoolController::fill_pool has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/pool_controller.rs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bfe489d408f9794e231beac9c7669a2cd5da42915830be290ca457d9a483a01"}},{"ruleId":"D1","level":"warning","message":{"text":"SmolvmDb::claim_fork_pool_slot (cyclomatic 20): SmolvmDb::claim_fork_pool_slot has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/db.rs"},"region":{"startLine":1545}}}],"partialFingerprints":{"codehealthFindingId/v1":"c48330ce75f4ccb55c2b4a83db99b1e9fea028935cb5fa3e69dede8047bb1f4e"}},{"ruleId":"D1","level":"warning","message":{"text":"EmbeddedRuntime::pause_machine_inner (cyclomatic 20): EmbeddedRuntime::pause_machine_inner has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a14b10fc5a8ab3ca106b31c9a285f5f5a924e834396d8af300fbae39e843a32"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::agent::fork::prepare_running_disk_generation (cyclomatic 20): smolvm::agent::fork::prepare_running_disk_generation has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":1021}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b39579b10e8cf62fa0d11aee85e8e7306fe2ab95f754d71e1a6f39f4af68fab"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::agent::fork::rollback_uncommitted_disk_generation (cyclomatic 20): smolvm::agent::fork::rollback_uncommitted_disk_generation has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":1495}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e9773024b0e8b5aba5f3fa53327cde9adc06bdfb4ad095b8d8b3f01737f061b"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::agent::launcher::spawn_idle_reclaim (cyclomatic 20): smolvm::agent::launcher::spawn_idle_reclaim has cyclomatic complexity 20 (threshold 15). Of this number, 18 points are the body\u0027s own statements and 2 belong to one function item inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":2967}}}],"partialFingerprints":{"codehealthFindingId/v1":"30597f928ff846bd097a44e7bb655369daac68f809054ff12d016c2f16adebb4"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cli::vm_common::delete_vm (cyclomatic 20): smolvm::cli::vm_common::delete_vm has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":2962}}}],"partialFingerprints":{"codehealthFindingId/v1":"e14227db960f832734c5ac48cb21da52e22193eea61a2fa70c55736d46cef570"}},{"ruleId":"D1","level":"warning","message":{"text":"ForkCmd::run (cyclomatic 19): ForkCmd::run has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: MachineCmd::run (cyclomatic 31) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":6044}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f25e13c3359ba54dfd768febe05805e7674270216735e5d5f0a90a1153e0b92"}},{"ruleId":"D1","level":"warning","message":{"text":"ServeStartCmd::run (cyclomatic 19): ServeStartCmd::run has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/serve.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"220b9d213bfa21f74cc718b635fb94153c759764360e36f7021ff92f003fd5f9"}},{"ruleId":"D1","level":"warning","message":{"text":"CudnnBackend::dispatch (cyclomatic 18): CudnnBackend::dispatch has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":2889}}}],"partialFingerprints":{"codehealthFindingId/v1":"45a5b91aeecb47896efedd0de74aef6eab5d76e6b7f3b9dcebaed76338acf4ae"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cuda_shim::cuLaunchKernel (cyclomatic 18): smolvm_cuda_shim::cuLaunchKernel has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":3321}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf1ef59eab0c61765fde25d4efa07eb1828586ef4d1f41b594819e28b90cc6f3"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cuda_shim::resolve_proc (cyclomatic 18): smolvm_cuda_shim::resolve_proc has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":3957}}}],"partialFingerprints":{"codehealthFindingId/v1":"083078d86e7d456ba648c59c361794e20ea3d7a38f4e6add590ebe8418d87db1"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_network::udp_publish::run_publisher (cyclomatic 18): smolvm_network::udp_publish::run_publisher has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/udp_publish.rs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad7c592970dad65f01c844370317550b4f0bc4f1bd77afc8fc93f0d117a3935a"}},{"ruleId":"D1","level":"warning","message":{"text":"AgentManager::ensure_running_with_full_config (cyclomatic 18): AgentManager::ensure_running_with_full_config has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":2019}}}],"partialFingerprints":{"codehealthFindingId/v1":"55c7e10b687db25d1863d6a299debcc8ea01f32d0c9bb214c43b7657b353ee54"}},{"ruleId":"D1","level":"warning","message":{"text":"EmbeddedRuntime::resume_machine_inner (cyclomatic 18): EmbeddedRuntime::resume_machine_inner has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca96dfbbf8259429424250d31e6f24c4fc2060e718e1915058179c56c3ec530a"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::api::handlers::exec::bridge_interactive (cyclomatic 18): smolvm::api::handlers::exec::bridge_interactive has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8a1527ee6f0875988335cc0413b4038d7b7db530b22f45b6ea3cfc5689e115b"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::api::handlers::machines::shutdown_machine_process (cyclomatic 18): smolvm::api::handlers::machines::shutdown_machine_process has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":2481}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5c4aee4f33576e93fa1b7bfdb84de8e341188f97bd7b915542e713d1c89f6ac"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cli::vm_common::build_vm_record_for (cyclomatic 18): smolvm::cli::vm_common::build_vm_record_for has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":715}}}],"partialFingerprints":{"codehealthFindingId/v1":"09f773739f1908a50f7ea277e963145f7e89396996dd83fde0fb1ca481b8c109"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cuda_daemon::tensor_bundle_receiver (cyclomatic 18): smolvm::cuda_daemon::tensor_bundle_receiver has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e5079a405a02bdd0d8b477c7ade1a85a8eeaea69946276c2d2b729a6355f857"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::portable_checkpoint::restore_from_path_at (cyclomatic 18): smolvm::portable_checkpoint::restore_from_path_at has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":868}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f7a1499b9f32e0164ffe69ff5dc824e9914395e9524e7b1a78e9fd9f1130969"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::portable_checkpoint::promote_retained_backing_locked (cyclomatic 18): smolvm::portable_checkpoint::promote_retained_backing_locked has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5661}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d378ba2fe6781470354c9a3b700b2824e92a37be95177e18eabf25b11500d4d"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cuda_shim::cuLibraryLoadData (cyclomatic 17): smolvm_cuda_shim::cuLibraryLoadData has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":2243}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ca55d3087a63b5571c8390d583a45fed34202b556868ff9c46276ed11069905"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cuda_shim::cuTensorMapEncodeTiled (cyclomatic 17): smolvm_cuda_shim::cuTensorMapEncodeTiled has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":4222}}}],"partialFingerprints":{"codehealthFindingId/v1":"36d419c4b60555f219d7844480d7eca302169c8820b615c1843c32bbe268df49"}},{"ruleId":"D1","level":"warning","message":{"text":"AgentClient::read_exact_retry (cyclomatic 17): AgentClient::read_exact_retry has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":3748}}}],"partialFingerprints":{"codehealthFindingId/v1":"98235957d52ba0bf8d4c698753d14309d3681359a0f1d6dceeea3db68a7ae8de"}},{"ruleId":"D1","level":"warning","message":{"text":"LaunchFeatures::with_packed_layers_with_mode (cyclomatic 17): LaunchFeatures::with_packed_layers_with_mode has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2ec5ab3103eb0023abd26c0588992f9c333c5df369cfe4f535500b4a9e7f144"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::api::handlers::machines::capture_portable_checkpoint (cyclomatic 17): smolvm::api::handlers::machines::capture_portable_checkpoint has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6397c827ba70708ed05f602afe42a895c7a3d84c3b0373a2f121720459e8372"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::api::handlers::machines::branch_batch_transaction (cyclomatic 17): smolvm::api::handlers::machines::branch_batch_transaction has cyclomatic complexity 17 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":4682}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bd19a79d7dc5161ca649a2950285d4784a75d736853c07b9309bc9811e30c7a"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::api::handlers::pools::create_pool (cyclomatic 17): smolvm::api::handlers::pools::create_pool has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/pools.rs"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"557a79c33d36f41745ff405471942c90ed0c1cbf5889c14bee62a389c24f2fe4"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::artifact_cache::inventory_candidates (cyclomatic 17): smolvm::artifact_cache::inventory_candidates has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/artifact_cache.rs"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cd7291ec2db903f8e44de75075d432312e3e90ec0573b036ce5bd764eb6b0f4"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::artifact_cache::trim_unleased_shared_packs_with (cyclomatic 17): smolvm::artifact_cache::trim_unleased_shared_packs_with has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/artifact_cache.rs"},"region":{"startLine":1081}}}],"partialFingerprints":{"codehealthFindingId/v1":"530847fec075e7937dcd87bfc25e8c770948e488c19e5251fc9014c260beeca1"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cli::pack_run::daemon_start (cyclomatic 17): smolvm::cli::pack_run::daemon_start has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":2266}}}],"partialFingerprints":{"codehealthFindingId/v1":"c41b293c1f73e1a00d5996bcfbdced4498673fa472886b5a2bb84398f97bb5f2"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cli::vm_common::fork_vm (cyclomatic 17): smolvm::cli::vm_common::fork_vm has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":989}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb158a444c09f2657ca12f8d366ff55eb5b13ab1df72913b688119caa93494c2"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cli::vm_common::resize_vm (cyclomatic 17): smolvm::cli::vm_common::resize_vm has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":3915}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bdfd35d392f36969fc43782ab6eae85df396aa28aeb925e96b7df57fc8be1e7"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cuda_daemon::run_clone_worker (cyclomatic 17): smolvm::cuda_daemon::run_clone_worker has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":2078}}}],"partialFingerprints":{"codehealthFindingId/v1":"498261f2b75393c25a03024f473b18b08225c1d90138551aca3e64f4dd7960ef"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::network::launch::validate_requested_network_backend (cyclomatic 17): smolvm::network::launch::validate_requested_network_backend has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/network/launch.rs"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"55edeb28fb66600d90048434ec0eb91321a9663db89d7a9662446cbb2d4d5da5"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::portable_checkpoint::validate_capture_profile (cyclomatic 17): smolvm::portable_checkpoint::validate_capture_profile has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":3727}}}],"partialFingerprints":{"codehealthFindingId/v1":"0325b5d5d3bffec215435478dd929bed11bbe3fa18462dae8f0777ec0f5c40fe"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::registry::registry_client (cyclomatic 17): smolvm::registry::registry_client has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/registry.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc75be0f4287e14893cdc57860de476d4caf643a4284b54effec078530c02772"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_agent::nsfile::run_helper (cyclomatic 16): smolvm_agent::nsfile::run_helper has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/nsfile.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0bf5c23e869f6cb951900c692862909d1a18069f90ee390ec75efdf675e6fc9"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_checkpoint::store::store_chunk (cyclomatic 16): smolvm_checkpoint::store::store_chunk has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":1540}}}],"partialFingerprints":{"codehealthFindingId/v1":"61b5d06640ef891f6e10ba67760f1f13fbaaf1f1f58d025776c307c64dc5a736"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cuda::host::serve_inner (cyclomatic 16): smolvm_cuda::host::serve_inner has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: smolvm_cuda::host::optrace_summary (cyclomatic 26) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":3122}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb92c88cb155f35e42341aa615a23add568f5d83b3d1fddba006e469ffb4a039"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_cudart_shim::cuda_host_malloc (cyclomatic 16): smolvm_cudart_shim::cuda_host_malloc has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":1823}}}],"partialFingerprints":{"codehealthFindingId/v1":"58eab7321b218bdeee8b91a878831035b0e3e2ce69918b5342a5f7524f64bb1c"}},{"ruleId":"D1","level":"warning","message":{"text":"TcpRelayTable::relay_data (cyclomatic 16): TcpRelayTable::relay_data has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_relay.rs"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bdc7b48a6fe299acad85362e94991e556105337511d91757c35b94c70bc0cac"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_network::stack::drain_icmp_echo (cyclomatic 16): smolvm_network::stack::drain_icmp_echo has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/stack.rs"},"region":{"startLine":728}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aaa29135b1439106ca97d7baaf251546a6f94b750b977a0584fa13900966c5c"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_network::stack::process_dns_tcp (cyclomatic 16): smolvm_network::stack::process_dns_tcp has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/stack.rs"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"4459ed0190295a74ff98a26fac618f258fe76d46f9b45b5968ed988fdd871caf"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm_network::tcp_relay::tcp_relay_loop (cyclomatic 16): smolvm_network::tcp_relay::tcp_relay_loop has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_relay.rs"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"a149aa4ef450afbb60335929fd2eccd0e2f5a281e4cc0f7f78593e5e42cdb175"}},{"ruleId":"D1","level":"warning","message":{"text":"S3Fs::remember_listing (cyclomatic 16): S3Fs::remember_listing has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/fs.rs"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"c897f09fb51039fc5eea1563edea435ec5b47633f897488bc316d85b3f9df792"}},{"ruleId":"D1","level":"warning","message":{"text":"RolloutExecutor::publish_device_policy (cyclomatic 16): RolloutExecutor::publish_device_policy has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":1102}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fbac795f104e1afecbfdc198f15743819b9c1cb77c5a83a5516443acd5f58b2"}},{"ruleId":"D1","level":"warning","message":{"text":"RegistriesCmd::run (cyclomatic 16): RegistriesCmd::run has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/config.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"d364642c73b5d0b60ce9a0ac2e7787b08d16dd8407ea92241faeba622c11beb1"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::agent::fork::prepare_clone_from_snapshot (cyclomatic 16): smolvm::agent::fork::prepare_clone_from_snapshot has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":3153}}}],"partialFingerprints":{"codehealthFindingId/v1":"596467ad8be105408225588ddfa874bb5966f41170ec21521dd46058bf30bcc3"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::agent::fsnotify_watch::find_recent_files (cyclomatic 16): smolvm::agent::fsnotify_watch::find_recent_files has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fsnotify_watch.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"cedd475963545588c2f0f75745fc6d4d318396f7d2a5fcdcbbf766e85d95d9a1"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::api::handlers::machines::stop_machine (cyclomatic 16): smolvm::api::handlers::machines::stop_machine has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":5798}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f192b4362777f7ee782e640a73af04fbf541fa0413ad4ce2774897c61802a64"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::cuda_daemon::consume_ram_preamble (cyclomatic 16): smolvm::cuda_daemon::consume_ram_preamble has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":1836}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb97286ae8078834919b3a6535efbcbda14297450164f80eb9dd4d14f648ca5a"}},{"ruleId":"D1","level":"warning","message":{"text":"smolvm::pack_export::reap_stale_export_scratch_in (cyclomatic 16): smolvm::pack_export::reap_stale_export_scratch_in has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pack_export.rs"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e96d515c89a43ed4aa5987290b98ed0624e7cbc753a4093bf7e8bb6d2a8e369"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda::host::dispatch (cognitive 467): smolvm_cuda::host::dispatch has cognitive complexity 467 (threshold 15). Drivers by points: if/else 145 (345 pts), loops 16 (53 pts), match/switch 15 (42 pts), boolean chains 27 (nesting depth added 264). Of this number, 463 points are the body\u0027s own statements and 4 belong to 2 function items inside it that branch. To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":4714}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e69912fa268bea784e54fa0ae4ddda5dd6c73c43f2b864add95d6e41329e674"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::launcher::launch_agent_vm (cognitive 423): smolvm::agent::launcher::launch_agent_vm has cognitive complexity 423 (threshold 15). Drivers by points: if/else 158 (321 pts), match/switch 25 (69 pts), loops 10 (25 pts), boolean chains 8 (nesting depth added 222). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"03ff553269e3474d0b2be978fdf77c4abb380a388fc97c9b164a1b318ae829ac"}},{"ruleId":"D2","level":"warning","message":{"text":"RunCmd::run (cognitive 213): RunCmd::run has cognitive complexity 213 (threshold 15). Drivers by points: if/else 90 (157 pts), boolean chains 46, match/switch 6 (9 pts), loops 1 (nesting depth added 70). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":1384}}}],"partialFingerprints":{"codehealthFindingId/v1":"6896344eaa7a258cf0a0fdc7842380f24a4a7e41bc7f87937495aab82661c773"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_daemon::spawn_clone_worker (cognitive 201): smolvm::cuda_daemon::spawn_clone_worker has cognitive complexity 201 (threshold 15). Drivers by points: if/else 63 (108 pts), loops 17 (50 pts), match/switch 13 (35 pts), boolean chains 8 (nesting depth added 100). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":5348}}}],"partialFingerprints":{"codehealthFindingId/v1":"76ac721afb3e333e440ce79951c7c8d161c16d07546f69c77f934789309804ec"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::launcher_dynamic::launch_agent_vm_dynamic (cognitive 174): smolvm::agent::launcher_dynamic::launch_agent_vm_dynamic has cognitive complexity 174 (threshold 15). Drivers by points: if/else 66 (114 pts), match/switch 16 (50 pts), loops 6 (7 pts), boolean chains 3 (nesting depth added 83). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher_dynamic.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccc13782fad17e6050ff5b152090080497505c554fc067027412bf2f814a2053"}},{"ruleId":"D2","level":"warning","message":{"text":"S3Fs::dispatch (cognitive 170): S3Fs::dispatch has cognitive complexity 170 (threshold 15). Drivers by points: if/else 57 (125 pts), match/switch 17 (36 pts), loops 3 (6 pts), boolean chains 3 (nesting depth added 90). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/fs.rs"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"21a36088a9a52e5172b1e055b7b0bf5975c85826004cfdc108f4f85e9b4c7dde"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_pack::extract::safe_unpack_skipping (cognitive 169): smolvm_pack::extract::safe_unpack_skipping has cognitive complexity 169 (threshold 15). Drivers by points: if/else 61 (150 pts), boolean chains 15, loops 2, match/switch 1 (2 pts) (nesting depth added 90). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":986}}}],"partialFingerprints":{"codehealthFindingId/v1":"10a990b2359e0c88ce796cde49688556feb008e790e29e02bb132fa5995730e1"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::portable_checkpoint::capture_with_completion (cognitive 165): smolvm::portable_checkpoint::capture_with_completion has cognitive complexity 165 (threshold 15). Drivers by points: if/else 85 (113 pts), boolean chains 27, match/switch 13 (24 pts), loops 1 (nesting depth added 39). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":1951}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d6f886acf25366b5915e2a62e9c5514f6510ab127f7933fafa2574218745be6"}},{"ruleId":"D2","level":"warning","message":{"text":"GpuBackend::cuda_driver_library_call (cognitive 156): GpuBackend::cuda_driver_library_call has cognitive complexity 156 (threshold 15). Drivers by points: if/else 36 (98 pts), match/switch 22 (49 pts), boolean chains 9 (nesting depth added 89). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":745}}}],"partialFingerprints":{"codehealthFindingId/v1":"29deac3188546586ea429a4afbbbce9c18b9a068e858fa1d845dbccc06bbb55a"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_daemon::reconstruct_golden_memory (cognitive 143): smolvm::cuda_daemon::reconstruct_golden_memory has cognitive complexity 143 (threshold 15). Drivers by points: if/else 36 (91 pts), loops 9 (25 pts), match/switch 6 (22 pts), boolean chains 5 (nesting depth added 87). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":2843}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a26a3dfab6b9ce116d519af673def2516013d9ab9ecc831fff1e12e51e806f5"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::machines::create_machine_to_end (cognitive 129): smolvm::api::handlers::machines::create_machine_to_end has cognitive complexity 129 (threshold 15). Drivers by points: if/else 68 (95 pts), match/switch 11 (16 pts), boolean chains 13, loops 4 (5 pts) (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":2666}}}],"partialFingerprints":{"codehealthFindingId/v1":"b27451fd0329501d911f57ecbd47393db7059cf4a46ecf4a622e7c4610fcaf97"}},{"ruleId":"D2","level":"warning","message":{"text":"AgentManager::start_via_subprocess (cognitive 121): AgentManager::start_via_subprocess has cognitive complexity 121 (threshold 15). Drivers by points: if/else 65 (98 pts), boolean chains 12, match/switch 3 (6 pts), loops 4 (5 pts) (nesting depth added 37). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":2509}}}],"partialFingerprints":{"codehealthFindingId/v1":"696fe3fc6a5ccb074cadf6bd67a3cf2b29870ab99ecd4d4af2c83ef4bc8e70da"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_daemon::write_module_handoff (cognitive 118): smolvm::cuda_daemon::write_module_handoff has cognitive complexity 118 (threshold 15). Drivers by points: if/else 46 (96 pts), loops 13 (21 pts), boolean chains 1 (nesting depth added 58). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":5061}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9f1905fcab6c79659bf7e2b2277e2110648d1da7caab80008a880864b8b8b3d"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::run_interactive_loop (cognitive 110): smolvm_agent::run_interactive_loop has cognitive complexity 110 (threshold 15). Drivers by points: if/else 33 (75 pts), match/switch 6 (22 pts), loops 3 (9 pts), boolean chains 4 (nesting depth added 64). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6033}}}],"partialFingerprints":{"codehealthFindingId/v1":"eafb291331674d02c499afb00929312b7bdb386ee283cdde3e074a6b536328e1"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::fork::prepare_forks_reusing (cognitive 110): smolvm::agent::fork::prepare_forks_reusing has cognitive complexity 110 (threshold 15). Drivers by points: if/else 42 (75 pts), match/switch 8 (17 pts), boolean chains 10, loops 5 (8 pts) (nesting depth added 45). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":2534}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a916994f657fe3b71a4541babca30bda3f7f4d70d2bc4fa3921a26ee6ec9b24"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::internal_boot::run (cognitive 107): smolvm::internal_boot::run has cognitive complexity 107 (threshold 15). Drivers by points: if/else 52 (82 pts), match/switch 9 (14 pts), loops 3 (6 pts), boolean chains 5 (nesting depth added 38). Of this number, 101 points are the body\u0027s own statements and 6 belong to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/internal_boot.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"d68f934c6c9241257a9b59a42686185103a0cb786fa2dae0ea19f9ce939f4200"}},{"ruleId":"D2","level":"warning","message":{"text":"UpdateCmd::run (cognitive 100): UpdateCmd::run has cognitive complexity 100 (threshold 15). Drivers by points: if/else 47 (68 pts), loops 14 (20 pts), boolean chains 9, match/switch 2 (3 pts) (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":7127}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3601f9313d1f8f26542555c6faf4ffb2251b2c8bfd9a1d3d2be8da56206e395"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::vm_common::start_vm_named_with_db (cognitive 96): smolvm::cli::vm_common::start_vm_named_with_db has cognitive complexity 96 (threshold 15). Drivers by points: if/else 51 (78 pts), boolean chains 8, match/switch 3 (7 pts), loops 1 (3 pts) (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":1696}}}],"partialFingerprints":{"codehealthFindingId/v1":"9909bae284812b943c44709627c70ed5eb873b48250a82db2808490798be41de"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda::host::serve_rings (cognitive 87): smolvm_cuda::host::serve_rings has cognitive complexity 87 (threshold 15). Drivers by points: if/else 27 (71 pts), match/switch 7 (20 pts), loops 7 (15 pts), boolean chains 5 (nesting depth added 65). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (smolvm_cuda::host::serve_rings::respond) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":3394}}}],"partialFingerprints":{"codehealthFindingId/v1":"c24e9f48fbe13dc0bf4d5763159174229da37e65fdb0c9db9e9734eac540c08c"}},{"ruleId":"D2","level":"warning","message":{"text":"GpuBackend::graph_exec_patch (cognitive 83): GpuBackend::graph_exec_patch has cognitive complexity 83 (threshold 15). Drivers by points: if/else 23 (63 pts), loops 4 (11 pts), boolean chains 7, match/switch 1 (2 pts) (nesting depth added 48). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":2133}}}],"partialFingerprints":{"codehealthFindingId/v1":"760c2b72d9ad7b054ac7492eb1c9fc4cbd5b47d9cf37e6078cd44c6ed6eb9675"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::run_interactive_loop_pty (cognitive 77): smolvm_agent::run_interactive_loop_pty has cognitive complexity 77 (threshold 15). Drivers by points: if/else 20 (47 pts), match/switch 6 (19 pts), loops 3 (7 pts), boolean chains 4 (nesting depth added 44). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6339}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f541df9696477484afd6a3b5926f4249e3134ba59cedd6b788fe5ae73f473a4"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::stack::run_network_stack (cognitive 77): smolvm_network::stack::run_network_stack has cognitive complexity 77 (threshold 15). Drivers by points: if/else 23 (59 pts), match/switch 3 (8 pts), boolean chains 5, loops 3 (5 pts) (nesting depth added 43). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/stack.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"660998e638d651e6d3983b14f5f3c29c63117c57ae58ace16620086456c5b887"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::vm_common::list_vms (cognitive 74): smolvm::cli::vm_common::list_vms has cognitive complexity 74 (threshold 15). Drivers by points: if/else 19 (43 pts), loops 6 (20 pts), match/switch 2 (10 pts), boolean chains 1 (nesting depth added 46). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":3663}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc1fadbfd605113e0d1c2b9598f286e5aef22993efeb9a6497e1d98145115a83"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateCmd::run_from_smolmachine (cognitive 73): CreateCmd::run_from_smolmachine has cognitive complexity 73 (threshold 15). Drivers by points: if/else 44 (54 pts), boolean chains 11, match/switch 7, loops 1 (nesting depth added 10). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":5067}}}],"partialFingerprints":{"codehealthFindingId/v1":"16af660c5bc83ce4568ed5bfd819898191c1e66af3c7f71fd802597a56081e54"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::portable_checkpoint::install_with (cognitive 73): smolvm::portable_checkpoint::install_with has cognitive complexity 73 (threshold 15). Drivers by points: if/else 20 (56 pts), loops 7 (11 pts), boolean chains 5, match/switch 1 (nesting depth added 40). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5925}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c5a9fa966c9f32bad3ce57e2786eaf232681a706e8371f64f5a41f90e460bbe"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::machines::start_machine (cognitive 68): smolvm::api::handlers::machines::start_machine has cognitive complexity 68 (threshold 15). Drivers by points: if/else 36 (54 pts), boolean chains 9, match/switch 3 (5 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":3956}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b21735a6ddf9bec8e741e2780c0a6604de750dc053cae594212009928080384"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_daemon::reconstruct_golden_modules (cognitive 68): smolvm::cuda_daemon::reconstruct_golden_modules has cognitive complexity 68 (threshold 15). Drivers by points: if/else 17 (35 pts), loops 13 (29 pts), match/switch 2 (4 pts) (nesting depth added 36). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":3311}}}],"partialFingerprints":{"codehealthFindingId/v1":"e34868cc689e223e801e0fc01fcad488abb530835c4a24925fb0e8acd3ce02f3"}},{"ruleId":"D2","level":"warning","message":{"text":"MonitorCmd::run (cognitive 66): MonitorCmd::run has cognitive complexity 66 (threshold 15). Drivers by points: if/else 21 (47 pts), match/switch 4 (15 pts), boolean chains 3, loops 1 (nesting depth added 37). Of this number, 65 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":8052}}}],"partialFingerprints":{"codehealthFindingId/v1":"50108158c5a337b8658e6c843ff4d5852a1bd383555c63402af3cd002495fcda"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::vnc::run_client (cognitive 65): smolvm::agent::vnc::run_client has cognitive complexity 65 (threshold 15). Drivers by points: if/else 19 (41 pts), boolean chains 12, match/switch 3 (9 pts), loops 2 (3 pts) (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"594b6b4ba70f37b0d4e34d3161b1032108967458ee425124b1d1ad4a49d4f4aa"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::storage::pull_image_with_progress_and_auth (cognitive 63): smolvm_agent::storage::pull_image_with_progress_and_auth has cognitive complexity 63 (threshold 15). Drivers by points: if/else 20 (36 pts), loops 7 (14 pts), match/switch 4 (10 pts), boolean chains 3 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":3221}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc7f5ace1cd6b29cb8e66d5b5b3f642c2e7bac52e1d905e1e988402819f08951"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::handle_connection (cognitive 62): smolvm_agent::handle_connection has cognitive complexity 62 (threshold 15). Drivers by points: if/else 26 (54 pts), match/switch 3 (7 pts), loops 1 (nesting depth added 32). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":2138}}}],"partialFingerprints":{"codehealthFindingId/v1":"a03ebe57b800ff98b7702497fe35c0b5effb5044a9b60196134aa1e4d7796e5b"}},{"ruleId":"D2","level":"warning","message":{"text":"Client::ring_pop_response (cognitive 62): Client::ring_pop_response has cognitive complexity 62 (threshold 15). Drivers by points: if/else 11 (41 pts), loops 6 (19 pts), match/switch 1 (2 pts) (nesting depth added 44). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/client.rs"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"39da03f07ba058636d370a649c08c5e45a61a5c273b099342e72c35929879a21"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::portable_checkpoint::stage_disk_chains_with_links (cognitive 62): smolvm::portable_checkpoint::stage_disk_chains_with_links has cognitive complexity 62 (threshold 15). Drivers by points: if/else 13 (31 pts), match/switch 7 (22 pts), boolean chains 6, loops 2 (3 pts) (nesting depth added 34). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":4839}}}],"partialFingerprints":{"codehealthFindingId/v1":"af9d71b7fd92ec2292b17e3d9a725c2a61b3773d3d6f254ba68692c249f5d946"}},{"ruleId":"D2","level":"warning","message":{"text":"AgentManager::wait_for_ready (cognitive 61): AgentManager::wait_for_ready has cognitive complexity 61 (threshold 15). Drivers by points: if/else 19 (45 pts), match/switch 3 (11 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 35). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":3792}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e195329ad1779e7b5b5b11fe92485d0a9580846a00ea024f4f4c64c0285e189"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_daemon::route_clone_connection (cognitive 60): smolvm::cuda_daemon::route_clone_connection has cognitive complexity 60 (threshold 15). Drivers by points: if/else 22 (47 pts), match/switch 6 (9 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":3968}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5c6b0ba9091c5808f083eac44ed9a4665496a874a1f5ff841463d3f1134f1fa"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::icmp_relay::run_icmp_relay (cognitive 59): smolvm_network::icmp_relay::run_icmp_relay has cognitive complexity 59 (threshold 15). Drivers by points: if/else 9 (32 pts), loops 7 (14 pts), match/switch 3 (12 pts), boolean chains 1 (nesting depth added 39). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/icmp_relay.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b3b7921f20a62a5f69dc59e6457d78459a8370f972e5d44b74ab1936fdfb6ad"}},{"ruleId":"D2","level":"warning","message":{"text":"LibkrunVm::exec_vm (cognitive 58): LibkrunVm::exec_vm has cognitive complexity 58 (threshold 15). Drivers by points: if/else 33 (50 pts), loops 3, match/switch 1 (3 pts), boolean chains 2 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dbbdbde5790487d27c9c1a7fef811275c6a8ddd208ad45b6be1adefeeb870b2"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::tcp_relay::relay_stream (cognitive 56): smolvm_network::tcp_relay::relay_stream has cognitive complexity 56 (threshold 15). Drivers by points: if/else 16 (36 pts), match/switch 3 (10 pts), boolean chains 6, loops 2 (4 pts) (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_relay.rs"},"region":{"startLine":1252}}}],"partialFingerprints":{"codehealthFindingId/v1":"1521af6bb1c0fb5c1888081dd9cd40f1aca82179debd6caf78bd66aa0624c234"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::dns_relay::run_dns_relay (cognitive 53): smolvm_network::dns_relay::run_dns_relay has cognitive complexity 53 (threshold 15). Drivers by points: match/switch 5 (20 pts), if/else 7 (19 pts), loops 7 (13 pts), boolean chains 1 (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/dns_relay.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e2eb0e81353671692d14e9286a5a2c20a118bc3656d8216be693a45824ce29"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_oci_layer::extract_oci_layer_with_size (cognitive 52): smolvm_oci_layer::extract_oci_layer_with_size has cognitive complexity 52 (threshold 15). Drivers by points: if/else 15 (44 pts), match/switch 2 (6 pts), loops 2 (nesting depth added 33). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-oci-layer/src/lib.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a6041fc19e6f47a24a45765af51674ec5aae8564dd1ce025e5381908206efb3"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_pack::extract::post_process_extraction (cognitive 52): smolvm_pack::extract::post_process_extraction has cognitive complexity 52 (threshold 15). Drivers by points: if/else 19 (43 pts), loops 3 (6 pts), boolean chains 3 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":4529}}}],"partialFingerprints":{"codehealthFindingId/v1":"627a4aead416eae25b8c1e11a9172cef4085488e1875ad0a78b382d82cd01742"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::vnc::read_client_messages (cognitive 51): smolvm::agent::vnc::read_client_messages has cognitive complexity 51 (threshold 15). Drivers by points: if/else 11 (37 pts), loops 3 (8 pts), match/switch 2 (6 pts) (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc.rs"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c57423d02c031e440cc96582ed03857e5ff492f64e3a6556e1966ce804cdf7"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::udp_relay::run_udp_relay (cognitive 49): smolvm_network::udp_relay::run_udp_relay has cognitive complexity 49 (threshold 15). Drivers by points: if/else 7 (22 pts), loops 7 (14 pts), match/switch 3 (12 pts), boolean chains 1 (nesting depth added 31). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/udp_relay.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"f64e9c793c4f92950d1d4be865703220f25f8edc12bfaa963f1045cd8c7970f6"}},{"ruleId":"D2","level":"warning","message":{"text":"PoolAdmissionState::observe (cognitive 48): PoolAdmissionState::observe has cognitive complexity 48 (threshold 15). Drivers by points: if/else 26 (37 pts), boolean chains 11 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/admission.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc748a80cb19a31b1d22356f59186b2b33443327ddf3476c5c922c8fe94de24b"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::machines::restore_portable_checkpoint (cognitive 48): smolvm::api::handlers::machines::restore_portable_checkpoint has cognitive complexity 48 (threshold 15). Drivers by points: if/else 22 (36 pts), loops 2 (6 pts), boolean chains 3, match/switch 3 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":2103}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e5d6c3dd5ff40c1d8d9da72d859e458359fb94d429d2e4347867a0a48099f71"}},{"ruleId":"D2","level":"warning","message":{"text":"State::forward (cognitive 46): State::forward has cognitive complexity 46 (threshold 15). Drivers by points: if/else 20 (34 pts), match/switch 5 (7 pts), boolean chains 4, loops 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-credentials/src/intercept.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e07289fc64d45e163426807df0380e12c89119132231450a261a999599f02fb"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_checkpoint::store::prune_in_batches (cognitive 43): smolvm_checkpoint::store::prune_in_batches has cognitive complexity 43 (threshold 15). Drivers by points: if/else 12 (26 pts), match/switch 3 (7 pts), boolean chains 5, loops 3 (5 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":1743}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bf523f193fb39d8a1cd0a0f0544497b9081793cd0da8d48f43aa9f84e32ccda"}},{"ruleId":"D2","level":"warning","message":{"text":"CredentialPolicy::validate (cognitive 43): CredentialPolicy::validate has cognitive complexity 43 (threshold 15). Drivers by points: if/else 15 (32 pts), loops 4 (6 pts), boolean chains 5 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-protocol/src/credentials.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"68b186b5ba9a16650a83724865686aa603998e29e396551d5e7e28cdef58e7e9"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::exec::log_event_stream (cognitive 43): smolvm::api::handlers::exec::log_event_stream has cognitive complexity 43 (threshold 15). Drivers by points: if/else 14 (32 pts), loops 3 (6 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":1021}}}],"partialFingerprints":{"codehealthFindingId/v1":"4649e3dd67da9fe5b1e4f7a75b6d84864f9bdcdfa253f3326a6b671bfd853c42"}},{"ruleId":"D2","level":"warning","message":{"text":"AgentClient::interactive_session (cognitive 42): AgentClient::interactive_session has cognitive complexity 42 (threshold 15). Drivers by points: if/else 15 (28 pts), match/switch 3 (7 pts), boolean chains 6, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":2452}}}],"partialFingerprints":{"codehealthFindingId/v1":"57fdd66a7ae1a293cb12030edc34e67600c92ddf932080cb6e4819cf40fa8b60"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_host::start_with_clone_mode (cognitive 42): smolvm::cuda_host::start_with_clone_mode has cognitive complexity 42 (threshold 15). Drivers by points: if/else 13 (34 pts), match/switch 3 (5 pts), boolean chains 2, loops 1 (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_host.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab05a8904d277b969ba85440e4311fa3af46dfbbb818800e3a9dae5b15b55c8"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::vm_common::fork_vm_batch (cognitive 41): smolvm::cli::vm_common::fork_vm_batch has cognitive complexity 41 (threshold 15). Drivers by points: if/else 22 (33 pts), loops 3 (4 pts), boolean chains 3, match/switch 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b79936a66553bbddc4bac77abfe9b407cf87516dadde5ff66ecbfa1a0878a6f"}},{"ruleId":"D2","level":"warning","message":{"text":"PackCreateCmd::run (cognitive 40): PackCreateCmd::run has cognitive complexity 40 (threshold 15). Drivers by points: if/else 21 (31 pts), loops 2 (4 pts), match/switch 3 (4 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a37ecddf2defe683e2ecc89146940ea890cf0926b9ea86461b8aab90c3c6b19"}},{"ruleId":"D2","level":"warning","message":{"text":"VmRecord::updated_egress (cognitive 40): VmRecord::updated_egress has cognitive complexity 40 (threshold 15). Drivers by points: if/else 14 (25 pts), loops 8 (9 pts), boolean chains 6 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/config.rs"},"region":{"startLine":1487}}}],"partialFingerprints":{"codehealthFindingId/v1":"051de154da7c4bb69d6f948975d58736a26ac2ebb3fdcb8dbeed8b58053acdd0"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::stack::classify_guest_frame (cognitive 39): smolvm_network::stack::classify_guest_frame has cognitive complexity 39 (threshold 15). Drivers by points: if/else 11 (25 pts), match/switch 7 (11 pts), boolean chains 3 (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/stack.rs"},"region":{"startLine":1330}}}],"partialFingerprints":{"codehealthFindingId/v1":"6343256af273ed944f8acdbd7b06eee849596384779ea0b34a0db9be3c509be6"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cudart_shim::module_image_len (cognitive 38): smolvm_cudart_shim::module_image_len has cognitive complexity 38 (threshold 15). Drivers by points: if/else 12 (26 pts), loops 4 (7 pts), boolean chains 5 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":4564}}}],"partialFingerprints":{"codehealthFindingId/v1":"b748855438d0c274ee2d6970082679b57591664b74eb331b57fd5b6a4f6449a7"}},{"ruleId":"D2","level":"warning","message":{"text":"AgentClient::read_exact_retry (cognitive 38): AgentClient::read_exact_retry has cognitive complexity 38 (threshold 15). Drivers by points: if/else 9 (31 pts), loops 2 (4 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":3748}}}],"partialFingerprints":{"codehealthFindingId/v1":"72ee33060e544098b537a474b6a820a79b049daea89eb393171013a8d204ab22"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::setup_persistent_rootfs (cognitive 37): smolvm_agent::setup_persistent_rootfs has cognitive complexity 37 (threshold 15). Drivers by points: if/else 19 (33 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":1197}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e1a703b1204050c8476b86d2646efead9f30f8b75baf486af6065bcd437b0c0"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::process::wait_with_timeout_cleanup_and_liveness (cognitive 37): smolvm_agent::process::wait_with_timeout_cleanup_and_liveness has cognitive complexity 37 (threshold 15). Drivers by points: if/else 8 (26 pts), match/switch 3 (6 pts), loops 5 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/process.rs"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"907bc7f261a6c0369c7bde02acfa3eff0a41d59747af7056b84ae230327b8ded"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda::host::serve_inner (cognitive 37): smolvm_cuda::host::serve_inner has cognitive complexity 37 (threshold 15). Drivers by points: if/else 8 (24 pts), match/switch 3 (10 pts), boolean chains 2, loops 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":3122}}}],"partialFingerprints":{"codehealthFindingId/v1":"67c9b8223b2a384c066d2baeae5196b866c22409f5485f607892144ec4849d79"}},{"ruleId":"D2","level":"warning","message":{"text":"NvmlSampler::new (cognitive 37): NvmlSampler::new has cognitive complexity 37 (threshold 15). Drivers by points: if/else 15 (28 pts), boolean chains 4, loops 2 (3 pts), match/switch 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/admission.rs"},"region":{"startLine":1034}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8c3453a5efc2e5a8cfcbfb9598ef479d4cc1596bfd1f8d5d918b88f036fa264"}},{"ruleId":"D2","level":"warning","message":{"text":"PackRunCmd::run (cognitive 37): PackRunCmd::run has cognitive complexity 37 (threshold 15). Drivers by points: if/else 20 (27 pts), boolean chains 4, match/switch 3 (4 pts), loops 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a7c5e9b1549e21cb4e0c0ccd9f395debe43ae80c8bba24980fb1346c43f9ac0"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::handle_run_detached (cognitive 36): smolvm_agent::handle_run_detached has cognitive complexity 36 (threshold 15). Drivers by points: if/else 15 (20 pts), match/switch 11 (16 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":4294}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cc7c07399350524b938abdc65c1a188723dfcd47f53605b5cdbfcd859805357"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda::host::execute_auto_graph_segment (cognitive 36): smolvm_cuda::host::execute_auto_graph_segment has cognitive complexity 36 (threshold 15). Drivers by points: if/else 20 (25 pts), match/switch 4 (8 pts), boolean chains 3 (nesting depth added 9). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":4223}}}],"partialFingerprints":{"codehealthFindingId/v1":"508866410810090797b1617e674ca09f083411084934d6ba5c21f67c43c1f4ba"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda::host::replay_capture_graph (cognitive 36): smolvm_cuda::host::replay_capture_graph has cognitive complexity 36 (threshold 15). Drivers by points: if/else 9 (23 pts), match/switch 6 (8 pts), loops 4 (5 pts) (nesting depth added 17). Of this number, 34 points are the body\u0027s own statements and 2 belong to 2 function items inside it that branch. To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":4564}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c2df1050697e034f78bca6e4b7e7d258cbdf86444fd62f287f3b30cc4962389"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::stack::process_dns_tcp (cognitive 36): smolvm_network::stack::process_dns_tcp has cognitive complexity 36 (threshold 15). Drivers by points: if/else 8 (19 pts), match/switch 3 (12 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/stack.rs"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef0cc1d2d492fd91aad25448ef90d11d96c93146644861eaca8a61e785ee8921"}},{"ruleId":"D2","level":"warning","message":{"text":"Client::list_dir_snapshot (cognitive 36): Client::list_dir_snapshot has cognitive complexity 36 (threshold 15). Drivers by points: if/else 10 (26 pts), loops 3 (5 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/s3.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"be1a6ed4bb853f82f3889449dae791022671704478b7a1bfd9c183d19cef9ee8"}},{"ruleId":"D2","level":"warning","message":{"text":"EmbeddedRuntime::pause_machine_inner (cognitive 36): EmbeddedRuntime::pause_machine_inner has cognitive complexity 36 (threshold 15). Drivers by points: if/else 14 (31 pts), boolean chains 4, match/switch 1 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c792b939bf91583342cf92a9c265d9622f4be77f4c8eda1ac9a811125cde6c1"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::machines::shutdown_machine_process (cognitive 36): smolvm::api::handlers::machines::shutdown_machine_process has cognitive complexity 36 (threshold 15). Drivers by points: if/else 15 (28 pts), loops 2 (5 pts), boolean chains 3 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":2481}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b00d9ab518999af9962a432aed440204c12a7762193aaf7e7ae818fb9a97d35"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cudart_shim::__cudaUnregisterFatBinary (cognitive 35): smolvm_cudart_shim::__cudaUnregisterFatBinary has cognitive complexity 35 (threshold 15). Drivers by points: loops 7 (19 pts), if/else 7 (16 pts) (nesting depth added 21). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":4798}}}],"partialFingerprints":{"codehealthFindingId/v1":"56c90ba39c2e1e4b68fd43bfc0e3b8b6bb17b2e6eeb0c950741146310f10642f"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_pack::extract::extract_sidecar_capped (cognitive 35): smolvm_pack::extract::extract_sidecar_capped has cognitive complexity 35 (threshold 15). Drivers by points: if/else 15 (24 pts), boolean chains 8, match/switch 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":2188}}}],"partialFingerprints":{"codehealthFindingId/v1":"e32c130e71897851a0a6a13af9a0e480819d990316ad22a8914ab5aba0a40f11"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_daemon::tensor_bundle_receiver (cognitive 35): smolvm::cuda_daemon::tensor_bundle_receiver has cognitive complexity 35 (threshold 15). Drivers by points: if/else 10 (19 pts), match/switch 2 (7 pts), loops 2 (5 pts), boolean chains 4 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"292ffb6e65a2201e3c7fded24670ec4ee80877f6a863d016cf3817f7437a952c"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::handle_vm_exec (cognitive 34): smolvm_agent::handle_vm_exec has cognitive complexity 34 (threshold 15). Drivers by points: if/else 14 (25 pts), match/switch 3 (6 pts), loops 2, boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":8090}}}],"partialFingerprints":{"codehealthFindingId/v1":"71f65a2ab682412f06d37be9ac58086c7dd8b253d5753abff128d5d03771289c"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::storage::garbage_collect (cognitive 34): smolvm_agent::storage::garbage_collect has cognitive complexity 34 (threshold 15). Drivers by points: if/else 8 (25 pts), loops 3 (9 pts) (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":3930}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6d4ad07d18484df44cc1ad4b2efde605e0e994f04890c80cf297e145911fef4"}},{"ruleId":"D2","level":"warning","message":{"text":"GpuBackend::gen_lib_call (cognitive 34): GpuBackend::gen_lib_call has cognitive complexity 34 (threshold 15). Drivers by points: match/switch 6 (16 pts), if/else 8 (15 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 18). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":4169}}}],"partialFingerprints":{"codehealthFindingId/v1":"84c4d9e3a866fdc068a097600a99ec328b46237a3d97f2c27d5b44ff4608ec64"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cudart_shim::do_memcpy_inner (cognitive 34): smolvm_cudart_shim::do_memcpy_inner has cognitive complexity 34 (threshold 15). Drivers by points: if/else 10 (22 pts), match/switch 2 (5 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 17). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":2033}}}],"partialFingerprints":{"codehealthFindingId/v1":"9edf5830a1474dfff849e6ed5bff5ba9272e9a86561c2dd1131dd2b44a4e9be5"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::fork::prepare_running_disk_generation (cognitive 34): smolvm::agent::fork::prepare_running_disk_generation has cognitive complexity 34 (threshold 15). Drivers by points: if/else 13 (24 pts), loops 5 (6 pts), match/switch 2 (4 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":1021}}}],"partialFingerprints":{"codehealthFindingId/v1":"f08591173cc9546df5aaa933108de92e326d17fd07625c7286c7136f15f39e5c"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::fsnotify_watch::find_recent_files (cognitive 34): smolvm::agent::fsnotify_watch::find_recent_files has cognitive complexity 34 (threshold 15). Drivers by points: if/else 13 (31 pts), boolean chains 2, loops 1 (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fsnotify_watch.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"32ebd3ef7c9e74fce3bab92e95dc844689f7db3e43978c840cd268adaa6f1a48"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::machines::branch_batch_transaction (cognitive 34): smolvm::api::handlers::machines::branch_batch_transaction has cognitive complexity 34 (threshold 15). Drivers by points: loops 6 (16 pts), if/else 10 (15 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 16). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":4682}}}],"partialFingerprints":{"codehealthFindingId/v1":"55913abc392bf481202604807e2921ecbd67308dbaade4a43ffcea717de3afab"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::portable_checkpoint::validate_compatibility (cognitive 34): smolvm::portable_checkpoint::validate_compatibility has cognitive complexity 34 (threshold 15). Drivers by points: if/else 17 (24 pts), boolean chains 7, loops 1 (2 pts), match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5216}}}],"partialFingerprints":{"codehealthFindingId/v1":"d49ddd0101d7a610e8ed16ff481a504653829b7dfcd8b2ef6ceddb0903ef38ae"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_checkpoint::store::materialize_cached (cognitive 33): smolvm_checkpoint::store::materialize_cached has cognitive complexity 33 (threshold 15). Drivers by points: if/else 12 (19 pts), boolean chains 7, loops 3 (4 pts), match/switch 2 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":1998}}}],"partialFingerprints":{"codehealthFindingId/v1":"a26b9a7f441cda8989f45127f1e5ff28c352176c0183dd0b158ef085694b9f39"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda_shim::cuLaunchKernel (cognitive 33): smolvm_cuda_shim::cuLaunchKernel has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (25 pts), match/switch 2 (4 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":3321}}}],"partialFingerprints":{"codehealthFindingId/v1":"c01bfe163ddaf7b08000184d2f7d7235864273771e9e5b870b2e5423a4870d8e"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::udp_publish::run_publisher (cognitive 33): smolvm_network::udp_publish::run_publisher has cognitive complexity 33 (threshold 15). Drivers by points: match/switch 3 (12 pts), if/else 4 (11 pts), loops 5 (9 pts), boolean chains 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/udp_publish.rs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"520658e3eb24dd20b7bc3e37b8d8061804ea3c2d7ca6de564ad603972abdf112"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_shim::engine::pump_loop (cognitive 33): smolvm_shim::engine::pump_loop has cognitive complexity 33 (threshold 15). Drivers by points: if/else 8 (22 pts), match/switch 3 (8 pts), loops 2 (3 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-shim/src/engine.rs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"38f690d396ee8f23797975de2633b5228f2ed7946b8129bcb1c8fb8805b3031d"}},{"ruleId":"D2","level":"warning","message":{"text":"CudnnBackend::dispatch (cognitive 32): CudnnBackend::dispatch has cognitive complexity 32 (threshold 15). Drivers by points: if/else 11 (24 pts), loops 2 (6 pts), boolean chains 1, match/switch 1 (nesting depth added 17). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":2889}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd7b4fcced09ef46c3e9a9672e72359669668258f1be5b68126a6eab88a5701"}},{"ruleId":"D2","level":"warning","message":{"text":"AgentClient::interactive_session_io (cognitive 32): AgentClient::interactive_session_io has cognitive complexity 32 (threshold 15). Drivers by points: if/else 8 (19 pts), match/switch 3 (7 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":2917}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa9ac0da44c63d1b2eab89226a17af9d38e14e06819279db3f19f41b05cf9a1"}},{"ruleId":"D2","level":"warning","message":{"text":"LaunchFeatures::with_packed_layers_with_mode (cognitive 32): LaunchFeatures::with_packed_layers_with_mode has cognitive complexity 32 (threshold 15). Drivers by points: if/else 15 (29 pts), boolean chains 3 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"65660bf545a9a890bca2280fdedf651656e2fbd08d6a284e4c0bd71e01ee10e4"}},{"ruleId":"D2","level":"warning","message":{"text":"ApiState::load_persisted_machines (cognitive 32): ApiState::load_persisted_machines has cognitive complexity 32 (threshold 15). Drivers by points: if/else 8 (23 pts), match/switch 3 (7 pts), boolean chains 1, loops 1 (nesting depth added 19). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/state.rs"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d9942d7831a59519a716a03e101991460982e34fd61471ab8cde793ee2ed48"}},{"ruleId":"D2","level":"warning","message":{"text":"Reference::parse (cognitive 32): Reference::parse has cognitive complexity 32 (threshold 15). Drivers by points: if/else 15 (25 pts), boolean chains 3, loops 2 (3 pts), match/switch 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/registry.rs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8700a42c4212ba4d788c444ffd5631ebd0d7f7f888262582ba299bac6fd3d1b"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::artifact_cache::inventory_candidates (cognitive 32): smolvm::artifact_cache::inventory_candidates has cognitive complexity 32 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 3 (7 pts), match/switch 1 (3 pts), boolean chains 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/artifact_cache.rs"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd8dc4aba614d453ad5e4572be36355392e8b39f534e173b5f2652dba854c087"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::storage::oci_archive_compatibility (cognitive 31): smolvm_agent::storage::oci_archive_compatibility has cognitive complexity 31 (threshold 15). Drivers by points: if/else 16 (22 pts), boolean chains 6, loops 3 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":1997}}}],"partialFingerprints":{"codehealthFindingId/v1":"26e4dfc13c14c64b6e4292b0c06f238000c0825d1d0fc8cefef95b5ac7d86f27"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda::host::reclaim_session (cognitive 31): smolvm_cuda::host::reclaim_session has cognitive complexity 31 (threshold 15). Drivers by points: loops 15 (16 pts), if/else 7 (15 pts) (nesting depth added 9). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":818}}}],"partialFingerprints":{"codehealthFindingId/v1":"a67d295818172f3d0eca4a6dbd2c7779b9acb59801cd610e604d30f3bf94bb66"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda_shim::ensure_connected (cognitive 31): smolvm_cuda_shim::ensure_connected has cognitive complexity 31 (threshold 15). Drivers by points: if/else 6 (18 pts), loops 3 (9 pts), boolean chains 3, match/switch 1 (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"11f46941435eec968f6a268bfb682a3c6ad99fbf289e83ec7dec998a36a3b13c"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::launcher::spawn_idle_reclaim (cognitive 31): smolvm::agent::launcher::spawn_idle_reclaim has cognitive complexity 31 (threshold 15). Drivers by points: if/else 11 (18 pts), match/switch 2 (6 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 13). Of this number, 29 points are the body\u0027s own statements and 2 belong to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":2967}}}],"partialFingerprints":{"codehealthFindingId/v1":"c92e100bb84f546878e8dc7239a91dd7920c0ef91f0d255b0c1e81c33d1b708c"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::exec::bridge_interactive (cognitive 31): smolvm::api::handlers::exec::bridge_interactive has cognitive complexity 31 (threshold 15). Drivers by points: if/else 6 (14 pts), match/switch 5 (12 pts), loops 3 (5 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"f152f447bf1b80741e0ad2ab6cc8a2a339f250b20b8960e34677e08cd4fc21e0"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::main (cognitive 30): smolvm_agent::main has cognitive complexity 30 (threshold 15). Drivers by points: if/else 24 (25 pts), boolean chains 3, match/switch 2 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdb54c773f811a9f07d16b8ded2b731c9c8dd29690261800e5c30c78e571df6a"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::storage::setup_volume_mounts (cognitive 30): smolvm_agent::storage::setup_volume_mounts has cognitive complexity 30 (threshold 15). Drivers by points: if/else 10 (25 pts), match/switch 1 (3 pts), boolean chains 1, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":5264}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3d9face03e66bcc5469c788a83ccfd03f27c433be5e9fac7526017242d7cc60"}},{"ruleId":"D2","level":"warning","message":{"text":"TcpRelayTable::relay_data (cognitive 30): TcpRelayTable::relay_data has cognitive complexity 30 (threshold 15). Drivers by points: if/else 7 (19 pts), match/switch 2 (5 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_relay.rs"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"872c3a1375d5552509868ce4c758836f886cafc69045d3a4efb832ef0b34ab8c"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::stack::drain_icmp_echo (cognitive 30): smolvm_network::stack::drain_icmp_echo has cognitive complexity 30 (threshold 15). Drivers by points: if/else 12 (22 pts), loops 3 (4 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/stack.rs"},"region":{"startLine":728}}}],"partialFingerprints":{"codehealthFindingId/v1":"e949c3cb789061ae4f3d24d7f1ffbe7e52b412be25f769ba64ac8086fe4d3565"}},{"ruleId":"D2","level":"warning","message":{"text":"CheckpointStream::append (cognitive 30): CheckpointStream::append has cognitive complexity 30 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 3 (6 pts), match/switch 1 (3 pts), boolean chains 2 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/checkpoint_stream.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfdf47437c95b037d24d09d8063432f28c8a10e2bf19e381657fe665bbd91dbc"}},{"ruleId":"D2","level":"warning","message":{"text":"MachoFile::shift_offsets_after (cognitive 30): MachoFile::shift_offsets_after has cognitive complexity 30 (threshold 15). Drivers by points: if/else 6 (22 pts), loops 2 (5 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/macho.rs"},"region":{"startLine":700}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6cbd884001893f57faa822d5fb0c83deb3a1c8d162b6e49b26c764bbabb1f8f"}},{"ruleId":"D2","level":"warning","message":{"text":"PruneCmd::run (cognitive 30): PruneCmd::run has cognitive complexity 30 (threshold 15). Drivers by points: if/else 18 (25 pts), loops 1 (4 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":7690}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b247668e0ea9970f1d9fc339336618dc80ab180fbd5e4b4b2987aa82ef4f7b"}},{"ruleId":"D2","level":"warning","message":{"text":"EmbeddedRuntime::resume_machine_inner (cognitive 30): EmbeddedRuntime::resume_machine_inner has cognitive complexity 30 (threshold 15). Drivers by points: if/else 16 (28 pts), boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbfa2d6eff0055e9e7a9fb7b4cb522e0d52d2c0a9956534ca04669868d9532ae"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::machines::resize_machine (cognitive 30): smolvm::api::handlers::machines::resize_machine has cognitive complexity 30 (threshold 15). Drivers by points: if/else 17 (21 pts), match/switch 3 (5 pts), boolean chains 4 (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":6616}}}],"partialFingerprints":{"codehealthFindingId/v1":"034ced064962275f2a57a96fa889f3bd0d2e4a2aa4dd08167facbd97ad5d59c8"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::spawn_exec_in_container (cognitive 29): smolvm_agent::spawn_exec_in_container has cognitive complexity 29 (threshold 15). Drivers by points: if/else 9 (21 pts), match/switch 3 (8 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":5169}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bd50f27a614d561744a9f2fd84f29a7402509db474b7423e4ef66248bb8e962"}},{"ruleId":"D2","level":"warning","message":{"text":"ApiState::real_utilization (cognitive 29): ApiState::real_utilization has cognitive complexity 29 (threshold 15). Drivers by points: if/else 13 (26 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/state.rs"},"region":{"startLine":1022}}}],"partialFingerprints":{"codehealthFindingId/v1":"31481e7f0bdb5c1a98f75390cb0c86a7822e3d3b74ab04fe221bb8632e2eabb8"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::vm_common::delete_vm (cognitive 29): smolvm::cli::vm_common::delete_vm has cognitive complexity 29 (threshold 15). Drivers by points: if/else 13 (22 pts), boolean chains 3, loops 1 (2 pts), match/switch 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":2962}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fb9d442fd05257321fdfeab65eafe334a59ed5cd316560d545312fde78dfd5f"}},{"ruleId":"D2","level":"warning","message":{"text":"vnc_client.html.updateLoop (cognitive 29): vnc_client.html.updateLoop has cognitive complexity 29 (threshold 15). Drivers by points: if/else 9 (16 pts), ternaries 2 (8 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc_client.html"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1295cd8c4c15e847a2c89076aff11b0ec0e30d38ed7747bd5ae2dc176d52612"}},{"ruleId":"D2","level":"warning","message":{"text":"AgentManager::ensure_running_with_full_config (cognitive 28): AgentManager::ensure_running_with_full_config has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (21 pts), match/switch 2 (4 pts), boolean chains 3 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":2019}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1a0031c205894a81f880091057e7e3a4081c045fc5a721ebd09cc9faa8b7ba8"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::rollout::validate_generate_request (cognitive 28): smolvm::api::rollout::validate_generate_request has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (15 pts), boolean chains 10, match/switch 1 (2 pts), loops 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":1873}}}],"partialFingerprints":{"codehealthFindingId/v1":"165951eaa31d3e30aeba1bf5c5ebf30fb98fd508a77b0bd05290260433b03ba5"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_daemon::run (cognitive 28): smolvm::cuda_daemon::run has cognitive complexity 28 (threshold 15). Drivers by points: if/else 8 (15 pts), match/switch 4 (9 pts), loops 2 (4 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":1390}}}],"partialFingerprints":{"codehealthFindingId/v1":"444112c84466f68f7dca7968b5eb5fc6e58f2b14262489012bb90329cec397cd"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::cuda::find_rpath_pinned_libs (cognitive 27): smolvm_agent::cuda::find_rpath_pinned_libs has cognitive complexity 27 (threshold 15). Drivers by points: if/else 5 (14 pts), boolean chains 5, match/switch 2 (5 pts), loops 2 (3 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/cuda.rs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"644ff23c335164165a92a1f16b0d81124fdad053d0a14e41cda15d26440f31c2"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::publish_socket::relay (cognitive 27): smolvm_agent::publish_socket::relay has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (23 pts), boolean chains 3, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/publish_socket.rs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"423488d699e96b76a3c310378d7d6b617caa7538d6dde1973369a119aa4ec163"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::relay::relay_half_close (cognitive 27): smolvm_agent::relay::relay_half_close has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (23 pts), boolean chains 3, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/relay.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"2413b1d7832c4ca5224a76b71b1cc5ec8a8d265bc8fb02763efe5cc8afc79a73"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda_shim::resolve_proc (cognitive 27): smolvm_cuda_shim::resolve_proc has cognitive complexity 27 (threshold 15). Drivers by points: if/else 15 (21 pts), boolean chains 5, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":3957}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb377473b94837ffc924e3c8aea9d30c258dbe04cfc0b4ec475f2dc346d86d9"}},{"ruleId":"D2","level":"warning","message":{"text":"AgentManager::kill_and_wait (cognitive 27): AgentManager::kill_and_wait has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (21 pts), match/switch 2 (3 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":3546}}}],"partialFingerprints":{"codehealthFindingId/v1":"4670fa6c4d6436ab5b6cf524fbbad1486e652fd7008e587cfe9c80dd2ec315e7"}},{"ruleId":"D2","level":"warning","message":{"text":"RolloutExecutor::publish_device_policy (cognitive 27): RolloutExecutor::publish_device_policy has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14 (19 pts), match/switch 1 (4 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":1102}}}],"partialFingerprints":{"codehealthFindingId/v1":"14169cb0231ee51517cf835ba62549e83e917581a6f6e1faef8484500dd9ecae"}},{"ruleId":"D2","level":"warning","message":{"text":"SmolvmDb::claim_fork_pool_slot (cognitive 27): SmolvmDb::claim_fork_pool_slot has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (20 pts), loops 3 (4 pts), boolean chains 2, match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/db.rs"},"region":{"startLine":1545}}}],"partialFingerprints":{"codehealthFindingId/v1":"a17df75a2cdeb966540e0a59dddb8719bb16f8f25dbba7b99bb60a7bc480b0b5"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::smolfile::build_create_params (cognitive 27): smolvm::cli::smolfile::build_create_params has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13, boolean chains 10, match/switch 3, loops 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/smolfile.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"d02a9095d1e541f411c4b59e5cbcf6d1f23920204a72974a77953a41ae148726"}},{"ruleId":"D2","level":"warning","message":{"text":"Writer::ingest_chunks (cognitive 26): Writer::ingest_chunks has cognitive complexity 26 (threshold 15). Drivers by points: if/else 5 (13 pts), match/switch 3 (9 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"701eacb93adcbf58dfba29c704821d2dd5194674f4a2432e947903e5fca7f121"}},{"ruleId":"D2","level":"warning","message":{"text":"AgentManager::try_connect_existing_with_pid_and_start_time (cognitive 26): AgentManager::try_connect_existing_with_pid_and_start_time has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (20 pts), match/switch 2 (6 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":1695}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a392cc0908f49fb7b0cf16d70d2266adf411ef605f07ddd57058d5d68da43a2"}},{"ruleId":"D2","level":"warning","message":{"text":"ForkPoolController::fill_pool (cognitive 26): ForkPoolController::fill_pool has cognitive complexity 26 (threshold 15). Drivers by points: if/else 6 (11 pts), match/switch 7 (11 pts), loops 3 (4 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/pool_controller.rs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"662e8b026c6c613e136648b38d2fa75d0dcf3f0b0fb2d1ad6007c235c1034113"}},{"ruleId":"D2","level":"warning","message":{"text":"RegistriesCmd::run (cognitive 26): RegistriesCmd::run has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (22 pts), match/switch 2 (3 pts), boolean chains 1 (nesting depth added 13). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/config.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"a18574d1b703f32ebc992acca3bd1f213deb6659146d11a01a0d41ccc2a02c74"}},{"ruleId":"D2","level":"warning","message":{"text":"ServeStartCmd::run (cognitive 26): ServeStartCmd::run has cognitive complexity 26 (threshold 15). Drivers by points: if/else 17 (24 pts), loops 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/serve.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"82b20f1c692ba8e6882760e4ced0a80f90015eb03e210099f05ebab1d28c559c"}},{"ruleId":"D2","level":"warning","message":{"text":"ServeStartCmd::run_server (cognitive 26): ServeStartCmd::run_server has cognitive complexity 26 (threshold 15). Drivers by points: if/else 16 (19 pts), match/switch 5, boolean chains 2 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/serve.rs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d85b63f2bd270ce6c0450fb78ebd879c6faabdb878b6750893eeec650c6e6e0"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::fork::prune_orphaned_fork_source_locks_in (cognitive 26): smolvm::agent::fork::prune_orphaned_fork_source_locks_in has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (24 pts), boolean chains 1, loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"afd1e6d70f0b54897873d4cdc8df862f4b9fb53ff5aec6bf9fba96d859a7f26b"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::vm_common::resize_vm (cognitive 26): smolvm::cli::vm_common::resize_vm has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (21 pts), boolean chains 2, loops 1 (2 pts), match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":3915}}}],"partialFingerprints":{"codehealthFindingId/v1":"531fcf1536fa9c1d2d3a9a11a168117f49d55252e6ed7785a0406ba13b5abb33"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::pack_export::reap_stale_export_scratch_in (cognitive 26): smolvm::pack_export::reap_stale_export_scratch_in has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 2 (4 pts), match/switch 2 (4 pts), boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pack_export.rs"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"db001726f1ccc97ca952bb172fd5efa4e9424e7427450b53ee1392e9dc94c036"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::spawn_crun_run (cognitive 25): smolvm_agent::spawn_crun_run has cognitive complexity 25 (threshold 15). Drivers by points: if/else 11 (22 pts), match/switch 1 (3 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":5794}}}],"partialFingerprints":{"codehealthFindingId/v1":"eff5bd2b29318f9f4653ce8be83b9f3d45c47fd88ac97bd2b67d976aafa87e94"}},{"ruleId":"D2","level":"warning","message":{"text":"Writer::retain_generations_from (cognitive 25): Writer::retain_generations_from has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (18 pts), loops 3 (4 pts), match/switch 1 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":717}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0b45e564b908cbc38cded455f49a97efafe9319361efe59d0a0304516cefff7"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda_shim::cuTensorMapEncodeTiled (cognitive 25): smolvm_cuda_shim::cuTensorMapEncodeTiled has cognitive complexity 25 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 5, boolean chains 3, match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":4222}}}],"partialFingerprints":{"codehealthFindingId/v1":"806906ab4a2f8573f6734678d437cf00be98d24010ef24c41523318bb74cc94d"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::fork::rollback_uncommitted_disk_generation (cognitive 25): smolvm::agent::fork::rollback_uncommitted_disk_generation has cognitive complexity 25 (threshold 15). Drivers by points: match/switch 6 (14 pts), if/else 5 (9 pts), loops 2 (nesting depth added 12). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":1495}}}],"partialFingerprints":{"codehealthFindingId/v1":"67dd6bf95124a85db329242ab219c38f124383894e8dac314612de718d7f3f03"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::fsnotify_watch::collect_events (cognitive 25): smolvm::agent::fsnotify_watch::collect_events has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 2 (5 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fsnotify_watch.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"88fa56b191da6f7f1ea4aa0a64898003c85c1ceaa8d7fca774bdda37ee9da3f0"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::machine::ensure_init_layer (cognitive 25): smolvm::cli::machine::ensure_init_layer has cognitive complexity 25 (threshold 15). Drivers by points: if/else 16 (18 pts), loops 5, boolean chains 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":1138}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec49bcb4bae0b377ec41a51d7bb20ce69e751645ab53b409da1d9bdf25eac8cb"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_daemon::run_clone_worker (cognitive 25): smolvm::cuda_daemon::run_clone_worker has cognitive complexity 25 (threshold 15). Drivers by points: if/else 22 (25 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":2078}}}],"partialFingerprints":{"codehealthFindingId/v1":"83c65b122d018ea3cf68d0ea432aab6dc47184b7f611a20d0429549c087b4884"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::image_seed::imp::backing_references (cognitive 25): smolvm::image_seed::imp::backing_references has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (22 pts), loops 2 (3 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/image_seed.rs"},"region":{"startLine":1208}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c918b754371c0866b88db8cd1873d7f339bbcad018c7d07d8a8eb1daf839969"}},{"ruleId":"D2","level":"warning","message":{"text":"InteractiveFrame::read_next (cognitive 24): InteractiveFrame::read_next has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (19 pts), match/switch 1 (3 pts), boolean chains 1, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":5977}}}],"partialFingerprints":{"codehealthFindingId/v1":"a820b509650ad953189e39a53b79453665ea0d8d8b1eb889696137e3b1d9ec7f"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::forkpoint::run_helper_at (cognitive 24): smolvm_agent::forkpoint::run_helper_at has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 3 (5 pts), match/switch 1 (4 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/forkpoint.rs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d565efdfb22c9a714bfd8346afe058513da3b1938c21372a422bcf70ffc27de"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::pod::handle_pod_signal (cognitive 24): smolvm_agent::pod::handle_pod_signal has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (15 pts), match/switch 4 (6 pts), loops 1 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/pod.rs"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"823a02db83f8026b6680befce1f6323193848b00f82efe0e6cc35fefb51de5c5"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda::host::serve_rings::respond (cognitive 24): smolvm_cuda::host::serve_rings::respond has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 4 (8 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (smolvm_cuda::host::serve_rings) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":3499}}}],"partialFingerprints":{"codehealthFindingId/v1":"69ab073b510c107487966707e8dc8384ed4bf41e162798b41269acc630cfdf82"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda::proto::encode_request (cognitive 24): smolvm_cuda::proto::encode_request has cognitive complexity 24 (threshold 15). Drivers by points: loops 11 (23 pts), match/switch 1 (nesting depth added 12). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/proto.rs"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"16e483fdc217f2e02c0fec256c18a2685fe7a88341be6f4e8971e34ad751dfc6"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cudart_shim::cuda_host_malloc (cognitive 24): smolvm_cudart_shim::cuda_host_malloc has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (17 pts), match/switch 4 (7 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":1823}}}],"partialFingerprints":{"codehealthFindingId/v1":"52652b11bdf1c10e20ee2227d2d35b95ffa5abd27c557e90a14f25336140fd66"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::dns::read_name (cognitive 24): smolvm_network::dns::read_name has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (22 pts), boolean chains 1, loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/dns.rs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"58f1b0fc21d7d7028df3ce10b078b9b0513fae070b6e4fcdb4047349415777bc"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::stack::deliver_dns_responses (cognitive 24): smolvm_network::stack::deliver_dns_responses has cognitive complexity 24 (threshold 15). Drivers by points: if/else 5 (18 pts), loops 2 (3 pts), match/switch 1 (3 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/stack.rs"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"001ce22160e1e423502ae9c43f51f9dfad983c4391baab06128104b4d5043a87"}},{"ruleId":"D2","level":"warning","message":{"text":"AgentManager::stop_vm_process (cognitive 24): AgentManager::stop_vm_process has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12 (18 pts), boolean chains 4, match/switch 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":3364}}}],"partialFingerprints":{"codehealthFindingId/v1":"493e05f828e4b119dd9cde8704941d36f3e7cafa3356995329acfde4cb2a1869"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::artifact_cache::prune_prepared_checkpoints_in (cognitive 24): smolvm::artifact_cache::prune_prepared_checkpoints_in has cognitive complexity 24 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 3 (7 pts), match/switch 1 (5 pts), boolean chains 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/artifact_cache.rs"},"region":{"startLine":1201}}}],"partialFingerprints":{"codehealthFindingId/v1":"524e647956038d98209941669b61392d14f2490b4ede9982a6b9ef503509fa16"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::pack_run::wait_for_agent (cognitive 24): smolvm::cli::pack_run::wait_for_agent has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (14 pts), match/switch 2 (7 pts), boolean chains 2, loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":1091}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f6fb94350bb1ec2b21c31bac1bacc5bb573780e014add3cd4d452eb1fa226fd"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::vm_common::fork_vm (cognitive 24): smolvm::cli::vm_common::fork_vm has cognitive complexity 24 (threshold 15). Drivers by points: if/else 16 (20 pts), boolean chains 2, loops 2 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":989}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b1de6d6e5ee2ea8da71cd6a33b28b48e5921ed1626c4fa67ebff2bca6deda46"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::portable_checkpoint::disk_chain_identity (cognitive 24): smolvm::portable_checkpoint::disk_chain_identity has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 2 (5 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":4249}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceff76ee38f07681d3bd3be414e0e17489a9888a97e3fdb51d94c580ed420da7"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::usage::summarize (cognitive 24): smolvm::usage::summarize has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (21 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/usage.rs"},"region":{"startLine":518}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8fbee0f7a9913c71fe1fd6503061f294ebf8ffb3e39833904143cc3dd01b486"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::handle_request (cognitive 23): smolvm_agent::handle_request has cognitive complexity 23 (threshold 15). Drivers by points: match/switch 9 (16 pts), if/else 5 (7 pts) (nesting depth added 9). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":2472}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cf5c239c21a954239cb2ae26075204ed675af10375041257cb26f472ba0341e"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::storage::mount_cache_disk (cognitive 23): smolvm_agent::storage::mount_cache_disk has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (21 pts), match/switch 1 (2 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":939}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc9a0c715adab9cea79e2f7b2c1ca9d867df4a68ed46cef59a21f35ad59c9805"}},{"ruleId":"D2","level":"warning","message":{"text":"AssetCollector::compress_with (cognitive 23): AssetCollector::compress_with has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 3 (7 pts), boolean chains 3 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/assets.rs"},"region":{"startLine":1210}}}],"partialFingerprints":{"codehealthFindingId/v1":"496af2ebc1ec157d1a60b3127ac6571939cb7313e234456986bfa85f5a0711d8"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_pack::extract::repair_host_layer_owners (cognitive 23): smolvm_pack::extract::repair_host_layer_owners has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 2 (5 pts), boolean chains 3, match/switch 1 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":3431}}}],"partialFingerprints":{"codehealthFindingId/v1":"17a89d4bc1d5b818d91e5676eb1db0b93b2b1ee43814bc37ab62009909b1b10a"}},{"ruleId":"D2","level":"warning","message":{"text":"ExecCmd::run (cognitive 23): ExecCmd::run has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (18 pts), match/switch 2 (3 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":4146}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c6486b2bf0afcaf4ab3d1ec201e5ea0a61e24de876b11e9ce0199e5ce4d35e9"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateCmd::run (cognitive 23): CreateCmd::run has cognitive complexity 23 (threshold 15). Drivers by points: if/else 17 (18 pts), match/switch 2 (3 pts), boolean chains 1, loops 1 (nesting depth added 2). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":4849}}}],"partialFingerprints":{"codehealthFindingId/v1":"56df9b538df515a9a1d5af64aa1f5789d102f05b7cbcccbc9f8b9672685c1925"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::memory_pressure::run (cognitive 23): smolvm::api::memory_pressure::run has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (16 pts), match/switch 2 (5 pts), boolean chains 1, loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/memory_pressure.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"df6710bd67a80e22b956f04e5ed24a9a228027bc2278b27c984d390ae435f84d"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::vm_common::build_vm_record_for (cognitive 23): smolvm::cli::vm_common::build_vm_record_for has cognitive complexity 23 (threshold 15). Drivers by points: if/else 15 (17 pts), boolean chains 4, loops 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":715}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2fbadc75e5f7c6da93d18ceba4649fb5f9e8a71d38a20a7c69a925278531567"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::portable_checkpoint::restore_from_path_at (cognitive 23): smolvm::portable_checkpoint::restore_from_path_at has cognitive complexity 23 (threshold 15). Drivers by points: if/else 17 (20 pts), match/switch 2, boolean chains 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":868}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b8b57f7fd76c0beb7796c5a8e36381d97dc13627bfd824fb9f7c08ce795cc3e"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_checkpoint::store::materialize_over (cognitive 22): smolvm_checkpoint::store::materialize_over has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 4 (6 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":3057}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6eefc34c9d784279897c54f982671dc63f40577765694203a5a0f7357bca164"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda_shim::cuLibraryLoadData (cognitive 22): smolvm_cuda_shim::cuLibraryLoadData has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (13 pts), match/switch 5 (7 pts), boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":2243}}}],"partialFingerprints":{"codehealthFindingId/v1":"997c0a354bed6d23eeb5a3a77a2c9db9f2b06daa664bbe79786f5a959b0afd41"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::tcp_relay::tcp_relay_loop (cognitive 22): smolvm_network::tcp_relay::tcp_relay_loop has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (14 pts), match/switch 4 (7 pts), boolean chains 1 (nesting depth added 12). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_relay.rs"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"59d33e641f0e88d360403fc582c93563e723f250cf3f80ea5cf4b11f9bfb3ea0"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::tcp_relay::flush_proxy_data (cognitive 22): smolvm_network::tcp_relay::flush_proxy_data has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (12 pts), match/switch 3 (9 pts), loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_relay.rs"},"region":{"startLine":1446}}}],"partialFingerprints":{"codehealthFindingId/v1":"e763300d05ff913dbaeaf8b0093b13554073cff6a319aceadab6926ea2455bfa"}},{"ruleId":"D2","level":"warning","message":{"text":"CheckpointLogCmd::run (cognitive 22): CheckpointLogCmd::run has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 2 (3 pts), match/switch 1 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b70aa714f56ed5f9978d330a8737b6a242f2bcdf1b48734a1367540b714f7c6"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::fork::prepare_clone_from_snapshot (cognitive 22): smolvm::agent::fork::prepare_clone_from_snapshot has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8, loops 4 (7 pts), match/switch 2 (6 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":3153}}}],"partialFingerprints":{"codehealthFindingId/v1":"e14ff6fb3ed44893f52f83ce565602a5eeeb0ad29459322cbc22d7e1a7f440d0"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::machines::stop_machine (cognitive 22): smolvm::api::handlers::machines::stop_machine has cognitive complexity 22 (threshold 15). Drivers by points: if/else 16 (20 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":5798}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9147159e9ece9368b1660e7710347140326e55e3aab0705b7d8f1be401275d9"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::pools::acquire_lease_inner (cognitive 22): smolvm::api::handlers::pools::acquire_lease_inner has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 4, loops 2, match/switch 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/pools.rs"},"region":{"startLine":804}}}],"partialFingerprints":{"codehealthFindingId/v1":"19a90299e74f7ba330431304becfa29b6101cec08890c9cae6435db854e6a6f9"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::pack_run::resolve_lib_dir (cognitive 22): smolvm::cli::pack_run::resolve_lib_dir has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (22 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"503753e008c28c9384ea7fdbb1978577a080a40772e11467e867aeea1c7b9a24"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::portable_checkpoint::validate_disk_manifest (cognitive 22): smolvm::portable_checkpoint::validate_disk_manifest has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (15 pts), boolean chains 4, loops 2 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5370}}}],"partialFingerprints":{"codehealthFindingId/v1":"b77e7d1a175dcac81f8bf0493f81569c5df6363209851a09645700a2f8886b7b"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::portable_checkpoint::promote_retained_backing_locked (cognitive 22): smolvm::portable_checkpoint::promote_retained_backing_locked has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 5, loops 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5661}}}],"partialFingerprints":{"codehealthFindingId/v1":"4500323a0064c6d833e100f797825c7d3f1e8bf0f99b6e102bcfa64e4808ca85"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::setup_gpu_dev_nodes (cognitive 21): smolvm_agent::setup_gpu_dev_nodes has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (18 pts), loops 2, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":962}}}],"partialFingerprints":{"codehealthFindingId/v1":"43047e46b5f9b458d377e04abe12edf042dd7fdd0c3db777c0b14958dbfc3f94"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::pod::write_pod_bundle (cognitive 21): smolvm_agent::pod::write_pod_bundle has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 3 (6 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/pod.rs"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"aecd4796ad7e7e66eb92c9b7a587b123dcfa40c80b26780dcac58cbba78f5727"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::storage::init_volume_mounts (cognitive 21): smolvm_agent::storage::init_volume_mounts has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (13 pts), match/switch 3 (5 pts), loops 2, boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"7227140874801307b85dd98e7b06e0f72a5d70184affead93c42a9fb16f1e7e8"}},{"ruleId":"D2","level":"warning","message":{"text":"Client::drain (cognitive 21): Client::drain has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/client.rs"},"region":{"startLine":599}}}],"partialFingerprints":{"codehealthFindingId/v1":"2320177cade355636879e19e408b10ac04a453a203beb4e3e477438a2e8f2078"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda::proto::decode_request (cognitive 21): smolvm_cuda::proto::decode_request has cognitive complexity 21 (threshold 15). Drivers by points: loops 6 (13 pts), if/else 3 (6 pts), boolean chains 1, match/switch 1 (nesting depth added 10). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/proto.rs"},"region":{"startLine":1674}}}],"partialFingerprints":{"codehealthFindingId/v1":"633237d00c1f6761875f822a9b391d2721f007fc6692fac9880c5e8276c96cb4"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda_codegen::gen_guest (cognitive 21): smolvm_cuda_codegen::gen_guest has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 3 (6 pts), match/switch 2 (5 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-codegen/src/main.rs"},"region":{"startLine":732}}}],"partialFingerprints":{"codehealthFindingId/v1":"b09ba05243e795d238cb78260f53870e89bda3c9c1fa03afe474cbb0317e1df8"}},{"ruleId":"D2","level":"warning","message":{"text":"MachoFile::sign_adhoc (cognitive 21): MachoFile::sign_adhoc has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 5, boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/macho.rs"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"64dbaffad302f416dc5ea9116752282d20f186734dd9ad8c60228089eef2bd41"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_shim::engine::materialize_bind_mounts (cognitive 21): smolvm_shim::engine::materialize_bind_mounts has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 2 (5 pts), match/switch 1 (3 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-shim/src/engine.rs"},"region":{"startLine":1100}}}],"partialFingerprints":{"codehealthFindingId/v1":"44f04dbdf6251b0a5965ac5290135b032235e18b92b414fdf957c5c5d1a78c86"}},{"ruleId":"D2","level":"warning","message":{"text":"HostProxy::from_scutil (cognitive 21): HostProxy::from_scutil has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (18 pts), boolean chains 1, loops 1, match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/host_network.rs"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"06006912357af8d14ad6e9484084a0923e66f9f5491d9b78168c5c21e7ce03c2"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::video::encode_session (cognitive 21): smolvm::agent::video::encode_session has cognitive complexity 21 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 4 (7 pts), match/switch 2 (3 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/video.rs"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a82b21b5743cc95b116741b6a3df7479b6cae0569fa8c0bc64c2c25fb56d54d"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::artifact_cache::trim_unleased_shared_packs_with (cognitive 21): smolvm::artifact_cache::trim_unleased_shared_packs_with has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (13 pts), boolean chains 3, loops 3, match/switch 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/artifact_cache.rs"},"region":{"startLine":1081}}}],"partialFingerprints":{"codehealthFindingId/v1":"32498453c27bb8a0882516e181f1940a90b520a0615071a61e91295c94525d04"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::pack_run::execute_packed_command (cognitive 21): smolvm::cli::pack_run::execute_packed_command has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (18 pts), boolean chains 2, match/switch 1 (nesting depth added 10). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":1341}}}],"partialFingerprints":{"codehealthFindingId/v1":"3daacfb8ea5ecefc2e53b56ee4d806d203c16dc519566f2b2b8b759c1e3cc0f0"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::embedded::control::fork_vm_batch (cognitive 21): smolvm::embedded::control::fork_vm_batch has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 4 (6 pts), match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/control.rs"},"region":{"startLine":586}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c5bb50214265c15f54a94b16730d44eb29ad9dd1b968a053573389827bb1bec"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_checkpoint::store::for_each_with_budget (cognitive 20): smolvm_checkpoint::store::for_each_with_budget has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 3 (4 pts), boolean chains 1, match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":1435}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d515e2ed4145a86696311b482121626003df24d1686355a840bf3a70548b75d"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_checkpoint::store::materialize_generation (cognitive 20): smolvm_checkpoint::store::materialize_generation has cognitive complexity 20 (threshold 15). Drivers by points: match/switch 5 (9 pts), if/else 3 (6 pts), boolean chains 4, loops 1 (nesting depth added 7). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":2197}}}],"partialFingerprints":{"codehealthFindingId/v1":"da4776e8c19778b0d6c361ecd868ab741ab1608c4c8cd95d8cde247cb6732176"}},{"ruleId":"D2","level":"warning","message":{"text":"GpuBackend::graph_introspect (cognitive 20): GpuBackend::graph_introspect has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 4 (6 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":2382}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c7d989dc8b6fc786b6d43666baf418c71b946b8b951ad4bbbd0385590a01a9d"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda_shim::module_image_len (cognitive 20): smolvm_cuda_shim::module_image_len has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":1403}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d12293259b00d1533549a2cef2ef18208ae90e0b361d0da1c04c23e5b8fbeea"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cudart_shim::with_client_state (cognitive 20): smolvm_cudart_shim::with_client_state has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (15 pts), match/switch 2 (3 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":963}}}],"partialFingerprints":{"codehealthFindingId/v1":"25c98e1a3f8781991b84235fc8cff9e3612667a4d4dd6e9540018dddbeee0ca7"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_pack::extract::ensure_shared_artifact_sha256_with_proofs (cognitive 20): smolvm_pack::extract::ensure_shared_artifact_sha256_with_proofs has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 6, match/switch 2 (3 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":3261}}}],"partialFingerprints":{"codehealthFindingId/v1":"9337239ccacecb07eb8595e7506db1cbe1c3814f7bdbfbab6fdf0af8c3f269eb"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_pack::extract::gc_stale_leases (cognitive 20): smolvm_pack::extract::gc_stale_leases has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (19 pts), loops 1 (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":5089}}}],"partialFingerprints":{"codehealthFindingId/v1":"6133bdfb30121eaa83b75cefa9e815d825318a17c202c71541ef75a886ecfc41"}},{"ruleId":"D2","level":"warning","message":{"text":"BlobCache::list_artifacts (cognitive 20): BlobCache::list_artifacts has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/cache.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a07e2b42e7a55fa149e52e03caa41f09c2f1ecd2accac9599a2879e0037ca0"}},{"ruleId":"D2","level":"warning","message":{"text":"PackPruneCmd::prune_cache_dir (cognitive 20): PackPruneCmd::prune_cache_dir has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (13 pts), match/switch 3 (5 pts), loops 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1724}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce1d420409f370d2c008686c03e49f6c4492514bbcbe71091d44748a3e5937a3"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::fork::compact::reachable_layers (cognitive 20): smolvm::agent::fork::compact::reachable_layers has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 4 (8 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork/compact.rs"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d81b0a572d178373a5a175af0804abd7eb1f3fd0198442eeb71525bbe62f9b"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::fork::compact::collect_unreachable_layers (cognitive 20): smolvm::agent::fork::compact::collect_unreachable_layers has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork/compact.rs"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"6892732d163dcad79fa00c83dcedda36aceaad568eadca728e702052d60cf5ae"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::machines::capture_portable_checkpoint (cognitive 20): smolvm::api::handlers::machines::capture_portable_checkpoint has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (13 pts), match/switch 4 (5 pts), loops 2 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"b649c47db70b119e565d53b376228400027a6cfb59380759f5ec79b942519150"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::checkpoint_retention::sweep_stale_ids (cognitive 20): smolvm::checkpoint_retention::sweep_stale_ids has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/checkpoint_retention.rs"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"1061eddf87897caf917be4ff8dfd99756cb759d52c90f67ebb4b1c53ff103a30"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::machine::parse_published_sockets (cognitive 20): smolvm::cli::machine::parse_published_sockets has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 4, boolean chains 3, match/switch 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d8c6c56a3d0c15346cbd155c2ac7e3b85536fbad599a1a7ae486639bd9bff10"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::internal_boot::qcow2_backing_chain (cognitive 20): smolvm::internal_boot::qcow2_backing_chain has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (17 pts), boolean chains 2, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/internal_boot.rs"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ad31320392d1bf82102ec96d5b9f84d7880548bb566ccddc64b766f3862f64e"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::registry::registry_client (cognitive 20): smolvm::registry::registry_client has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (15 pts), match/switch 3, boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/registry.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"18ccb9c50652eeaaa601547e53873bb9f9e894438f3befb96c0f286055d7d9e3"}},{"ruleId":"D2","level":"warning","message":{"text":"check-krun-init-static.embedded_inits (cognitive 20): check-krun-init-static.embedded_inits has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/check-krun-init-static.py"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c7009d07bab60c883c55a5adbdebf01d23f047d3e71addf8cfc5d945cac089f"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::handle_streaming_file_read (cognitive 19): smolvm_agent::handle_streaming_file_read has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (12 pts), match/switch 5 (6 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":3732}}}],"partialFingerprints":{"codehealthFindingId/v1":"99aa6d6e5b1da10e7122708185527d0c2dde16f90bfd512cb37fd4b664612fc8"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::storage::ensure_mount_target_under_root (cognitive 19): smolvm_agent::storage::ensure_mount_target_under_root has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (16 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef3f37e4f9f2b726d2ed3d547f7b290ca372f225aa7db5dcb051f297d60b6a13"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_pack::assets::macos_sparse_extents (cognitive 19): smolvm_pack::assets::macos_sparse_extents has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (17 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/assets.rs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d8882b743629c924b30345e627a3fe3216c25963c13db8f298f39bf8b9d977d"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_pack::extract::copy_data_extents (cognitive 19): smolvm_pack::extract::copy_data_extents has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (16 pts), loops 2 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":5558}}}],"partialFingerprints":{"codehealthFindingId/v1":"a80830ec9e08d172c6ca542b2174ed09a5fec69e5400025bb6fd7c9566363801"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_registry::pull::download_with_resume (cognitive 19): smolvm_registry::pull::download_with_resume has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (12 pts), boolean chains 4, match/switch 1 (2 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/pull.rs"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f6cab0d3d11e80ded4619e7d1067bfbc23cd4b8c4e2cb8bb17a5bc45ee7c00f"}},{"ruleId":"D2","level":"warning","message":{"text":"S3Fs::remember_listing (cognitive 19): S3Fs::remember_listing has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 5, loops 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/fs.rs"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9c5110910e375e46b202bc1da60eb46ad562b806aba4c1a8fc8542c35a82ff3"}},{"ruleId":"D2","level":"warning","message":{"text":"AgentManager::stop_inner (cognitive 19): AgentManager::stop_inner has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (16 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":3677}}}],"partialFingerprints":{"codehealthFindingId/v1":"958ce6619fce467c775ea8686a5e6010c0e44958417d995585cc7d78f307b9e8"}},{"ruleId":"D2","level":"warning","message":{"text":"PackCreateCmd::export_layer_to_file (cognitive 19): PackCreateCmd::export_layer_to_file has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (16 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1507}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e9366cf8c19b1d23feb09ce5d0164f6c184c1add4c5d64273dcf0eb0bd3fcc"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::fsnotify_watch::run_watch (cognitive 19): smolvm::agent::fsnotify_watch::run_watch has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (8 pts), match/switch 4 (7 pts), loops 3 (4 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fsnotify_watch.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"89af9457025ebd4956fd9b48459b61b1a49639f19caf5845007f5c8693d7e0f5"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::pack_run::daemon_start (cognitive 19): smolvm::cli::pack_run::daemon_start has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (13 pts), boolean chains 3, loops 1 (2 pts), match/switch 1 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":2266}}}],"partialFingerprints":{"codehealthFindingId/v1":"51b77a1f8bd5fb73bdb2d376535128d05d881c3fccbd564aad0193e5f5b299a1"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_daemon::wait_for_clone_worker_ready (cognitive 19): smolvm::cuda_daemon::wait_for_clone_worker_ready has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (11 pts), match/switch 2 (7 pts), loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"9261f60b0e51c072f0ce90d0bd3619dc8eae85550dfd5089ecafd6cf1265468e"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_daemon::consume_ram_preamble (cognitive 19): smolvm::cuda_daemon::consume_ram_preamble has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (10 pts), boolean chains 5, loops 3, match/switch 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":1836}}}],"partialFingerprints":{"codehealthFindingId/v1":"9933e0494009973374953b6a4c5c25886c78d4c54123498d5e9d9b512c441a73"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_host::proxy_to_daemon::guest_ram_advert (cognitive 19): smolvm::cuda_host::proxy_to_daemon::guest_ram_advert has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 4, boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_host.rs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"a302b2cb94015b75d321ef97341a502dbcc9e9138b0a615730e704475fe9a85b"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::network::launch::validate_requested_network_backend (cognitive 19): smolvm::network::launch::validate_requested_network_backend has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (12 pts), boolean chains 7 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/network/launch.rs"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"644bfd086bc5eb8eac9cb3a636eb13c02ea1fc914bd0f5cdd29e428fd1ddc25b"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::staged_mount::apply_archive (cognitive 19): smolvm::staged_mount::apply_archive has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/staged_mount.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"28a61227183cfc76f0c888b834b89e09c51a32b25c3448f2f528d39a1c620e4d"}},{"ruleId":"D2","level":"warning","message":{"text":"WriteSession::finalize (cognitive 18): WriteSession::finalize has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (10 pts), match/switch 4 (7 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":3399}}}],"partialFingerprints":{"codehealthFindingId/v1":"625cefe16c6f3eca6cc42542ff3f146f6692e5204d4bfcdbdc5ca8e2411c4258"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::test_tcp_syscall (cognitive 18): smolvm_agent::test_tcp_syscall has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 10 (16 pts), if/else 1 (2 pts) (nesting depth added 7). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6688}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a1165e72e0bc179c9b3ae09aa7feb00bf74e07bc8bcdb49978165ddfcb80940"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::live_resources::online_memory_as_published (cognitive 18): smolvm_agent::live_resources::online_memory_as_published has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (8 pts), match/switch 2 (7 pts), loops 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/live_resources.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"531f1613a487403d436eaf99007a1d5d184f5e48704241ed82a491db56969be3"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::storage::find_layer_path (cognitive 18): smolvm_agent::storage::find_layer_path has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (17 pts), loops 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":3852}}}],"partialFingerprints":{"codehealthFindingId/v1":"b006355805b211310c16ce8032e9a21948d1db50ea0d1e46d65492499a7c5ed3"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_checkpoint::store::lineage_of (cognitive 18): smolvm_checkpoint::store::lineage_of has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 2 (3 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":820}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7ddf3ff8da608ce4ca21db739821974c4b76cb3af4c22f5347f1e0fe24027cc"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda::host::xlat_mod (cognitive 18): smolvm_cuda::host::xlat_mod has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (11 pts), match/switch 2 (5 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":2199}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ad42822f07892ebd6b78384019b336ebf02dc93a02ba80492cfb74b2e074349"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cuda::host::translate_dptrs (cognitive 18): smolvm_cuda::host::translate_dptrs has cognitive complexity 18 (threshold 15). Drivers by points: loops 4 (9 pts), if/else 3 (8 pts), match/switch 1 (nesting depth added 10). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":2790}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e597f314d7297cab65e5d496a4194245ca12fc19b6eea97d144f19691f7e71"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cudart_shim::bn_size_call (cognitive 18): smolvm_cudart_shim::bn_size_call has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (17 pts), match/switch 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":6104}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a34095f95408c279f0660175e5c4d5b8113464821f45add1ea92135f4e801a6"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::netns_tap::pump_tap_to_stream (cognitive 18): smolvm_network::netns_tap::pump_tap_to_stream has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (13 pts), match/switch 2 (4 pts), loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/netns_tap.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"738049aafdf900d0e0017e8c4b59c4d5709c150c3f113460e7d4a5dc06b995fd"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_network::tcp_listeners::run_tcp_port_listener (cognitive 18): smolvm_network::tcp_listeners::run_tcp_port_listener has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (12 pts), match/switch 2 (5 pts), loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_listeners.rs"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"937d453e29cf068c894d2ae475e62d035b93be8c629e733f12cc4dc5270564a2"}},{"ruleId":"D2","level":"warning","message":{"text":"HostMount::validate_with_system_mounts (cognitive 18): HostMount::validate_with_system_mounts has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (14 pts), boolean chains 3, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/data/storage.rs"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"45ea8e9a3c24e33cef4864d37d50a7ae3c1447c0e8a63e0622ce525ab6510f71"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::client::write_frames (cognitive 18): smolvm::agent::client::write_frames has cognitive complexity 18 (threshold 15). Drivers by points: if/else 3 (10 pts), match/switch 2 (5 pts), loops 2 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e38d0b04a8bec99dbcaeba425a4fb4c9878377b5fca8a9fc36282b30e5f87d3"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::vnc::frame_diff_rects (cognitive 18): smolvm::agent::vnc::frame_diff_rects has cognitive complexity 18 (threshold 15). Drivers by points: loops 5 (7 pts), match/switch 2 (6 pts), if/else 1 (3 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc.rs"},"region":{"startLine":1023}}}],"partialFingerprints":{"codehealthFindingId/v1":"24eb6b868adb27cd8e5327129a7440b78b125202bcc276f5345262a8a430656a"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::machines::drain_machines (cognitive 18): smolvm::api::handlers::machines::drain_machines has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (11 pts), match/switch 3 (4 pts), loops 2, boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":6053}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d13112989b2aa1c1c44020a16c98a8d618100f1bdcf8689389678870b4e7c9c"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::resize_controller::run (cognitive 18): smolvm::api::resize_controller::run has cognitive complexity 18 (threshold 15). Drivers by points: if/else 3 (8 pts), match/switch 3 (7 pts), loops 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/resize_controller.rs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2d4310dfe8098b67b6ad275a80afd27966d394dc6db2bd0b058ffc28f3ef4e7"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::vm_common::status_vm (cognitive 18): smolvm::cli::vm_common::status_vm has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 1 (2 pts), match/switch 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":3147}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ad3dcb9ee0c009561aed35c92442ce0fa604d2d1725340a97f89ac26eb971ee"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::disk_utils::sparse_copy_windows (cognitive 18): smolvm::disk_utils::sparse_copy_windows has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/disk_utils.rs"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"40d409084c151670b439b698481fcc956d33d3813c984fbbcf23586a58fcb454"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::pack_export::collect_from_vm_assets (cognitive 18): smolvm::pack_export::collect_from_vm_assets has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (11 pts), match/switch 2 (4 pts), boolean chains 3 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pack_export.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"b51587fe660a944e0292dadfe4456136dbf32f8f3587c7c3a82d63e4383e64c9"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::portable_checkpoint::resume_deferred_restore_syncs (cognitive 18): smolvm::portable_checkpoint::resume_deferred_restore_syncs has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"06a7284080dc75ee2f6a105c1f4c27b57b5aefbc9f0aa7db867213e48dce0824"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::portable_checkpoint::qcow2_backing_patches (cognitive 18): smolvm::portable_checkpoint::qcow2_backing_patches has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 2, loops 1, match/switch 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":4136}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1a73103452402efa49e9e8ad5b47e5a6de234d0c89afc670f047ef1c5ca459b"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::process::wait_for_exit_event (cognitive 18): smolvm::process::wait_for_exit_event has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (15 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/process.rs"},"region":{"startLine":3672}}}],"partialFingerprints":{"codehealthFindingId/v1":"2798efa0a64b2ab318dfaaec90caf59825f290c619240c622f25052042946573"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::process::live_descendants (cognitive 17): smolvm_agent::process::live_descendants has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 3 (5 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/process.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6d4bb061ee4cea4a4d9945ec30dc92e30ca1a9fad1aef6cadd3b5c2f7926c3c"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::storage::cleanup_overlay (cognitive 17): smolvm_agent::storage::cleanup_overlay has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":4851}}}],"partialFingerprints":{"codehealthFindingId/v1":"93c9b86a687f3b2604064e9c8a94f7e8191d8bfbff14efaa9f106eb44a571bc6"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_checkpoint::store::store_chunk (cognitive 17): smolvm_checkpoint::store::store_chunk has cognitive complexity 17 (threshold 15). Drivers by points: match/switch 5 (9 pts), if/else 5 (7 pts), boolean chains 1 (nesting depth added 6). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":1540}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d292780a113617fd1be0392228f3b5f24f4d6bc0f5c3b8602e172a752637672"}},{"ruleId":"D2","level":"warning","message":{"text":"GpuBackend::gpa_procmem (cognitive 17): GpuBackend::gpa_procmem has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 3 (5 pts), boolean chains 3 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":3986}}}],"partialFingerprints":{"codehealthFindingId/v1":"54f2c29c10f3e260fc6a5d5415141b979763ffc5c4f5dee60f079f3df6dd21f9"}},{"ruleId":"D2","level":"warning","message":{"text":"CheckpointStream::read (cognitive 17): CheckpointStream::read has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 4, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/checkpoint_stream.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"e87e3b665d5dd4df0171e5ac349c21455f50b5a8784b054edb207fc6600406ee"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_pack::extract::extract_libs_from_binary (cognitive 17): smolvm_pack::extract::extract_libs_from_binary has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (13 pts), loops 2 (3 pts), match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":5370}}}],"partialFingerprints":{"codehealthFindingId/v1":"103decc221b5f3595a2e37560e749d168a026df30df8a27888d8298e56caca14"}},{"ruleId":"D2","level":"warning","message":{"text":"RegistryClient::get_token (cognitive 17): RegistryClient::get_token has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13 (16 pts), boolean chains 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":1405}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf0a3fa2c4f2edf2ca22e7d4bd329a3de341c586e5cc7026894b10ed5be2ef22"}},{"ruleId":"D2","level":"warning","message":{"text":"S3Fs::small_bytes (cognitive 17): S3Fs::small_bytes has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/fs.rs"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"f08fd38cadc96e07dbd19b0bf50720ee7f6bdf30d6ac7ddc293b478ea837300e"}},{"ruleId":"D2","level":"warning","message":{"text":"AgentClient::receive_stream_to_path (cognitive 17): AgentClient::receive_stream_to_path has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (13 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":3426}}}],"partialFingerprints":{"codehealthFindingId/v1":"c540356968bf3adc0e4c58107ffecc3b2f108fabe977bf123183cbf10ad33a43"}},{"ruleId":"D2","level":"warning","message":{"text":"AgentManager::ensure_running_via_subprocess (cognitive 17): AgentManager::ensure_running_via_subprocess has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (12 pts), match/switch 2 (4 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":3260}}}],"partialFingerprints":{"codehealthFindingId/v1":"718d96f4b1de913f0d719b792c3b65a8b64b1ad924c2a09bf4ae0fe775b5d3ab"}},{"ruleId":"D2","level":"warning","message":{"text":"ForkPoolController::run (cognitive 17): ForkPoolController::run has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (13 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/pool_controller.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"b78c7764eb4cc1e30cd6f5fe86a6545391ed2b21e1791b2da1d64ff796fc6bf3"}},{"ruleId":"D2","level":"warning","message":{"text":"ForkPoolController::reconcile_once (cognitive 17): ForkPoolController::reconcile_once has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 3 (4 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/pool_controller.rs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0b816e45162eca757908d1624330c10e758034722adb26196f90deeea9d604c"}},{"ruleId":"D2","level":"warning","message":{"text":"RolloutExecutor::publish_policy (cognitive 17): RolloutExecutor::publish_policy has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12 (16 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":967}}}],"partialFingerprints":{"codehealthFindingId/v1":"84417b5c6fd5c2b32ae71635a70741572c2eb79cd16024bb604ddcf4cc661ae0"}},{"ruleId":"D2","level":"warning","message":{"text":"Keep::from_records (cognitive 17): Keep::from_records has cognitive complexity 17 (threshold 15). Drivers by points: if/else 3 (11 pts), loops 3 (6 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/checkpoint_retention.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ad5a4db7af8b844b7e5ffd6fc265f65c4d93b4246076f6769b45513accf6b99"}},{"ruleId":"D2","level":"warning","message":{"text":"ForkCmd::run (cognitive 17): ForkCmd::run has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11, boolean chains 3, match/switch 2 (3 pts) (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":6044}}}],"partialFingerprints":{"codehealthFindingId/v1":"051bebbf0651f2d40044f668ff5a849a2cafb18c5d331333b125d055c36cb694"}},{"ruleId":"D2","level":"warning","message":{"text":"SmolSettings::load_from_disk (cognitive 17): SmolSettings::load_from_disk has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (16 pts), match/switch 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/settings.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c4f32a3fd9c9ae8353b4917a580386cd5462f010d605a69f52b92646d13be40"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::fork::stage_relocated_qcow2_backings (cognitive 17): smolvm::agent::fork::stage_relocated_qcow2_backings has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":1363}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fa98004a0e9b72bb29e7744b4021e1979f3f3ec52b9590195ff68a53459ab75"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::video::drop_encoder_privileges (cognitive 17): smolvm::agent::video::drop_encoder_privileges has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (13 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/video.rs"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"baead3dcea81e287dc9e1c0df90751f1fddbfd14b38784c70382fc8fe1fc3f12"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::vnc::composite_cursor (cognitive 17): smolvm::agent::vnc::composite_cursor has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc.rs"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8e14a4a64edf989771574efd1474294b63354a0c67ec951204ccb9d27242679"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::device_handoff::validate_bundle_metadata (cognitive 17): smolvm::api::device_handoff::validate_bundle_metadata has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 5, loops 1 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/device_handoff.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ec5e2ca5e3fdd1b8a915afe1eca1dbb760fcdb916561b1b69376ad100e5f90"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::exec::exec_event_stream (cognitive 17): smolvm::api::handlers::exec::exec_event_stream has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (14 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e0135d1792f59da866da12c025804700aa3ae81bc1e0f5b0ef9bffa5b8ffd1"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::handlers::pools::create_pool (cognitive 17): smolvm::api::handlers::pools::create_pool has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, boolean chains 4. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/pools.rs"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"1789a7687925357c80413806aafe303cd79a5b84552b963228816cf27cee4964"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::state::ensure_running_and_persist (cognitive 17): smolvm::api::state::ensure_running_and_persist has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/state.rs"},"region":{"startLine":1722}}}],"partialFingerprints":{"codehealthFindingId/v1":"d870b18a8da4ebdd3a2d1dc7fbba67adb8f962caa40e139094f5dfea3f1c3ef7"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::vm_common::stop_vm_named_with_timeout (cognitive 17): smolvm::cli::vm_common::stop_vm_named_with_timeout has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (14 pts), match/switch 2, boolean chains 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":2558}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a048f77f6ed2e3d163da49d3faa9d37527d49b1d1b77317db5ef8d0bb1a1ee6"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_daemon::consume_procmem_preamble (cognitive 17): smolvm::cuda_daemon::consume_procmem_preamble has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (10 pts), boolean chains 4, loops 3 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":1717}}}],"partialFingerprints":{"codehealthFindingId/v1":"77be24b762c2cee97f072fbfd998496dc63aec80e5a9f344c49f363d635f760e"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cuda_daemon::spawn_clone_attach_listener_with_timeout (cognitive 17): smolvm::cuda_daemon::spawn_clone_attach_listener_with_timeout has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":2404}}}],"partialFingerprints":{"codehealthFindingId/v1":"9032e7ffb5c7959b28f9d37ee476a25515418989cac8cf4d0c2462a6fa432fe6"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::data::validate_vm_name (cognitive 17): smolvm::data::validate_vm_name has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 2, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/data/mod.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f032ffc08c3fcb5a92c14c35f48827d849b5d49bdf0626cf53b9d96b228dc5"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::process::reap_vm_child (cognitive 17): smolvm::process::reap_vm_child has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (16 pts), loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/process.rs"},"region":{"startLine":2340}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e3b04ea9485ae8d8dc524fc7367889bbad318d71699b4f51c975aa346563710"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_agent::mount_storage_disk (cognitive 16): smolvm_agent::mount_storage_disk has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (12 pts), boolean chains 2, match/switch 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":1846}}}],"partialFingerprints":{"codehealthFindingId/v1":"59f75f31d95d3c2091ee2d261069ef15ebadf0439a65d5b8646d52066555caad"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cudart_shim::cudaFuncGetAttributes (cognitive 16): smolvm_cudart_shim::cudaFuncGetAttributes has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14 (16 pts) (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":3613}}}],"partialFingerprints":{"codehealthFindingId/v1":"e98406515f7b8b8e7a646e6c55ef89baf51f704c5d132bd96418b5a715afa806"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_cudart_shim::cublasLtMatmulAlgoGetHeuristic (cognitive 16): smolvm_cudart_shim::cublasLtMatmulAlgoGetHeuristic has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 1, loops 1, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":5664}}}],"partialFingerprints":{"codehealthFindingId/v1":"56b9baa60635e0f8e9d13f9884e1205c0e88deddde0db392f9f520b3645d25cc"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm_pack::extract::repair_host_layer_symlink_owners (cognitive 16): smolvm_pack::extract::repair_host_layer_symlink_owners has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":3476}}}],"partialFingerprints":{"codehealthFindingId/v1":"b736985dcdc8eb86539474b2f670ba818fea1eec87705fad632e6aa66bd2f7cd"}},{"ruleId":"D2","level":"warning","message":{"text":"WsStream::next_payload (cognitive 16): WsStream::next_payload has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (7 pts), match/switch 3 (6 pts), loops 2 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/websocket.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ac70e94cfd2db539d55ad28294cb07bfdd289913aa424fe26c3a9c96426b964"}},{"ruleId":"D2","level":"warning","message":{"text":"RolloutExecutor::generate (cognitive 16): RolloutExecutor::generate has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (15 pts), match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":1448}}}],"partialFingerprints":{"codehealthFindingId/v1":"83113b6611c6f132d307aff07bd16266da0dc1454391cae131651fdb9103a571"}},{"ruleId":"D2","level":"warning","message":{"text":"ImagesCmd::run (cognitive 16): ImagesCmd::run has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (13 pts), loops 1 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":7584}}}],"partialFingerprints":{"codehealthFindingId/v1":"19a8da4dacdca488e93715f178414bcb5ba1775bbe4083ee7942792c5bb8ad03"}},{"ruleId":"D2","level":"warning","message":{"text":"PackCreateCmd::pack_from_vm (cognitive 16): PackCreateCmd::pack_from_vm has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (13 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1075}}}],"partialFingerprints":{"codehealthFindingId/v1":"05a5ef33c422859ebbe94c9153467683f0fdcaf42be9948ffeb37a3752772050"}},{"ruleId":"D2","level":"warning","message":{"text":"PackPruneCmd::run (cognitive 16): PackPruneCmd::run has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (15 pts), loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1636}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0e7e007d3d47101c10f495526d4204a902340dfac26e1e27e33049bc35adea9"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::fork::rollback_retained_fork_snapshot (cognitive 16): smolvm::agent::fork::rollback_retained_fork_snapshot has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (16 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":3022}}}],"partialFingerprints":{"codehealthFindingId/v1":"e867f31ffe672dea1f95afd7f5645a5e9e18882208b1b540936717b602d837f2"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::fork::compact::read_chain_parallel (cognitive 16): smolvm::agent::fork::compact::read_chain_parallel has cognitive complexity 16 (threshold 15). Drivers by points: loops 5 (7 pts), if/else 4 (6 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork/compact.rs"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4394616724eec07f740f7d24a109b44ffdc899e7ee1bd95672a2d05ec153574"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::live_resize::grow_memory_locked (cognitive 16): smolvm::agent::live_resize::grow_memory_locked has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (14 pts), boolean chains 1, loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/live_resize.rs"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ac9c33f14bbb6e348540bdd4422c307d3ee95074b1aa1df5a8ba9b26d96ddac"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::live_resize::check_targets (cognitive 16): smolvm::agent::live_resize::check_targets has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/live_resize.rs"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"233bf49292bb67f96d2c94759d75f6f4117b4f31adbaaf114c81088f243c4a47"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::agent::video::run_helper (cognitive 16): smolvm::agent::video::run_helper has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2, match/switch 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/video.rs"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5165ef2b5a54d58c0d59b1aa5e6eb326331d7e981001cb6da243270db78beb0"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::api::cache_base_fetch::fetch_parts (cognitive 16): smolvm::api::cache_base_fetch::fetch_parts has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 3 (4 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/cache_base_fetch.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0746f8d39b9d939ae6e5add62bc09d7b42a2d20c7cf61b4129dc42886319f83"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::pull_with_progress_as (cognitive 16): smolvm::cli::pull_with_progress_as has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/mod.rs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4462a2ce50034efb67801c6ed7f41cc3faf326f9dc076ac9386d5b72d0d1f53"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::pack_run::daemon_status (cognitive 16): smolvm::cli::pack_run::daemon_status has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (16 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":2654}}}],"partialFingerprints":{"codehealthFindingId/v1":"e601450a2807e90b5ae0ca005b4c14dd13ca1a3152043314f4af8730cf7d0ae5"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::cli::vm_common::start_vm_default (cognitive 16): smolvm::cli::vm_common::start_vm_default has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (15 pts), boolean chains 1 (nesting depth added 8). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":2463}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea2d3f83075137211857001f21004b2abd04770827a174837385d94f30f4a3bd"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::portable_checkpoint::validate_capture_profile (cognitive 16): smolvm::portable_checkpoint::validate_capture_profile has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, boolean chains 3. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":3727}}}],"partialFingerprints":{"codehealthFindingId/v1":"595cc2b35de83f3b6e0415cfe36aa2938d7989dd5dee6568a6ab09603ba0a062"}},{"ruleId":"D2","level":"warning","message":{"text":"smolvm::portable_checkpoint::copy_verified (cognitive 16): smolvm::portable_checkpoint::copy_verified has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 2, loops 1 (2 pts), match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5418}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ce9d73918acd7154ff5f7ef882e9d91561505bb7d3e5f7c52c1722b003fcfff"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_cuda::host::dispatch: FunctionTooLong \u2014 smolvm_cuda::host::dispatch runs 1246 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1146 over it, 12.46\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":4714}}}],"partialFingerprints":{"codehealthFindingId/v1":"a81c0fcb02d70aa0adf853ae917034ab5184eccd7082ff20924b427f12f6a562"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::agent::launcher::launch_agent_vm: FunctionTooLong \u2014 smolvm::agent::launcher::launch_agent_vm runs 1201 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1101 over it, 12.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"e312e048e7787e1d1a7387708946ab6f63376bce5d1f9277ba64415a5de26740"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/main.rs: FileTooLong \u2014 4956 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 128 free functions. The bar is 500 significant lines; this is 4456 over it, 9.91\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"773d3bfe0e342fec2829a43a64a230654722c6291c6cd8c8f2ebb87cdd5a7519"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: handlers/machines.rs: FileTooLong \u2014 4573 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 109 free functions. The bar is 500 significant lines; this is 4073 over it, 9.15\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"032c4e1a7a5c3fbb6345a0fdde204ad8d9e7d6c2cf97ae2a30bdf47ee2d364dd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/host.rs: FileTooLong \u2014 4500 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 130 free functions. The bar is 500 significant lines; this is 4000 over it, 9.00\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecc8841ebaa9139c967182aa9f3c96a4871796178e313563c6463cbd0c00d77e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/portable_checkpoint.rs: FileTooLong \u2014 4224 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 155 free functions. The bar is 500 significant lines; this is 3724 over it, 8.45\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a49f50fa9f9295b5d78d02fa2c32786ce4c9b08440160d08845fa2b83e4157b9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 4222 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 242 free functions. The bar is 500 significant lines; this is 3722 over it, 8.44\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"51a644859c1d3d6f0fc7eb93b01179b7190d8ae95a01b2059d5f916bfbb51ef9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cli/machine.rs: FileTooLong \u2014 4143 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 35 free functions. The bar is 500 significant lines; this is 3643 over it, 8.29\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a1f6d1d4f7a7fa82b5beed2f01aae45ffda865926d4d28d05e9de476b965495"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/cuda_daemon.rs: FileTooLong \u2014 4076 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 142 free functions. The bar is 500 significant lines; this is 3576 over it, 8.15\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f5426e488a633a4b5533ee0a32bff3ddfb412c5b0bffc32d15806a2bd6dd303"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/storage.rs: FileTooLong \u2014 3934 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 163 free functions. The bar is 500 significant lines; this is 3434 over it, 7.87\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c3a7590a590ba86760f8f7386e2c745fbc1f1b7ca095b6584363fe954c41b9e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RunCmd.run: MethodTooLong \u2014 run runs 774 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 674 over it, 7.74\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":1384}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c9a76f1188b631742f4c74d0b5a2e416f7c2ec0ee9be4241a04e3764d26698b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::api::handlers::machines::create_machine_to_end: FunctionTooLong \u2014 smolvm::api::handlers::machines::create_machine_to_end runs 665 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 565 over it, 6.65\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":2666}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f19c8ba250e4699d8733e7996c8e585909661ba884c67588f82631745b9ba34"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::portable_checkpoint::capture_with_completion: FunctionTooLong \u2014 smolvm::portable_checkpoint::capture_with_completion runs 649 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 549 over it, 6.49\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":1951}}}],"partialFingerprints":{"codehealthFindingId/v1":"c24d32410d0f2774ee6fbbe1d6f9c1bda1ead7031e79409dada80c7df92113ce"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: host/gpu.rs: FileTooLong \u2014 3200 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 67% of them inside a single declaration: GpuBackend (5 blocks, 97-4324). The bar is 500 significant lines; this is 2700 over it, 6.40\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"521fa41dc8673fd00ed9a41029914f10033eab13639c8d5fcfeaed8abaffa36b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/extract.rs: FileTooLong \u2014 2891 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 129 free functions. The bar is 500 significant lines; this is 2391 over it, 5.78\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f469522876e045cd15a26c8921196be83997b7460d63591d9393917bb36fdbc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_cuda::proto::encode_request: FunctionTooLong \u2014 smolvm_cuda::proto::encode_request runs 576 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 476 over it, 5.76\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/proto.rs"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"15424fe2bf5de7e6bd39e9eed2cf0e84d471cf6f34c24e8e1de402468face011"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 2806 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 217 free functions. The bar is 500 significant lines; this is 2306 over it, 5.61\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3f5a8a7c370f93a112d7df0da5ec8f7734ef4c76cb172259b69514f7376da8f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: agent/fork.rs: FileTooLong \u2014 2787 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 117 free functions. The bar is 500 significant lines; this is 2287 over it, 5.57\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dba4ffea41cf1a33d3ef3e3eba6583521a2a647803425cfac476894fd45859a2"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: GpuBackend: ClassTooLong \u2014 2148 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 11 methods, 5 blocks, lines 97-4324. The bar is 400 significant lines; this is 1748 over it, 5.37\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dfa8dd266d2a3c5cd18ea7f2741e279dc1d99303acdf333c2d0b2ad3345e626"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::agent::launcher_dynamic::launch_agent_vm_dynamic: FunctionTooLong \u2014 smolvm::agent::launcher_dynamic::launch_agent_vm_dynamic runs 511 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 411 over it, 5.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher_dynamic.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"1db9f7ffbedb23a025c7aa796902ddcf0e10043d866201b22b4b74d42fdf039a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cli/vm_common.rs: FileTooLong \u2014 2424 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 72 free functions. The bar is 500 significant lines; this is 1924 over it, 4.85\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"49eb5e3aaa5ae3248309c737a052c001f35c1fa9c2498c1b4191ddc909a4481b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cuda_daemon::spawn_clone_worker: FunctionTooLong \u2014 smolvm::cuda_daemon::spawn_clone_worker runs 478 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 378 over it, 4.78\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":5348}}}],"partialFingerprints":{"codehealthFindingId/v1":"8db68c3c222cdc5f8df3d4c49b626905ac048e57558a114789956b7560555f7b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CreateCmd.run_from_smolmachine: MethodTooLong \u2014 run_from_smolmachine runs 467 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 367 over it, 4.67\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":5067}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a4be437394e611d83bd8380b8bed8d9c519429ed5424a7d66947fd18602c842"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/process.rs: FileTooLong \u2014 2249 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 103 free functions. The bar is 500 significant lines; this is 1749 over it, 4.50\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/process.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c031566458ff763c0d007bbb277a3931b4c522a3b129f40fcfb77fb13eb9e5e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Client: TooManyMethods \u2014 132 methods. The bar is 30 methods; this is 102 over it, 4.40\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/client.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"69b0f3674250c36c1f0cbedfa8273c2be2e717bd8069a623ea48a387c3fc65b9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: GpuBackend: TooManyFields \u2014 132 stored fields beside 11 methods. The bar is 30 stored fields; this is 102 over it, 4.40\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4fcfe178505cc154bb2a1e656caf8265612174dc32a15ba6ab63bda562c34c2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: agent/manager.rs: FileTooLong \u2014 2177 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 70% of them inside a single declaration: AgentManager (3 blocks, 1069-4112), declaring 58 free functions. The bar is 500 significant lines; this is 1677 over it, 4.35\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0b5f8f5c4d0886f1bcae570aae70450c85de9021e291ee42fbd7d46b6f851e0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: agent/client.rs: FileTooLong \u2014 2170 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 69% of them inside a single declaration: AgentClient (2 blocks, 1115-3881). The bar is 500 significant lines; this is 1670 over it, 4.34\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"46bdd18c16599bc259c6e19a13e92ba5d2a164d02d2627685b7ac77b1e03b855"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/store.rs: FileTooLong \u2014 2100 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 73 free functions. The bar is 500 significant lines; this is 1600 over it, 4.20\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"16ae2c10195e996f0603d0262714517a5e845a0ab4dd33f5c2559d502d1f6d23"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AgentManager.start_via_subprocess: MethodTooLong \u2014 start_via_subprocess runs 410 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 310 over it, 4.10\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":2509}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbdac8e6a453f26c58754ed068b0d7ff08b1f84fde45f6a49a60b824f0cdf011"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SmolvmDb: ClassTooLong \u2014 1532 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 78 methods, 3 blocks, lines 196-2384. The bar is 400 significant lines; this is 1132 over it, 3.83\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/db.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"484ba3ef2071e037b3c1de76bce094b9c7039cd8104760c188765bce11aac342"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AgentManager: ClassTooLong \u2014 1532 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 76 methods, 3 blocks, lines 1069-4112. The bar is 400 significant lines; this is 1132 over it, 3.83\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":1069}}}],"partialFingerprints":{"codehealthFindingId/v1":"47adb5042f575403c94a6451e2348ae29161140065f03080cacc8a0640104b00"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AgentClient: ClassTooLong \u2014 1493 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 99 methods, 2 blocks, lines 1115-3881. The bar is 400 significant lines; this is 1093 over it, 3.73\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":1115}}}],"partialFingerprints":{"codehealthFindingId/v1":"647e9887b296b029ee6c4dbbf748e922664dc53fb5784a4539d93c49f3a3b747"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::internal_boot::run: FunctionTooLong \u2014 smolvm::internal_boot::run runs 362 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 262 over it, 3.62\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/internal_boot.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"75f90916dbd209e7bf924b3080f84d74c3f9db7aaec29ad8aa192bbaebf23306"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: agent/launcher.rs: FileTooLong \u2014 1791 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 1291 over it, 3.58\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b757b0d947878d54e16d88f09a7aca3f2ea4c020e4a7bb80712e042fd3c0da90"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::agent::fork::prepare_forks_reusing: FunctionTooLong \u2014 smolvm::agent::fork::prepare_forks_reusing runs 345 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 245 over it, 3.45\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":2534}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea318e55fdbac5970c7e788c7066ac533945f6d2bfefd0213180e1a3373e020e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/proto.rs: FileTooLong \u2014 1689 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 1189 over it, 3.38\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/proto.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a9a3926d224fe2b2c09b8f837678db148538a88c4f3739441fb677acfc6f4aa"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_cuda::proto::decode_request: FunctionTooLong \u2014 smolvm_cuda::proto::decode_request runs 334 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 234 over it, 3.34\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/proto.rs"},"region":{"startLine":1674}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a26492f5f118e2ab0071ef91bd31e89aec37a0827d56ddc5b09b886b15c27d0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cli/pack_run.rs: FileTooLong \u2014 1656 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 38 free functions. The bar is 500 significant lines; this is 1156 over it, 3.31\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"adc0abdcd4f76d9f6ba6e8dd9ad5b8234b61475aa732eafc3e7f5273d22c6daf"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::api::handlers::machines::start_machine: FunctionTooLong \u2014 smolvm::api::handlers::machines::start_machine runs 331 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 231 over it, 3.31\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":3956}}}],"partialFingerprints":{"codehealthFindingId/v1":"dccfe8d5e56da8f90a16a88e9b8dc4962f5a2d7f02ef79a5bf0c5cf36bf3671c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AgentClient: TooManyMethods \u2014 99 methods. The bar is 30 methods; this is 69 over it, 3.30\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":1115}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf53247e85fbd6e0ce656561f905b68e80c92a644001eeba9a1ed9fdc152d20c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/db.rs: FileTooLong \u2014 1619 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 95% of them inside a single declaration: SmolvmDb (3 blocks, 196-2384). The bar is 500 significant lines; this is 1119 over it, 3.24\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/db.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e12d7bc14aa180305691c3cfc246f0b0970c8570717470c62ba74ae64d59443d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cli::smolfile::build_create_params: FunctionTooLong \u2014 smolvm::cli::smolfile::build_create_params runs 313 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 213 over it, 3.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/smolfile.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"af9e4bc4676cf0e56492d6f759ae9bd53bccbfb9f9c1f5f6b52ba288b19bf959"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Client: ClassTooLong \u2014 1208 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 132 methods, 2 blocks, lines 209-2152. The bar is 400 significant lines; this is 808 over it, 3.02\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/client.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"a49b23722b79f9087402fef3de761f902cdf2d5670e3c2e4c894f76ba9fdeca8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: api/rollout.rs: FileTooLong \u2014 1488 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 988 over it, 2.98\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ad505c3309d8e97ac711112ef113b50efffebcb55bfc746851e110cb174cf99"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GpuBackend.cuda_driver_library_call: MethodTooLong \u2014 cuda_driver_library_call runs 296 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 196 over it, 2.96\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":745}}}],"partialFingerprints":{"codehealthFindingId/v1":"5865af80349a120857ae32e6086a1930308049a2569359a2177e8958ae96d738"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::storage::pull_image_with_progress_and_auth: FunctionTooLong \u2014 smolvm_agent::storage::pull_image_with_progress_and_auth runs 292 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 192 over it, 2.92\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":3221}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd9becbcf8483244bba5bf5910053216eff0b143435b9b1c39866da9650d1b82"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PackRunCmd.run: MethodTooLong \u2014 run runs 291 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 191 over it, 2.91\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"201c944d470874aa655c8e8c4232dcaaee5a8e9264f1c79b862d4694f8547ca9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: VmRecord: TooManyFields \u2014 87 stored fields beside 27 methods. The bar is 30 stored fields; this is 57 over it, 2.90\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/config.rs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"a386d703ab5441189d056fa5e3bb00e887e53d6c0ce1345522c80d4a59346b3e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cuda_daemon::reconstruct_golden_memory: FunctionTooLong \u2014 smolvm::cuda_daemon::reconstruct_golden_memory runs 289 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 189 over it, 2.89\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":2843}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f1ea7a91c85c5f90e8628c2fa4ed16d3530f7e937860ae380940b327530d62a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cli/pack.rs: FileTooLong \u2014 1416 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 916 over it, 2.83\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"78fb6b356cd633ef3c6e6e8c53fbf550aa63a8a9c2d271f5d9b37fe1cca0884a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::handle_request: FunctionTooLong \u2014 smolvm_agent::handle_request runs 283 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 183 over it, 2.83\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":2472}}}],"partialFingerprints":{"codehealthFindingId/v1":"5935d4b9050360b35d57e63b8dd886d8b847a380fea9f134b569f54efad82bc6"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::handle_run_detached: FunctionTooLong \u2014 smolvm_agent::handle_run_detached runs 280 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 180 over it, 2.80\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":4294}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec0e4967683da7432fbb2f3f8f085fe5940669d69b1aa7970f31d79e2bacca13"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cli::vm_common::start_vm_named_with_db: FunctionTooLong \u2014 smolvm::cli::vm_common::start_vm_named_with_db runs 278 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 178 over it, 2.78\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":1696}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2dc16880e2c17eaadddd43befc2609751cbfaf42fda2f1d2c15d5d847acdda0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: S3Fs.dispatch: MethodTooLong \u2014 dispatch runs 277 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 177 over it, 2.77\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/fs.rs"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8240896066cb2d154e025529a6b6860fde75534fb844d9ae8107f03697b6473"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/client.rs: FileTooLong \u2014 1328 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 91% of them inside a single declaration: Client (2 blocks, 209-2152). The bar is 500 significant lines; this is 828 over it, 2.66\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/client.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aba60fdaec25b63ae124396850438d99c2ef0e7e48e9c8e2e43cff3e0f776a6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SmolvmDb: TooManyMethods \u2014 78 methods, declared across 2 files: src/db.rs (69), db/resize.rs (9). The bar is 30 methods; this is 48 over it, 2.60\u00D7 the bar. That list is where to read them, not a suggestion to split the file: the members belong to the type wherever they are declared, so moving them between files leaves the count unchanged. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/db.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"284f345985d137b374c32200bf8f0caf57eba3aac97907a15e2d6ccd5e582b97"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: EmbeddedRuntime: TooManyMethods \u2014 78 methods. The bar is 30 methods; this is 48 over it, 2.60\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e00448001400889eeb65309f4d792669c4bfff830cc00201f8580f906a1d957"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AgentManager: TooManyMethods \u2014 76 methods. The bar is 30 methods; this is 46 over it, 2.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":1069}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d15b0726cdea41b3c5d6c81364212e956f61917d9b0524f66007f9ffeecae06"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: EmbeddedRuntime: ClassTooLong \u2014 1013 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 78 methods, 2 blocks, lines 84-1677. The bar is 400 significant lines; this is 613 over it, 2.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4ede812bacd215f2c5c110480ab8d4e5da66b16dd3172394bf40d28e97f1b9e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: CudaDeviceProp: TooManyFields \u2014 75 stored fields. The bar is 30 stored fields; this is 45 over it, 2.50\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":2481}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbf44016476712544f23be14a75183b783c4211ebc853999edfb8c9d42c580e9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_pack::extract::safe_unpack_skipping: FunctionTooLong \u2014 smolvm_pack::extract::safe_unpack_skipping runs 246 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 146 over it, 2.46\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":986}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b8ea7ef73f869bb8af93b5d63e07c1564ffc8d7fd4d536c98462db447b7da4b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PackCreateCmd.run: MethodTooLong \u2014 run runs 244 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 144 over it, 2.44\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"539c80931771a39d6fae729ec429645c6be0568b327926d0750e4c5b788d4109"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: api/state.rs: FileTooLong \u2014 1207 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 707 over it, 2.41\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/state.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2625fe12b22e03291fe5694351234a0f1e76c9710e94eabe4891103695f7df04"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: UpdateCmd.run: MethodTooLong \u2014 run runs 239 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 139 over it, 2.39\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":7127}}}],"partialFingerprints":{"codehealthFindingId/v1":"61a8148765ab3fb388fe826e7b9401670641a7b981ca882b49afa195d4c6ac8e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RunCmd: ClassTooLong \u2014 954 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 1 methods, 2 blocks, lines 535-2573. The bar is 400 significant lines; this is 554 over it, 2.39\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":535}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c4f7775a34625ce145fdad93f402dc20c53bc4a30bb22aa2649664e79d59fb7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_cuda::host::serve_rings: FunctionTooLong \u2014 smolvm_cuda::host::serve_rings runs 231 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 131 over it, 2.31\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":3394}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4c2f3f2c4a510f40852b418285cdd144c1cddbd447bbdd6fd784cbf88183bbb"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_network::stack::run_network_stack: FunctionTooLong \u2014 smolvm_network::stack::run_network_stack runs 231 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 131 over it, 2.31\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/stack.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"b707ee64d538b82fa00c0be14a85e90b5cf527e1a44bd7dd6fb000b550819c1e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: embedded/runtime.rs: FileTooLong \u2014 1105 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 92% of them inside a single declaration: EmbeddedRuntime (2 blocks, 84-1677). The bar is 500 significant lines; this is 605 over it, 2.21\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b25a9b725e91ca10fdd5a5ec7d22e755dc99e524e9afc95404d6cc284392c094"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/assets.rs: FileTooLong \u2014 1099 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 31 free functions. The bar is 500 significant lines; this is 599 over it, 2.20\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/assets.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"251cd8dddc352a20033e810b10e517cc2933c2452c85e81744e453c1d7169470"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: RunCmd: TooManyFields \u2014 65 stored fields beside 1 method. The bar is 30 stored fields; this is 35 over it, 2.17\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":535}}}],"partialFingerprints":{"codehealthFindingId/v1":"b88a126369202c53682afb6af2c54663ed6179a3fa847e70cd470807e859f442"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CudnnBn.dispatch: MethodTooLong \u2014 dispatch runs 214 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 114 over it, 2.14\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":3566}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a3c81291044aa1bd212e7b36eaef3d7339aff6d60ce7c5208c09d8b2b8d8e8c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::api::handlers::machines::restore_portable_checkpoint: FunctionTooLong \u2014 smolvm::api::handlers::machines::restore_portable_checkpoint runs 203 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 103 over it, 2.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":2103}}}],"partialFingerprints":{"codehealthFindingId/v1":"829f689c547f97eafb3087bf6f55d7ad69ff8d1bfd00753a1ed4577c8fc1da9c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RegistryClient: ClassTooLong \u2014 789 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 37 methods, 2 blocks, lines 208-1630. The bar is 400 significant lines; this is 389 over it, 1.97\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b386b23bf5520e6f710b42c60ee4b93997796916a43dccf779dc65328251241"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: CreateCmd: TooManyFields \u2014 59 stored fields beside 2 methods. The bar is 30 stored fields; this is 29 over it, 1.97\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":4435}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b70d5c41f5870f17157446b01b4e88c481695256c67215409af804626c1f1a6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/client.rs: FileTooLong \u2014 979 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 81% of them inside a single declaration: RegistryClient (2 blocks, 208-1630). The bar is 500 significant lines; this is 479 over it, 1.96\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"64c988a3bd6c7b5e2be92afae9b1fad0175b79a94757ddc6b1bcb286b510cb38"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cli::pack_run::daemon_start: FunctionTooLong \u2014 smolvm::cli::pack_run::daemon_start runs 195 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 95 over it, 1.95\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":2266}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cde8244af49ba5797a10e2b69d37dcbca82010147db4953ce434dcf53684639"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SmolvmDb.claim_fork_pool_slot: MethodTooLong \u2014 claim_fork_pool_slot runs 195 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 95 over it, 1.95\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/db.rs"},"region":{"startLine":1545}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e3d9a5436af0560e3706cc2e164a0f41561057d57c14c69a86f18619ad71798"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MonitorCmd.run: MethodTooLong \u2014 run runs 194 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 94 over it, 1.94\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":8052}}}],"partialFingerprints":{"codehealthFindingId/v1":"2da0e78cc537ad8fccd6929b4430f5259172ea702cc34031c13c2de57a587fc8"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cli::pack_run::run_from_cache: FunctionTooLong \u2014 smolvm::cli::pack_run::run_from_cache runs 193 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 93 over it, 1.93\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":1856}}}],"partialFingerprints":{"codehealthFindingId/v1":"765130a9a30aea88595187807f9d15bbbf6aaff9ab631a1859e65dda7fe28122"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::setup_persistent_rootfs: FunctionTooLong \u2014 smolvm_agent::setup_persistent_rootfs runs 192 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 92 over it, 1.92\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":1197}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e1dd083f30e4b5799d28ce9dc6a74cccee3dab5e3de71473ee5f739c6bf92e2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LibkrunVm.exec_vm: MethodTooLong \u2014 exec_vm runs 192 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 92 over it, 1.92\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f9407874ade41ec9d3f3617120d29115cc877f17373a75d5f72484c7f35062d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: handlers/pools.rs: FileTooLong \u2014 956 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 456 over it, 1.91\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/pools.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"da84ccf7b92a381523ca4d895a37f79305dc5be3285b0bbfa816e81aad32c85d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: CreateVmParams: TooManyFields \u2014 57 stored fields beside 3 methods. The bar is 30 stored fields; this is 27 over it, 1.90\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ddeff8baf924ea2ea528fb9387d83201d931e29e2c0bcbe84389f1321756784"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/pod.rs: FileTooLong \u2014 945 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 36 free functions. The bar is 500 significant lines; this is 445 over it, 1.89\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/pod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"71a8db8555a81c051aa87f77709264df2418f05e0d2f37029f520a7f14dc7752"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::portable_checkpoint::install_with: FunctionTooLong \u2014 smolvm::portable_checkpoint::install_with runs 189 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 89 over it, 1.89\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5925}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa244add187f3d0220275522c4cdb0efd3ab576607e20f3209eaaba1be247def"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CreateCmd: ClassTooLong \u2014 750 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 2 methods, 2 blocks, lines 4435-5714. The bar is 400 significant lines; this is 350 over it, 1.88\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":4435}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfbbc91b60a705693d35d6a8842ab58c3e5a11d36c202f6fc579605b5f3f8ab1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/config.rs: FileTooLong \u2014 937 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 75% of them inside a single declaration: VmRecord (2 blocks, 425-1680). The bar is 500 significant lines; this is 437 over it, 1.87\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/config.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f4945c3bcfb06e8e0bf42248c5194e236ebe17412d594290e36ced9b966a475"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: api/admission.rs: FileTooLong \u2014 935 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 435 over it, 1.87\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/admission.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f698c50dd8f938111fa7fbd6e9622f75f46a83b8b70d9d59b33625669b798d0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: State.forward: MethodTooLong \u2014 forward runs 186 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 86 over it, 1.86\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-credentials/src/intercept.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"126c1e846ab7e94e440b99e7920575cb6193a0cad14fd46629a78b8714fdfd40"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cuda_daemon::route_clone_connection: FunctionTooLong \u2014 smolvm::cuda_daemon::route_clone_connection runs 185 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 85 over it, 1.85\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":3968}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9e206cc5ed25c19b42b49a78ac8b22a4f8df2269c9035cd5c4dac47c5695809"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_cuda::host::translate_dptrs: FunctionTooLong \u2014 smolvm_cuda::host::translate_dptrs runs 184 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 84 over it, 1.84\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":2790}}}],"partialFingerprints":{"codehealthFindingId/v1":"14c9203137ca751a1ec6981eee66a561d46529e69c86b667573e46985d8a6084"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cuda_daemon::reconstruct_golden_modules: FunctionTooLong \u2014 smolvm::cuda_daemon::reconstruct_golden_modules runs 182 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 82 over it, 1.82\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":3311}}}],"partialFingerprints":{"codehealthFindingId/v1":"5037752cd1ff38c4e3721f8cab557075e144db9e298782ff233b418ed9756279"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cuda_daemon::run_clone_worker: FunctionTooLong \u2014 smolvm::cuda_daemon::run_clone_worker runs 181 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 81 over it, 1.81\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":2078}}}],"partialFingerprints":{"codehealthFindingId/v1":"42b081117ed1678d7c749332649acf139a2c1c11b4a8c51ccde9be0c829e3af3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ServeStartCmd.run_server: MethodTooLong \u2014 run_server runs 180 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 80 over it, 1.80\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/serve.rs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2fbed8418973ad873720a38aca658d00abc3d891275a23ad15cb07f458d89a7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::handle_connection: FunctionTooLong \u2014 smolvm_agent::handle_connection runs 179 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 79 over it, 1.79\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":2138}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c6664b237486c375695857611e899863aac49393bb4e86f875fa0d006c07693"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::run_interactive_loop: FunctionTooLong \u2014 smolvm_agent::run_interactive_loop runs 178 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 78 over it, 1.78\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6033}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec028abbef26bfc22f8fa50bb5b92373d7c24b15eeff9eed3b9eb45046712364"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ApiState: TooManyMethods \u2014 53 methods. The bar is 30 methods; this is 23 over it, 1.77\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/state.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"33688bb46afef10c464377d80478a832ecec0cec9dfaad3adb54a2038efdb750"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RolloutExecutor: ClassTooLong \u2014 706 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 16 methods, 2 blocks, lines 692-1665. The bar is 400 significant lines; this is 306 over it, 1.77\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"77430b2764628372274b94e81e74b3fa4abc5a1b861b199d620dc335c04c8d81"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/oci.rs: FileTooLong \u2014 879 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 31 free functions. The bar is 500 significant lines; this is 379 over it, 1.76\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/oci.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4e45e073b6a0b1112157c1eb2a7dc6f4054abea71930201fb848c1d2a1e5412"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/image_seed.rs: FileTooLong \u2014 878 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 38 free functions. The bar is 500 significant lines; this is 378 over it, 1.76\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/image_seed.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"17a0331eb7ea4fd9725f74bed2e1f88d2f230798c4d9b4ecf8477c7cd66ae320"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: VmRecord: ClassTooLong \u2014 702 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 27 methods, 2 blocks, lines 425-1680. The bar is 400 significant lines; this is 302 over it, 1.76\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/config.rs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8912431e98a3063ad1dd38584e7e3ea4d3653910ce264915d8d3c73028752cc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/pack_export.rs: FileTooLong \u2014 877 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 377 over it, 1.75\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pack_export.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f689d88dcf0caa3d7636b3b8cfdbafaa06026196123423ccd11a9666ac59659"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PoolAdmissionState.observe: MethodTooLong \u2014 observe runs 174 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 74 over it, 1.74\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/admission.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7885aa4da2173ddf8ee05cd8c3316430ee15efff1d1f08a66d9da3eb6983029"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GpuBackend.load: MethodTooLong \u2014 load runs 172 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 72 over it, 1.72\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"81eba1387ad8626f7b6c89eb2b75b7127fbc5a81f6617507e4facc7b9a1c6c42"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ApiState: ClassTooLong \u2014 687 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 53 methods, 2 blocks, lines 68-1534. The bar is 400 significant lines; this is 287 over it, 1.72\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/state.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2bbd85162050dc4d027d2f3f92198a64725e7b8cbb8f3ae95c438f74058ce9c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: api/types.rs: FileTooLong \u2014 858 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 358 over it, 1.72\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/types.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"af32b7775be33383dbcc42d83544ff27bb637ee5fed7c7a2a0afc7ce9cbefe48"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/artifact_cache.rs: FileTooLong \u2014 857 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 48 free functions. The bar is 500 significant lines; this is 357 over it, 1.71\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/artifact_cache.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"120f5fe7b40dcf678fca8d11438c73df70162e73714013fe0311c56e46fb9aec"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/tcp_relay.rs: FileTooLong \u2014 853 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 353 over it, 1.71\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_relay.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a54e8afd961f067c2220f7a66d7643172ac91e6cf1dfd7a33864fbedd5c704"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::api::handlers::machines::capture_portable_checkpoint: FunctionTooLong \u2014 smolvm::api::handlers::machines::capture_portable_checkpoint runs 165 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 65 over it, 1.65\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"30763ede28172eef79e820b93dadced266ee4651b8cd7ae2b94ecbb937a98a36"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cli::vm_common::fork_vm_batch: FunctionTooLong \u2014 smolvm::cli::vm_common::fork_vm_batch runs 165 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 65 over it, 1.65\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"30872274ea909a0ca0e22477d9fb8e184310af45699044b0a396af37acd57e50"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/stack.rs: FileTooLong \u2014 812 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 312 over it, 1.62\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/stack.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfddf4bb1430a04780052ace0647bf944aa376e3d2fcb3ac57ca3a765077b999"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PackCreateCmd: ClassTooLong \u2014 647 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 11 methods, 2 blocks, lines 422-1602. The bar is 400 significant lines; this is 247 over it, 1.62\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"3567573980c3cc12d7828627abea940703548be9b759b35f71ecccbb9b23d30d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/engine.rs: FileTooLong \u2014 807 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 307 over it, 1.61\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-shim/src/engine.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ffedc88309f48c9d1eaec60559f357dede23f8727a730e20400b87e9fe82acc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_cuda::host::execute_auto_graph_segment: FunctionTooLong \u2014 smolvm_cuda::host::execute_auto_graph_segment runs 160 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 60 over it, 1.60\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":4223}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a2892339cb9adc45cffee0915d68f8ea9cc86f12813833f8824bca733a5e983"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: S3Fs: ClassTooLong \u2014 634 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 22 methods, 3 blocks, lines 158-1139. The bar is 400 significant lines; this is 234 over it, 1.59\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/fs.rs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"499b7da38511cbb930c3f87f90a6c0843d7686cce16a6eb2d8f26c0cdd222817"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CublasLt.dispatch: MethodTooLong \u2014 dispatch runs 157 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 57 over it, 1.57\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":3089}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc308521b492151b5d0033578e6746f1e3c47973269a5d98ea45d5112b8da0ec"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::api::create_router: FunctionTooLong \u2014 smolvm::api::create_router runs 157 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 57 over it, 1.57\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/mod.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"e61db7870f986c1597975c4447998a445c3e2f9d91cf4095d9fbe4f4b2f8b7a1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GpuBackend.graph_exec_patch: MethodTooLong \u2014 graph_exec_patch runs 155 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 55 over it, 1.55\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":2133}}}],"partialFingerprints":{"codehealthFindingId/v1":"73725948ecca9f95512cc716071793e2bfcf702c34d647f41d6d354c4e218b45"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/main.rs: FileTooLong \u2014 771 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 271 over it, 1.54\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-codegen/src/main.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b16dd9652375697511191c309da67045cffbd76860efbd91ce427cbde7d71d04"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: handlers/exec.rs: FileTooLong \u2014 768 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 268 over it, 1.54\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5746c37abd2f8091304c8b871450a4cc1e7fae833af592f386b29ee03f9926e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: Session: TooManyFields \u2014 46 stored fields beside 1 method. The bar is 30 stored fields; this is 16 over it, 1.53\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":693}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f82dec3d84ed1bc4b99992f3ab992a9e1ef736219e004029891915c71af1a5f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::api::handlers::pools::acquire_lease_inner: FunctionTooLong \u2014 smolvm::api::handlers::pools::acquire_lease_inner runs 153 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 53 over it, 1.53\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/pools.rs"},"region":{"startLine":804}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a3b35908509200e9a4f1f083fa02ff8c183e1da156e4850abd5d909abad95fa"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NvmlSampler.new: MethodTooLong \u2014 new runs 149 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/admission.rs"},"region":{"startLine":1034}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c00e04a2581d0e6b19f4af47f3283813d532fb5b3bdeb60e7edee0679fd603e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CreateCmd.run: MethodTooLong \u2014 run runs 148 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 48 over it, 1.48\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":4849}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cc6d3b0973c6e1b40401c42d57fcfa1069ccb63da0f93b2c4efdefb79f09bbc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: agent/launcher_dynamic.rs: FileTooLong \u2014 733 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 233 over it, 1.47\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher_dynamic.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8769e16af7625f2f7c3328754386e3d7821621aa2a02e850836b35e9459e18f8"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::test_tcp_syscall: FunctionTooLong \u2014 smolvm_agent::test_tcp_syscall runs 145 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 45 over it, 1.45\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6688}}}],"partialFingerprints":{"codehealthFindingId/v1":"538759801bae18bf9d84f75f522414bda6a87fd710b7a0791a5515e52aba295a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::main: FunctionTooLong \u2014 smolvm_agent::main runs 144 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 44 over it, 1.44\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"91ccbbf271857875b4739493a095c6d0e46ca5774f71dda68f37d1a4f159cec0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/fs.rs: FileTooLong \u2014 711 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 89% of them inside a single declaration: S3Fs (3 blocks, 158-1139). The bar is 500 significant lines; this is 211 over it, 1.42\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/fs.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d51bc3bbb22d2803618a05393acbdfcc42a43dd244f701a71c3a181115dfecff"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::run_interactive_loop_pty: FunctionTooLong \u2014 smolvm_agent::run_interactive_loop_pty runs 141 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 41 over it, 1.41\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6339}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d4016faad134946ae46be2ebc880e076435054821b10490fa81c80a16ddf8aa"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::api::handlers::machines::boot_prepared_fork_inner: FunctionTooLong \u2014 smolvm::api::handlers::machines::boot_prepared_fork_inner runs 141 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 41 over it, 1.41\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":5318}}}],"partialFingerprints":{"codehealthFindingId/v1":"53d26657f076957fb83ac37b971b47908c8d2fdf24a9f5f1dc0a41c96a845485"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 704 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 204 over it, 1.41\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-protocol/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee4518c1b335f94b2e73ae21045f679b422aa57e2052b354185876454ae789cf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: MachineInfo: TooManyFields \u2014 42 stored fields. The bar is 30 stored fields; this is 12 over it, 1.40\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/types.rs"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"602ce31cdf2591b4b2127c43ccecdf0c31274aaccb46fc01ca329df92ecc5b78"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: agent/vnc.rs: FileTooLong \u2014 697 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 197 over it, 1.39\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"31fc8f3fd4ca744017c881a25bf8d9d64faebc046d1a45c32b018ff8b42db3ec"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExecCmd.run: MethodTooLong \u2014 run runs 138 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 38 over it, 1.38\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":4146}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a6743cd19d7e61185ef13be554159ed03b0c46f1a0e95b749f674730e445558"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/macho.rs: FileTooLong \u2014 685 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 185 over it, 1.37\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/macho.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7331bc928ee5cf9ae13b653aff4440429309df887aa9034b7cd11f1a23040a37"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::agent::vnc::run_client: FunctionTooLong \u2014 smolvm::agent::vnc::run_client runs 136 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 36 over it, 1.36\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"db98534fa674c34cd07d0778cf79390203dffbc3434a36cda83930d5e72400c9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/nsfile.rs: FileTooLong \u2014 672 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 172 over it, 1.34\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/nsfile.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5c332c6a9ce66f03a08c232a49923c3106b74a7704832f7fd8846b91466747b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cli/serve.rs: FileTooLong \u2014 672 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 65% of them inside a single declaration: ServeStartCmd (2 blocks, 58-885). The bar is 500 significant lines; this is 172 over it, 1.34\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/serve.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"376b7fe7d5b8e07d29ab715467ce0cc736f39406841c104f6425420d4e8264cc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cli::vm_common::build_vm_record_for: FunctionTooLong \u2014 smolvm::cli::vm_common::build_vm_record_for runs 134 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 34 over it, 1.34\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":715}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd4b451325162ef6bd6360718d850f9e0b5b5d5985c9a76f4e32222f2d111daf"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RolloutExecutor.publish_device_policy: MethodTooLong \u2014 publish_device_policy runs 133 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 33 over it, 1.33\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":1102}}}],"partialFingerprints":{"codehealthFindingId/v1":"c967f2db573381de5bbdd42c6f8ed0c26c0e64a25f523dcdaf96d61d3e3067bd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: KrunFunctions: TooManyFields \u2014 39 stored fields beside 5 methods. The bar is 30 stored fields; this is 9 over it, 1.30\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/krun.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ef68127c4a5f192406d3b32679e2a5e7058821836245d09aea93f33209309b0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: fork/compact.rs: FileTooLong \u2014 649 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 149 over it, 1.30\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork/compact.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"251dde6751c56cccaf8753b36760f2963cba604fcadd0eeaed1d2288b06a95cc"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: UpdateCmd: ClassTooLong \u2014 519 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 8 methods, 2 blocks, lines 6708-7491. The bar is 400 significant lines; this is 119 over it, 1.30\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":6708}}}],"partialFingerprints":{"codehealthFindingId/v1":"253335bf9fc4901c42cd64650c67086f3556774522093c6a085a201a9ddf71ce"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ForkPoolController: ClassTooLong \u2014 517 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 13 methods, 2 blocks, lines 70-788. The bar is 400 significant lines; this is 117 over it, 1.29\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/pool_controller.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9ddafe3ed8e6875f1db6e6c23a1c01c075f2cf6ac620d9f44940138e390dc11"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::portable_checkpoint::stage_disk_chains_with_links: FunctionTooLong \u2014 smolvm::portable_checkpoint::stage_disk_chains_with_links runs 129 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 29 over it, 1.29\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":4839}}}],"partialFingerprints":{"codehealthFindingId/v1":"3df59c665098521244f8504e37cf446fbcfeda92d919e7950fdbb7b4e4aaf321"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/packer.rs: FileTooLong \u2014 642 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 142 over it, 1.28\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/packer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1fc9d8a5635b373c91d96f9f9ab65c4be4e2f6b48cde1202354873ada27c1d7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: agent/video.rs: FileTooLong \u2014 637 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 137 over it, 1.27\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/video.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e092e316491e02d9c2248a03486cb2fb3563f17e1c7b26cf6b864c52752d76e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: DefaultVmOverrides: TooManyFields \u2014 38 stored fields beside 1 method. The bar is 30 stored fields; this is 8 over it, 1.27\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":2276}}}],"partialFingerprints":{"codehealthFindingId/v1":"222c533e4c8c9df5ca686b5d4bcb85b5afa84697b40b7a01630f8cf2f01e11cf"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::handle_vm_exec: FunctionTooLong \u2014 smolvm_agent::handle_vm_exec runs 126 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 26 over it, 1.26\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":8090}}}],"partialFingerprints":{"codehealthFindingId/v1":"c248c13ecba2d7cc9a1c05b782f10c1b6cd4c105107f12f17b78a276421813d4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/pack_seed.rs: FileTooLong \u2014 628 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 128 over it, 1.26\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pack_seed.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"61dcf9da522331cd5ba66821a03dc5e5ad12713bd9880225cdeaf02b7c11ac8c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_network::tcp_relay::tcp_relay_loop: FunctionTooLong \u2014 smolvm_network::tcp_relay::tcp_relay_loop runs 125 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 25 over it, 1.25\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_relay.rs"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"0618863636f23a3c732e465c9f9a2acddc7eee8b767593d447526909fc671e0a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cuda_host::proxy_to_daemon: FunctionTooLong \u2014 smolvm::cuda_host::proxy_to_daemon runs 124 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 24 over it, 1.24\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_host.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1ce508762d8608ff51bc94a45f2dfa698f0785ad471f66d716c6cc242e09356"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CrunCommand: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/crun.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"be97de1e112e317f15056c427a2a62ded05e016f2c8096d9afd6c3fdc3d78fbe"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RegistryClient: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"03909723bcd17a8393b2776d12ae9b9d667c1804ae6afe35a40b8d9a20f5eff6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ForkPoolController.fill_pool: MethodTooLong \u2014 fill_pool runs 123 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 23 over it, 1.23\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/pool_controller.rs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"92efa018bf4f7158510f787e98ddf699ba4afb952e9e9cbbc73fc5b146e35054"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: agent/live_resize.rs: FileTooLong \u2014 613 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 113 over it, 1.23\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/live_resize.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c64666b2933dff0b69d016bc421c5470fe259c2e694cf1d9e4f81f47a7f1400"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::handle_interactive_run: FunctionTooLong \u2014 smolvm_agent::handle_interactive_run runs 122 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 22 over it, 1.22\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":3946}}}],"partialFingerprints":{"codehealthFindingId/v1":"4287a67dbd3280fbf23bb1a787cd288a344e32cda7a17bf96b01c8292117cabc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AgentManager.wait_for_ready: MethodTooLong \u2014 wait_for_ready runs 122 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 22 over it, 1.22\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":3792}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fb16eb6646db1c2b8ef81e3f24d05663942ebc0c4272d487edb0dfede9c303e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cli::machine::ensure_init_layer: FunctionTooLong \u2014 smolvm::cli::machine::ensure_init_layer runs 121 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 21 over it, 1.21\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":1138}}}],"partialFingerprints":{"codehealthFindingId/v1":"d85386f1760c1cc4dad8b8cd613066decdc65c8ab997d61fd815a84c71b42581"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GpuBackend.gen_lib_call: MethodTooLong \u2014 gen_lib_call runs 120 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 20 over it, 1.20\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":4169}}}],"partialFingerprints":{"codehealthFindingId/v1":"e509f12000c90c918b24bbfe53b81a08d7a0d6af75fd51e3b878ff4831546d00"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::agent::fork::build_rejuvenation_script: FunctionTooLong \u2014 smolvm::agent::fork::build_rejuvenation_script runs 120 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 20 over it, 1.20\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":3538}}}],"partialFingerprints":{"codehealthFindingId/v1":"be871bbd85c7ccab0c8abfc013cb8c01269249152f73bc4ca7e76e3571f3cab5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: Smolfile: TooManyFields \u2014 36 stored fields. The bar is 30 stored fields; this is 6 over it, 1.20\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-smolfile/src/lib.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cbdebf383303002766c86d427ae4ecfad6db903a56156fa46f0c13c4f5a3b49"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_cuda_shim::proc_table: FunctionTooLong \u2014 smolvm_cuda_shim::proc_table runs 119 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 19 over it, 1.19\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":3817}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7636cb26bd0796a3732539474570eb254cde69f1eb494424ee0e12429064fb0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/intercept.rs: FileTooLong \u2014 593 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 93 over it, 1.19\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-credentials/src/intercept.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"69edc2410f6f0e20d19025f2994ceebdfb3342750ba6c220740c3dedeb4bd81b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ForkCmd.run: MethodTooLong \u2014 run runs 118 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":6044}}}],"partialFingerprints":{"codehealthFindingId/v1":"67ba7ed1c76cb75e277499511a0ca41f33d21ddf8ffc038581265f186740882a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_checkpoint::store::materialize_generation: FunctionTooLong \u2014 smolvm_checkpoint::store::materialize_generation runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":2197}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d8a10629772557f4043b7911186884c1fc6ea62c9e397f147988f0cfb3a07ca"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::api::handlers::machines::resize_machine: FunctionTooLong \u2014 smolvm::api::handlers::machines::resize_machine runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":6616}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a579bbb594a741980eb81231ccf4d4d12f5d43b0e577efa36621d3197786530"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: CreateMachineRequest: TooManyFields \u2014 35 stored fields. The bar is 30 stored fields; this is 5 over it, 1.17\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/types.rs"},"region":{"startLine":752}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e13d3605469a056aeade3a88ad588a4ac8baa2e243b087af7645cf03807f90d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: api/pool_controller.rs: FileTooLong \u2014 576 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 90% of them inside a single declaration: ForkPoolController (2 blocks, 70-788). The bar is 500 significant lines; this is 76 over it, 1.15\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/pool_controller.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4d470bbed668ba1522dd25c2471e8c9da9381cd94edb4945bb730b64a5e8330"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ApiState.complete_machine_registration: MethodTooLong \u2014 complete_machine_registration runs 114 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 14 over it, 1.14\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/state.rs"},"region":{"startLine":1216}}}],"partialFingerprints":{"codehealthFindingId/v1":"1115e58b5eb54d598b77cc65ec937b5acc0c6faf3cbce9425c24d02fa98e11fd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: smolvm_nvml_shim: TooManyFunctions \u2014 34 free functions. The bar is 30 free functions; this is 4 over it, 1.13\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-nvml-shim/src/lib.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e631583406f5491ee913640a6905aa2654721db33e3e21c3770702f1197870"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: UpdateCmd: TooManyFields \u2014 34 stored fields beside 8 methods. The bar is 30 stored fields; this is 4 over it, 1.13\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":6708}}}],"partialFingerprints":{"codehealthFindingId/v1":"a05ebf8a07a29d46d450fc16776c804c559f59d3884c033bf76121d068f7781c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::embedded::control::fork_vm_batch: FunctionTooLong \u2014 smolvm::embedded::control::fork_vm_batch runs 113 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/control.rs"},"region":{"startLine":586}}}],"partialFingerprints":{"codehealthFindingId/v1":"29ce4ff4753b2df58888c7d64c6c2cdbb89f227597b6afff528821dd3028fde4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::portable_checkpoint::restore_from_path_at: FunctionTooLong \u2014 smolvm::portable_checkpoint::restore_from_path_at runs 113 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":868}}}],"partialFingerprints":{"codehealthFindingId/v1":"d14853325ecd7d92ac4d9318823e85ef4e22f9b4e3387823e0f5007a52a9f011"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: embedded/control.rs: FileTooLong \u2014 553 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 53 over it, 1.11\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/control.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b999ec11ff651657876851a37022b478acb4fe6e8cb30f9d27f3749ca0a6ae8c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::agent::vnc::read_client_messages: FunctionTooLong \u2014 smolvm::agent::vnc::read_client_messages runs 110 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 10 over it, 1.10\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc.rs"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c8dcfb0d632a81e54c9f61df23f4066b949a52d6f479690439ee7db1db796fa"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ServeStartCmd: ClassTooLong \u2014 437 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 5 methods, 2 blocks, lines 58-885. The bar is 400 significant lines; this is 37 over it, 1.09\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/serve.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"d888adcc81877b6c28dc30e628416cb6dd3257fb7d18441bcee87d7acf69617c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::agent::fork::prepare_running_disk_generation: FunctionTooLong \u2014 smolvm::agent::fork::prepare_running_disk_generation runs 109 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 9 over it, 1.09\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":1021}}}],"partialFingerprints":{"codehealthFindingId/v1":"41939d68391caaa0b2479f417e057b93e88935c3c53727b27e5a78894170bf74"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/egress.rs: FileTooLong \u2014 544 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 44 over it, 1.09\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/egress.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"877e8f45113761174104e0ebe7c7a83257d401c6a56cec3d3fb9eef10850a4ec"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Writer: ClassTooLong \u2014 432 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 16 methods, 3 blocks, lines 173-785. The bar is 400 significant lines; this is 32 over it, 1.08\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdf4a99a6b1654439ca19770944d58913e22a6b357def238653067dc0a342e3c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::api::handlers::machines::fork_machine_transaction: FunctionTooLong \u2014 smolvm::api::handlers::machines::fork_machine_transaction runs 108 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 8 over it, 1.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":4950}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ced40c2e6c0d0556d9324e675217a46fa1bbb4c3f70bd6b771e2e24cade1186"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Op.from_u8: MethodTooLong \u2014 from_u8 runs 107 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 7 over it, 1.07\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/proto.rs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"a85a48fff4e85ada11d833c2e439ad152cea719ebff949ec705c4c6d8a4505ea"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cuda_daemon::run: FunctionTooLong \u2014 smolvm::cuda_daemon::run runs 107 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 7 over it, 1.07\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":1390}}}],"partialFingerprints":{"codehealthFindingId/v1":"177aebf6eb5aea1aad66dce589e434d9691ccdc915f0bd14d967ad9c9cc6fb8e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_cuda::host::replay_capture_graph: FunctionTooLong \u2014 smolvm_cuda::host::replay_capture_graph runs 106 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 6 over it, 1.06\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":4564}}}],"partialFingerprints":{"codehealthFindingId/v1":"edb7110db0dda8e9586fcb5326e0c47805d60515a7cad378841600615efd1ef0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::cli::vm_common::list_vms: FunctionTooLong \u2014 smolvm::cli::vm_common::list_vms runs 106 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 6 over it, 1.06\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":3663}}}],"partialFingerprints":{"codehealthFindingId/v1":"960f5eb21bad4f6f065f3523115c4ad1e354ca9cf179233a666f11ef499d9eb8"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::storage::oci_archive_compatibility: FunctionTooLong \u2014 smolvm_agent::storage::oci_archive_compatibility runs 105 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":1997}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0b17853629600dba70da5cc07809317b2cafc9eff35a5c75af60a3c062ad832"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::agent::fork::prepare_clone_from_snapshot: FunctionTooLong \u2014 smolvm::agent::fork::prepare_clone_from_snapshot runs 105 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":3153}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a637b13b847ea519b16036c5a2ceba2b7f448e6cdd4b124d53ee78de9d895ba"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AssetCollector: ClassTooLong \u2014 416 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 22 methods, 2 blocks, lines 600-1311. The bar is 400 significant lines; this is 16 over it, 1.04\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/assets.rs"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9bded36af91a7a57f56d2927b911d5ea116cd3fcd78f4a02e1b11ef92d58f89"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_checkpoint::store::materialize_cached: FunctionTooLong \u2014 smolvm_checkpoint::store::materialize_cached runs 104 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":1998}}}],"partialFingerprints":{"codehealthFindingId/v1":"144149fec0e243ff8256f7132c931031436810baea3c6ab66528a027d28b1a27"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AgentClient.interactive_session: MethodTooLong \u2014 interactive_session runs 104 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":2452}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebdaf4652bf60e24ece3e9c47abb732009ec1da399414d718e7dd97953d41797"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RolloutExecutor.publish_policy: MethodTooLong \u2014 publish_policy runs 104 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":967}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ac934404ee0b2a2fe0fd791b43ff400295fee33cad244dc4f4b3343bbec50f9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExportVm.start: MethodTooLong \u2014 start runs 104 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pack_export.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7b786602572feb0537216642bc79c8f6299726e4342ad61aa773bf5f6015adf"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::spawn_exec_in_container: FunctionTooLong \u2014 smolvm_agent::spawn_exec_in_container runs 103 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 3 over it, 1.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":5169}}}],"partialFingerprints":{"codehealthFindingId/v1":"c276aa22c4092a53e46719f23dcd3c84dd70a09da2c2094d3f0d60557ce15447"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_cuda::proto::decode_response: FunctionTooLong \u2014 smolvm_cuda::proto::decode_response runs 103 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 3 over it, 1.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/proto.rs"},"region":{"startLine":2130}}}],"partialFingerprints":{"codehealthFindingId/v1":"96cc27466d6dfc8e59e0b4719dc79a3456819de683cba812585eabd7242c0af0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::agent::video::ffmpeg_command: FunctionTooLong \u2014 smolvm::agent::video::ffmpeg_command runs 103 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 3 over it, 1.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/video.rs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d8b89d7a2aad0f43e1e7ae4ad6b9ac54e730755795645029a8b0238ad762649"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: EmbeddedRuntime.pause_machine_inner: MethodTooLong \u2014 pause_machine_inner runs 103 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 3 over it, 1.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"36dc60a048a42b7e727a9fab0b26e8992012ccb955e04075fe5f76b85f84e638"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/checkpoint_retention.rs: FileTooLong \u2014 512 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 12 over it, 1.02\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/checkpoint_retention.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed0ea5a60a12e0ea525f24d3bd6353c0fbdff8b264086353a2afdf1bcb067b0b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_agent::process::wait_with_timeout_cleanup_and_liveness: FunctionTooLong \u2014 smolvm_agent::process::wait_with_timeout_cleanup_and_liveness runs 102 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/process.rs"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf1c95d428a5d6c08f73f5a2c74bb4e9cd945fc798fe180d36ff9c4822f2045a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_cudart_shim::cudaGetDeviceProperties_v2: FunctionTooLong \u2014 smolvm_cudart_shim::cudaGetDeviceProperties_v2 runs 102 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":2706}}}],"partialFingerprints":{"codehealthFindingId/v1":"a42d019bfd32f9f64021c00f90d954a7f64ae78d1643d2a1fd75e4087570aeb4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm_network::tcp_relay::relay_stream: FunctionTooLong \u2014 smolvm_network::tcp_relay::relay_stream runs 102 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_relay.rs"},"region":{"startLine":1252}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ef1e2fe96fd8d00d9708984f00f8dcc6808abe04b4d454fc90520eeff4d2aae"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::api::handlers::machines::delete_one_transaction: FunctionTooLong \u2014 smolvm::api::handlers::machines::delete_one_transaction runs 102 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":6314}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8184ea66a604cf001e48e8561ed679d41876d1625c512d3540143bdd3980104"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: smolvm::api::handlers::exec::exec_command: FunctionTooLong \u2014 smolvm::api::handlers::exec::exec_command runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"282b9c4a253766ca5e3c096099bc6218d8ca1603898cda74450aeb4ba66fb830"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/disk_utils.rs: FileTooLong \u2014 503 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 3 over it, 1.01\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/disk_utils.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7254ee95274b461da275cdf5ec59cde9712d4b80c3753a4985d871cd14f3e351"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (83 shared lines): src/api/rollout.rs:970-1099 | src/api/rollout.rs:1105-1271 \u2014 These two members are variants of one another: 83 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ef5f0f038e6aefd13b68ec2dcbf4e53ee1a0be8f999fd6746399ce821086e60"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (80 shared lines): crates/smolvm-agent/src/main.rs:6037-6332 | crates/smolvm-agent/src/main.rs:6344-6588 \u2014 These two members are variants of one another: 80 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6037}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0b1c9affcd00f195feb35787df49de3d59d101b156d82e84b4a873b5347cee1"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (69 shared lines): src/cli/pack_run.rs:1861-2097 | src/cli/pack_run.rs:2271-2540 \u2014 These two members are variants of one another: 69 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":1861}}}],"partialFingerprints":{"codehealthFindingId/v1":"fac8eaf8afa0c6cdaf176460760a827c3759e557bd131641cc78935966dd7f1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (31 shared lines): crates/smolvm-agent/src/live_resources.rs:234-291 | crates/smolvm-agent/src/live_resources.rs:310-363 \u2014 These two members are variants of one another: 31 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/live_resources.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"4755d60fe936998a9719c454895beea25bd891e4e5ef5233c655662ab31f3bf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (13 corresponding lines): crates/smolvm-cudart-shim/src/lib.rs:5332-5348 | crates/smolvm-cudart-shim/src/lib.rs:5358-5402 \u2014 These two members are one piece of code written twice and then edited apart: 13 consecutive lines correspond almost exactly, broken only by small local edits. Most of that correspondence is NOT reported as duplicated blocks below \u2014 the edits cut it into fragments and only the largest of them clear the block floor, so the rows below understate it. The repair is at the members\u0027 grain \u2014 factor the shared implementation into one the two call with their differences as parameters or as an injected step, or, where the difference is systematic (an extra return value, one transport against another), generate one from the other. Left alone, the next edit has to be made twice and the two will drift further apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":5332}}}],"partialFingerprints":{"codehealthFindingId/v1":"a736611f7ad22aa16eae6d413f1f686eefd608e81204726df0a4bc107693f602"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): crates/smolvm-registry/src/client.rs:390-422 | crates/smolvm-registry/src/client.rs:704-730 | crates/smolvm-registry/src/client.rs:798-817 | crates/smolvm-registry/src/client.rs:1116-1140 | crates/smolvm-registry/src/peer.rs:154-171 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"13093db69864331ad3c36e93c5c525bf754563d0c082daed8eb508fceb2e75a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): src/api/device_handoff.rs:322-349 | src/cuda_daemon.rs:495-526 | src/cuda_daemon.rs:528-575 | src/cuda_daemon.rs:4342-4374 | src/cuda_daemon.rs:4381-4425 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/device_handoff.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"788f0678c502b375ce053f54f8d91fac3ebee4f914df6d2beeace5ba99880002"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): crates/smolvm-agent/src/main.rs:8045-8088 | crates/smolvm-agent/src/main.rs:8097-8311 | crates/smolvm-agent/src/main.rs:8405-8452 | crates/smolvm-agent/src/main.rs:8461-8478 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":8045}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4eec718280a99d91518509578cb94dd0a7884f2ab4987f25a2161d7d0eb6706"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): src/api/handlers/exec.rs:68-219 | src/api/handlers/exec.rs:625-726 | src/api/handlers/machines.rs:3964-4508 | src/api/state.rs:1845-1910 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"7378c63026cdfd7bad7857f1de322baeabb0a005b09148fe901604c05637a8dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): src/api/handlers/machines.rs:6563-6583 | src/api/handlers/machines.rs:6620-6791 | src/api/handlers/machines.rs:6817-6940 | src/api/handlers/machines.rs:7295-7399 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":6563}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d9429b5f06ba9b8c414a2e10d1bd39ff2af7cfb45a5b5bee0d3b508321e2f87"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): src/platform/linux.rs:91-115 | src/platform/macos.rs:33-63 | src/platform/macos.rs:243-266 | src/platform/windows.rs:30-52 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/platform/linux.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"b169856587d6feab56b28e043fa79aedf0639f300390caa160b856d5ce5713df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (71\u201382 lines \u00D7 2): src/agent/manager.rs:2047-2128 | src/agent/manager.rs:3268-3338 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":2047}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc0cdc07c60e4feec172d2613cb9de86b98d941c26eaca7eef2075ef01a6025d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (62 lines \u00D7 2): src/config.rs:969-1030 | src/config.rs:1070-1131 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/config.rs"},"region":{"startLine":969}}}],"partialFingerprints":{"codehealthFindingId/v1":"c990acfaa3d6906a9da6b4628d7efda559a960cc8bb3559e42d00c41e80c205b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35\u201354 lines \u00D7 2): crates/smolvm-cuda-codegen/src/main.rs:167-201 | crates/smolvm-cuda-codegen/src/main.rs:257-310 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-codegen/src/main.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"01ae42c290bc6526e34d9febdecd35ccd70d5b65582ba3aa5ebf8ddf5cbd5f8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35\u201345 lines \u00D7 2): crates/smolvm-agent/src/publish_socket.rs:324-358 | crates/smolvm-agent/src/relay.rs:22-66 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/publish_socket.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ce464a0c820e96f319bad6085d126504db684f0c84df5386645d3664a86bcad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42 lines \u00D7 2): src/api/rollout.rs:1046-1087 | src/api/rollout.rs:1218-1259 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":1046}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6ea3ea0da0038290a9b6071e3cb2ce4ae4a226d359668b9730449ed4e8e6970"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 2): crates/smolvm-network/src/icmp_relay.rs:220-257 | crates/smolvm-network/src/udp_relay.rs:194-231 \u2014 before extracting anything, compare \u0060crates/smolvm-network/src/icmp_relay.rs\u0060 and \u0060crates/smolvm-network/src/udp_relay.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 60 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/icmp_relay.rs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9e4c68a987f990d33ac4d80f1a22c61b141a0b0ac13c3c05ceaf0c797baa853"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34\u201338 lines \u00D7 2): src/cli/machine.rs:2389-2426 | src/cli/machine.rs:2538-2571 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":2389}}}],"partialFingerprints":{"codehealthFindingId/v1":"d78ab393e7ce46c746934241197bf8bf860e982e12cbc72ec24e564771e3bc90"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201335 lines \u00D7 2): src/cuda_daemon.rs:1741-1765 | src/cuda_daemon.rs:1862-1896 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":1741}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f3bc42d89faf349c95805a3f4eb8385de4833fe206f0f32a28973a62ef790fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30\u201331 lines \u00D7 2): crates/smolvm-agent/src/main.rs:5253-5282 | crates/smolvm-agent/src/main.rs:5820-5850 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":5253}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e78e60e1f5e44662c3953582af0feb60af42cc61f7bb1886e544e22cd927f5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29\u201330 lines \u00D7 2): crates/smolvm-registry/src/client.rs:339-367 | crates/smolvm-registry/src/client.rs:460-489 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"617f0bee44f928f67d9a5b5c5eff7079995c3c2924d8813f4d1c188bd3a6c0c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): src/cli/pack_run.rs:1909-1938 | src/cli/pack_run.rs:2339-2368 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":1909}}}],"partialFingerprints":{"codehealthFindingId/v1":"39310ebb0a13700d43142531f5cb2a62aa40f8441dbea403e4330a94fd137d48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201329 lines \u00D7 2): src/api/handlers/exec.rs:69-97 | src/api/handlers/exec.rs:246-265 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ce0e46043eb33f530f96a03add8beab553068ad2b1d69fd8ff076af21e5cef7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201328 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:5851-5878 | crates/smolvm-agent/src/storage.rs:6068-6093 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":5851}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8c71f2f94fee65093283341135435f6027d23fca4b2088ca432592fb698a33f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201327 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:196-222 | crates/smolvm-cudart-shim/src/lib.rs:161-186 \u2014 before extracting anything, compare \u0060crates/smolvm-cuda-shim/src/lib.rs\u0060 and \u0060crates/smolvm-cudart-shim/src/lib.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 87 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"594968aac8c414e855c3dd4bf305a4e61e1704845287109efc49dcdaf6f11ee0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): src/config.rs:941-967 | src/config.rs:1042-1068 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/config.rs"},"region":{"startLine":941}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bbd2a1adf40f9c53dee22b4ddb0adf09988beed60352dc8690e90f1d4b572d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201326 lines \u00D7 2): crates/smolvm-pack/src/extract.rs:5668-5693 | crates/smolvm-pack/src/extract.rs:5719-5741 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":5668}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b51809b931508edcdbf4315f46fc4434147987e4366be81a3d6a86edf42626f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201325 lines \u00D7 2): src/agent/manager.rs:3156-3180 | src/cli/pack_run.rs:163-179 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":3156}}}],"partialFingerprints":{"codehealthFindingId/v1":"faf0ab1b1b74a6ea8bbd51768200d652130bbf3a9e58c5360f6f479aaaa7efa4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): crates/smolvm-pack/src/extract.rs:28-51 | src/disk_utils.rs:462-485 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"82932659b895c270eb7fff236e5791d9fa110379b76d24387948d027730b11d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201324 lines \u00D7 2): crates/smolvm-registry/src/client.rs:856-879 | crates/smolvm-registry/src/client.rs:950-970 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":856}}}],"partialFingerprints":{"codehealthFindingId/v1":"34d7d8ea955086d2ba91d62fdeefab600da6eaeda762aea42c73c7b8839c86e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): src/api/rollout.rs:995-1017 | src/api/rollout.rs:1138-1160 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":995}}}],"partialFingerprints":{"codehealthFindingId/v1":"94a58ad67b7c1c5929ceb2ff40da437e1b1d98ecc95c3865f1a8f538f247c908"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201322 lines \u00D7 3): crates/smolvm-cudart-shim/src/lib.rs:5888-5903 | crates/smolvm-cudart-shim/src/lib.rs:5943-5958 | crates/smolvm-cudart-shim/src/lib.rs:6019-6040 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":5888}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9e4a9bc467ab94f823f5a9b8b380cbff91d252004320be621e907d6d1171345"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 2): crates/smolvm-registry/src/client.rs:1285-1306 | crates/smolvm-registry/src/client.rs:1369-1389 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":1285}}}],"partialFingerprints":{"codehealthFindingId/v1":"b306890b1dcfd39ce14e873f897ea93e776e4f675878caddec5a9472d1f6ca57"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): crates/smolvm-cuda/src/host.rs:1346-1366 | crates/smolvm-cuda/src/host.rs:1384-1404 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":1346}}}],"partialFingerprints":{"codehealthFindingId/v1":"3336f5564bf3031177cc18264f5ad809024052b4d04ef3b0bfc94ead88176e6a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201321 lines \u00D7 2): src/disk_utils.rs:250-267 | src/disk_utils.rs:277-297 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/disk_utils.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"00454d808a78746abdd7841662d5183b47fa5fe53f1b4382e8feebf979a6f9d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): crates/smolvm-agent/src/main.rs:3978-3997 | crates/smolvm-agent/src/main.rs:4332-4353 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":3978}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1fed83230be64a9648e142cfbb62a0a28d4eb7ea2c26a8654930bc7c9411d7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201319 lines \u00D7 2): src/cli/machine.rs:1526-1541 | src/cli/machine.rs:4940-4958 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":1526}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac80b070013fe5144f2371e247f92c1b5e5caa0990e6c07cac389c65fe34e6f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): crates/smolvm-agent/src/main.rs:6102-6119 | crates/smolvm-agent/src/main.rs:6400-6416 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6102}}}],"partialFingerprints":{"codehealthFindingId/v1":"f33de6c19fea47e6010d662195c0b0fbc943f33992fcced13ab07cbe524a5fda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:176-193 | crates/smolvm-cudart-shim/src/lib.rs:141-158 \u2014 before extracting anything, compare \u0060crates/smolvm-cuda-shim/src/lib.rs\u0060 and \u0060crates/smolvm-cudart-shim/src/lib.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 87 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c7e2e8cceece6caf849bcaa1787ce54bcd934fea087ec0070cb525ca301da11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201318 lines \u00D7 2): crates/smolvm-pack/src/extract.rs:1840-1857 | src/api/handlers/machines.rs:235-249 \u2014 before extracting anything, compare \u0060crates/smolvm-pack/src/extract.rs\u0060 and \u0060src/api/handlers/machines.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 41 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":1840}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c09c7f14d8d1f87dbc1144bd5eb4b61053059aa8a51dc34f78fc03cfa1cb2c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/agent/launcher.rs:2948-2965 | src/agent/launcher_dynamic.rs:1065-1082 \u2014 before extracting anything, compare \u0060src/agent/launcher.rs\u0060 and \u0060src/agent/launcher_dynamic.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 45 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":2948}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ec7f0cce7459c5e9963e8919bf7b8388a34c60f81105076f2d64a90728b2992"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201317 lines \u00D7 3): src/cli/pack_run.rs:860-876 | src/cli/pack_run.rs:2047-2059 | src/cli/pack_run.rs:2500-2512 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":860}}}],"partialFingerprints":{"codehealthFindingId/v1":"62a758aa0428a43608f80ad3af28f8f463e1f2ba712df5c9dbea106a1e693902"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 3): src/cuda_daemon.rs:1746-1761 | src/cuda_daemon.rs:1810-1826 | src/cuda_daemon.rs:1867-1883 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":1746}}}],"partialFingerprints":{"codehealthFindingId/v1":"4835cbcdd560748c4dd74d03313371d7b06ef4691aa143041bb3a08b19f6b94a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:1116-1130 | crates/smolvm-cuda-shim/src/lib.rs:1336-1352 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":1116}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9e4f1e2d3e8686b8ef05b6dee1a4b1bcfbdb1b7869fd44205db6a81e6c00359"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201317 lines \u00D7 2): crates/smolvm-cuda/src/host/gpu.rs:3639-3655 | crates/smolvm-cuda/src/host/gpu.rs:3704-3717 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":3639}}}],"partialFingerprints":{"codehealthFindingId/v1":"d83f5642d81edbfbb8af354b57f3e4a04d995e6b9c8f19332ee4b5510569bdff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): crates/smolvm-pack/src/extract.rs:70-86 | src/agent/fork.rs:141-156 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"70f961b35cfced3feae20c24708a19e07ea1ff0deaba9e1dcf8d42dfb0e07b01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201317 lines \u00D7 2): src/image_store.rs:43-52 | src/image_store.rs:162-178 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/image_store.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8abc104903095da3c13b10a6ea4155dd08d8e811e6e41c8b3d9edc9eb80c47f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u201316 lines \u00D7 4): src/platform/linux.rs:93-108 | src/platform/macos.rs:54-56 | src/platform/macos.rs:244-259 | src/platform/windows.rs:31-45 \u2014 there are 4 copies across 3 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 4 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/platform/linux.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c42affbceaffcd8b5e9a9f3bb15f6842f789ceb840da5bf2e2c58907e6134e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): crates/smolvm-agent/src/main.rs:3915-3930 | crates/smolvm-agent/src/main.rs:7724-7739 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":3915}}}],"partialFingerprints":{"codehealthFindingId/v1":"b29eebbfa5e5277073276a549d5e6f4005b4f82bf4ff2947b4823fb92c77dfea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): crates/smolvm-agent/src/process.rs:389-404 | crates/smolvm-agent/src/process.rs:415-430 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/process.rs"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"86ec01df12e77d24f973e388dcc8a302d62e7c708a2e587a6697a55b28286aa1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): crates/smolvm-agent/src/ssh_agent.rs:278-293 | crates/smolvm-agent/src/vsock.rs:210-225 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/ssh_agent.rs"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"663353607ef5c4df32d194079d33395c37b7b405857f2c0a761b5bfe405b7b91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:2916-2931 | crates/smolvm-agent/src/storage.rs:3187-3202 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":2916}}}],"partialFingerprints":{"codehealthFindingId/v1":"802e2c618fd071bf4fe44d00c3679f69cb8e6d6b4d4a52d94a06aa9918634cce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201316 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:1404-1419 | crates/smolvm-cudart-shim/src/lib.rs:4570-4579 \u2014 before extracting anything, compare \u0060crates/smolvm-cuda-shim/src/lib.rs\u0060 and \u0060crates/smolvm-cudart-shim/src/lib.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 87 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":1404}}}],"partialFingerprints":{"codehealthFindingId/v1":"edd2cd8320cca5e16941e2ce3ad778c1ae5f654f2111d555647cdee200aa5e0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): crates/smolvm-network/src/icmp_relay.rs:277-292 | crates/smolvm-network/src/udp_relay.rs:243-258 \u2014 before extracting anything, compare \u0060crates/smolvm-network/src/icmp_relay.rs\u0060 and \u0060crates/smolvm-network/src/udp_relay.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 60 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/icmp_relay.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf0fecae9ef6776f0bfb82af8b8073ab4a387aadb69feca9873bd71ccc1f4640"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): crates/smolvm-network/src/tcp_relay.rs:558-573 | crates/smolvm-network/src/tcp_relay.rs:660-675 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_relay.rs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"02a5b562e44b31aa30c5e2083d4c6747a164874b825c3c02d4a99e977676bf12"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201316 lines \u00D7 2): crates/smolvm-pack/src/extract.rs:2210-2225 | crates/smolvm-pack/src/extract.rs:5420-5430 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":2210}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3f18ce71efba0e3cdef4efc09e8efcd7d15dc66fe4d5e45da46874288cbe614"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u201316 lines \u00D7 3): crates/smolvm-pack/src/extract.rs:4289-4304 | crates/smolvm-pack/src/extract.rs:4333-4346 | crates/smolvm-pack/src/extract.rs:5446-5448 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":4289}}}],"partialFingerprints":{"codehealthFindingId/v1":"18e275f7c0e403dd22822e0e18ac5dde6be6b8db6127bde67c038edeed66391f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): crates/smolvm-registry/src/client.rs:446-461 | crates/smolvm-registry/src/client.rs:585-599 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ad0f624e7e9529a1bbf919a7db771af1937edad5472fd997f80ec8db3712a1f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201316 lines \u00D7 2): crates/smolvm-registry/src/pull.rs:512-527 | crates/smolvm-registry/src/pull.rs:724-736 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/pull.rs"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5a1e683283a4b1281c912b7c1e08b90c7be07a89fc8eca1b0272da7b287e7a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/agent/launcher.rs:1653-1668 | src/agent/launcher.rs:1684-1699 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":1653}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f4c64970b79dfdb39c9e0af18be16991eecde69f3da58aa4cb3f9704b33fb55"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/agent/manager.rs:3811-3826 | src/agent/manager.rs:3893-3908 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":3811}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdba4e2e0f77fd76bf8fc88483e94ce4b76ef4dd6875c295fcff3c7e84ee8b71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/cli/pack.rs:1057-1072 | src/cli/pack.rs:1206-1221 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1057}}}],"partialFingerprints":{"codehealthFindingId/v1":"259f4d88ada0a23e158a18ce40f37acc5a3bbdd8be2190814085b87660e31865"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): src/cli/pack_run.rs:836-851 | src/cli/pack_run.rs:2028-2042 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"f57da61b10d8340a31d0780cf4452604f7b5de5085d81b9965f03bcf7dfe39e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): crates/smolvm-agent/src/ssh_agent.rs:261-275 | crates/smolvm-agent/src/vsock.rs:193-207 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/ssh_agent.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe3656f7475e0282e4ae25363169345fed102e7815f47ad02662f6b4e7cdd999"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:828-842 | crates/smolvm-agent/src/storage.rs:866-880 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"879e9394aaa3ed07cbad05275741db8ccd9bd3823e924f6244d11c8950d8d82a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:6127-6141 | crates/smolvm-agent/src/storage.rs:6205-6219 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":6127}}}],"partialFingerprints":{"codehealthFindingId/v1":"d985cffb339d17bbb8951721e90585e5f4250f4f0b32a4bf3f6f2a5f64cd6a04"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:5693-5707 | crates/smolvm-cudart-shim/src/lib.rs:5728-5742 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":5693}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3ddfe96ea5bb3bd26fbdb2d32f379156d1710b33313133a7fa7c32b973da3d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/cli/vm_common.rs:1003-1017 | src/cli/vm_common.rs:1156-1170 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":1003}}}],"partialFingerprints":{"codehealthFindingId/v1":"072718325306a257ce63155d15baa020d9dcf65f10c8a54fb6b4dce76b2b0af2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/cli/vm_common.rs:2023-2037 | src/cli/vm_common.rs:2510-2524 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":2023}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa5519460686bce19e2a5e336cbc0a5128f4ba4bdfba0792e26e0a05375465e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201315 lines \u00D7 2): src/portable_checkpoint.rs:5509-5523 | src/portable_checkpoint.rs:5557-5568 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5509}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c6cba91fb3ae41f544e2907d77ac7eca0763c3fd0cd6f04f916f05798ae80fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 3): crates/smolvm-registry/src/client.rs:334-347 | crates/smolvm-registry/src/client.rs:455-468 | crates/smolvm-registry/src/client.rs:593-605 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e9279812fe7d5aac35adfc7068e2c2ecb6f80f2e22fa55b6c6871a3afd08f1e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 3): src/cli/pack_run.rs:835-848 | src/cli/pack_run.rs:2027-2039 | src/cli/pack_run.rs:2425-2437 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":835}}}],"partialFingerprints":{"codehealthFindingId/v1":"43d0c4e6cba070129b30e64ab047f522b4bf7d6297e95b3f6a901ae726ea6595"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201314 lines \u00D7 2): crates/smolvm-agent/src/main.rs:8048-8058 | crates/smolvm-agent/src/main.rs:8100-8113 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":8048}}}],"partialFingerprints":{"codehealthFindingId/v1":"435e6ca1456858839c14bc841460326fcce977937cc8abc8f1fd5550669f4d57"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/smolvm-agent/src/nsfile.rs:731-744 | crates/smolvm-agent/src/nsfile.rs:1063-1076 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/nsfile.rs"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ffc6d75c94a1f39a5d4fa7e668752954f576d198afc5f2de300d25ed2b5e10e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/smolvm-agent/src/relay.rs:64-77 | crates/smolvm-agent/src/relay.rs:80-93 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/relay.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ebf1cd11c9f481ed82f5f7bea90e4f6061ea217651ce5c6e31fa6a4e7f51a35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:1700-1713 | crates/smolvm-agent/src/storage.rs:1798-1811 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":1700}}}],"partialFingerprints":{"codehealthFindingId/v1":"4baf69a2c8f2da7a6b9d056e63888e7c39604138d90f1430782c153dfbab486f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201314 lines \u00D7 2): crates/smolvm-agent/src/vsock.rs:44-57 | crates/smolvm-agent/src/vsock.rs:205-215 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/vsock.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb2386213a4dc458e4bae0e9d869ac8e53e52427ee736f8cc2d5331e793e8e51"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/smolvm-cuda/src/host.rs:3978-3991 | crates/smolvm-cuda/src/host.rs:3998-4011 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":3978}}}],"partialFingerprints":{"codehealthFindingId/v1":"6235aea5d0e53e9cc57e2b75c227cbf9f0bcdb734652b1e95a0ce1f48d8955df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/artifact_cache.rs:731-744 | src/artifact_cache.rs:781-794 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/artifact_cache.rs"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f9f0792af32da033fc67cfda829d842b786eaa3667fb5469b4554632f204bf7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): src/dns_filter.rs:200-213 | src/dns_filter.rs:217-228 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/dns_filter.rs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"a92e494c5c29353781af58cf5006182b31b0ab09a71afba71f93320505ad55f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 3): crates/smolvm-cuda/src/host.rs:4321-4332 | crates/smolvm-cuda/src/host.rs:4361-4372 | crates/smolvm-cuda/src/host.rs:4380-4392 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":4321}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5e84cfba86ae0eeb4e3ecca8dc9e48c0eec68b65846f2ac5ceebd9c2c919d31"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): crates/smolvm-agent/src/main.rs:4266-4277 | crates/smolvm-agent/src/main.rs:5925-5937 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":4266}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab1f71bd5c66091df09a70722de29d0136b9b37a1e96e4a8e544bc8aa9a90ac5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/smolvm-checkpoint/src/store.rs:945-957 | crates/smolvm-checkpoint/src/store.rs:2773-2785 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":945}}}],"partialFingerprints":{"codehealthFindingId/v1":"281ee3956cd326893c84957a64b67cfdbbc2af408f6e2e0186e35090ef988e73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): crates/smolvm-cuda/src/host/gpu.rs:3753-3763 | crates/smolvm-cuda/src/host/gpu.rs:3770-3782 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":3753}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d3205bd8c749a138ce917500131f09b769193fe0c86e09aaf8344e1da694af1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): crates/smolvm-pack/src/assets.rs:740-752 | crates/smolvm-pack/src/assets.rs:762-773 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/assets.rs"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e17bbadde56dbedc8612b47087188a63f13aa94827e26dbd02a8b8c61f74f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/smolvm-pack/src/extract.rs:1687-1699 | src/api/handlers/machines.rs:7010-7022 \u2014 before extracting anything, compare \u0060crates/smolvm-pack/src/extract.rs\u0060 and \u0060src/api/handlers/machines.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 41 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":1687}}}],"partialFingerprints":{"codehealthFindingId/v1":"553fcd7f1428c9449a207db2c53c8050865f938315fffc932d8781275051f33c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/smolvm-protocol/src/intercept.rs:169-181 | crates/smolvm-protocol/src/mediated_egress.rs:85-97 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-protocol/src/intercept.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd31bd1f5d83a2d28c60eb13785ac50c04aaad5b6e9075779a10454733a5f323"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/agent/launcher.rs:2793-2805 | src/agent/launcher_dynamic.rs:1297-1309 \u2014 before extracting anything, compare \u0060src/agent/launcher.rs\u0060 and \u0060src/agent/launcher_dynamic.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 45 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":2793}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8b0cf3eb3478735029a9a1eb76601d0a6511a897cb3bd6b6c008b6712447cb1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/api/pool_controller.rs:202-214 | src/api/pool_controller.rs:420-432 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/pool_controller.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"016dd92a21a112cb3ba3c4664e746d113bff380d59bdaccfe45609012cc5ec20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/api/pool_controller.rs:218-230 | src/api/pool_controller.rs:436-448 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/pool_controller.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cddbf725ec35b7e553fd7dea0037954346e2a6c1ffd52bdc384cc495bd73580"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/api/rollout.rs:974-986 | src/api/rollout.rs:1117-1129 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":974}}}],"partialFingerprints":{"codehealthFindingId/v1":"edc6cb4b4d6ccd9228011e5eefd3069ef6d9ec5aeeb565d4bdd9baa29d2c5f76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/cli/pack_run.rs:618-630 | src/cli/pack_run.rs:2303-2315 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d25ee56bfba62f2cc16366e53c22c205535368a4df915dde362797461192c51"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/cli/pack_run.rs:2079-2091 | src/cli/pack_run.rs:2570-2582 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":2079}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe6c1b444eac2f15083de91efb12621a1021f6b67bbc1cd09f8cdeaae53ab0f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/cuda_daemon.rs:1781-1793 | src/cuda_daemon.rs:1837-1849 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":1781}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8b71ae9e2eb43be413515b2e1b831a0cb4b2aead8103078203c617cfa73c25d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/cuda_daemon.rs:3549-3561 | src/cuda_daemon.rs:4440-4456 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":3549}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0b440b19f18fc07ccef17dc3e702bfe3258ef294404f8af5577b5de7d82369a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/cuda_daemon.rs:4344-4356 | src/cuda_daemon.rs:4383-4395 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":4344}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9fda911d45d33e58b4355f5d961ca1710559b8ef780ea8485d117bde1edbdb1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/cuda_daemon.rs:5802-5814 | src/cuda_daemon.rs:5825-5837 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":5802}}}],"partialFingerprints":{"codehealthFindingId/v1":"502d0d848b268625b0522ddb9fd24a4dd7cada1273c2002d97cef8e23b938e43"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201312 lines \u00D7 4): crates/smolvm-agent/src/main.rs:8052-8060 | crates/smolvm-agent/src/main.rs:8104-8115 | crates/smolvm-agent/src/main.rs:8409-8417 | crates/smolvm-agent/src/main.rs:8462-8470 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":8052}}}],"partialFingerprints":{"codehealthFindingId/v1":"749fab5b9232ae807b510a6c6a2ef1cf1b8a5c26e4192ab27192d0eaef3684b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 3): crates/smolvm-agent/src/crun.rs:374-385 | crates/smolvm-agent/src/crun.rs:444-454 | crates/smolvm-agent/src/crun.rs:496-506 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/crun.rs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"58e4d4e8d03d83b59baf89472703da450ee0ebf6f597cc7097d0e2b5eef8ec83"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): crates/smolvm-agent/src/publish_socket.rs:256-267 | crates/smolvm-agent/src/storage.rs:828-839 | crates/smolvm-agent/src/storage.rs:866-877 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/publish_socket.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea82c31bcd058230f0b4c42bc1d72340c658fbf197930671680680d6c4efa927"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (2\u201312 lines \u00D7 3): crates/smolvm-agent/src/attach.rs:259-269 | crates/smolvm-agent/src/nsfile.rs:237-248 | crates/smolvm-agent/src/pod.rs:786-787 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/attach.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"a42e61b8b4b83628323c904aa096b6c89a046f715d1342aa765bc457ff533fb7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): crates/smolvm-agent/src/live_resources.rs:265-276 | crates/smolvm-agent/src/live_resources.rs:340-350 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/live_resources.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f7953052a5bee71b996fc6a31025ddf52aaf2be9dba58f9abd91455626f4d0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/smolvm-agent/src/main.rs:6192-6203 | crates/smolvm-agent/src/main.rs:6233-6244 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6192}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ea9c342c9a680afc9fdfa6c0cdb0e4a8445f7f220b6c9e6bc4ea0e587fd0347"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/smolvm-agent/src/network/linux.rs:601-612 | crates/smolvm-agent/src/network/linux.rs:646-657 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/network/linux.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e42167a4e19b2c805c6e59a2d5f26c80a40495198806f2b69bc42301fb16424"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): crates/smolvm-agent/src/publish_socket.rs:357-368 | crates/smolvm-agent/src/publish_socket.rs:371-381 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/publish_socket.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1e2559124cf716b8585fac33331ca4945a451317d325d7facbada018e91ba0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/smolvm-agent/src/rosetta.rs:126-137 | crates/smolvm-agent/src/rosetta.rs:155-166 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/rosetta.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0f4df6701219b3b1a95473183a4aebf17d19b15e74f4d05b372f2b695dc6883"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:3626-3637 | crates/smolvm-agent/src/storage.rs:3781-3792 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":3626}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d21b787ad655f2cc54a0151cb9f9bf554797c473f3ff8a77f6624ca83405145"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:5825-5836 | crates/smolvm-agent/src/storage.rs:6055-6066 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":5825}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa56013a8e5ec2b2d19540b457065d7f09f0ce2836dd0dfcb81399c7daa3542a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/smolvm-checkpoint/src/store.rs:1493-1504 | src/api/cache_base_fetch.rs:270-281 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":1493}}}],"partialFingerprints":{"codehealthFindingId/v1":"e51db7b1f094616946ab66572cb8d415b1b63ad11e61c832a6441ceeb1ce8e77"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/smolvm-cuda/src/host/gpu.rs:1818-1829 | crates/smolvm-cuda/src/host/gpu.rs:1851-1862 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":1818}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7bb94d9d61de22de4e9b9b19c1bcfec8b16f8b8454376c7635a8067afa43b2e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/smolvm-cuda/src/host/gpu.rs:1879-1890 | crates/smolvm-cuda/src/host/gpu.rs:1908-1919 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":1879}}}],"partialFingerprints":{"codehealthFindingId/v1":"67c61a6b0e4a399d0bd75c1224fcf156c79a1c87a7d00a7eaa21a8055ed73614"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:2313-2324 | crates/smolvm-cudart-shim/src/lib.rs:2950-2961 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":2313}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4f02b5089fae1a23dd1958f9f485d1e6e93e63f2833504edf6c0677d905faf2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:3888-3899 | crates/smolvm-cudart-shim/src/lib.rs:3939-3950 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":3888}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b3fa05fe6faca92790ead29462af23b9615b12506aacd8e775dd2baa8f90053"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/smolvm-pack/src/extract.rs:3630-3641 | crates/smolvm-pack/src/extract.rs:3701-3712 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":3630}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d790a6a73555b62b0c2c941bc403a8522e0115b85de0c92b6478bf5a4a7a891"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/smolvm-pack/src/packer.rs:308-319 | crates/smolvm-pack/src/packer.rs:671-682 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/packer.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1e29b50c44a4c7092b868ca79bd056244a3d213783657cdb825fe4b55505c9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/api/cache_base_budget.rs:136-147 | src/api/handlers/machines.rs:228-239 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/cache_base_budget.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"14c5d1ca8916a17030c5a9a6968be8f7a070dfb7b70f1a2fa40f15e780294a62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201312 lines \u00D7 2): src/api/handlers/machines.rs:7656-7667 | src/data/pack_ref.rs:232-239 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":7656}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebf3ee856fca167c59d52ffb731ce125883336f7889cdcb5cc83410418209f47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): src/cli/pack_run.rs:809-820 | src/cli/pack_run.rs:2005-2015 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":809}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d575864a197827c89169c9caa90ba9e69be4a2dfb084fdd016fec7dd24c040"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/cuda_daemon.rs:2620-2631 | src/cuda_daemon.rs:2651-2662 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":2620}}}],"partialFingerprints":{"codehealthFindingId/v1":"444fb74fb2ff10b8636decc3a989d60b487908bfe9b0e7323290257eb0a62aad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/smolvm-agent/src/cuda.rs:233-243 | crates/smolvm-agent/src/vulkan.rs:223-233 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/cuda.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cad5087ebf2ab1c156f085269dbf476c09061a64a5cbc442953753ec00eec79"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:1689-1699 | crates/smolvm-agent/src/storage.rs:1769-1779 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":1689}}}],"partialFingerprints":{"codehealthFindingId/v1":"75d3f8baaf605c63bdde06dad55a412b4267f7a1b849d281065f0f2352616199"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/smolvm-cuda/src/host/gpu.rs:1825-1835 | crates/smolvm-cuda/src/host/gpu.rs:1886-1896 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":1825}}}],"partialFingerprints":{"codehealthFindingId/v1":"b72e4f2954d13067b4040f5847af6252c55c462ed965632654727dda0007c2a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/smolvm-cuda/src/host/gpu.rs:3624-3634 | crates/smolvm-cuda/src/host/gpu.rs:3681-3691 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":3624}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ce26d219c37d29cbbe5a7e40a9571a21b39d2a83e4b832eb9a41305d02081c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/smolvm-cuda/src/host/gpu.rs:3765-3775 | crates/smolvm-cuda/src/host/gpu.rs:3785-3795 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":3765}}}],"partialFingerprints":{"codehealthFindingId/v1":"d11a3a5160bc7d8759156f9e1013b5e48a09b1f4abffb1d3fe378f03295e34bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:2580-2588 | crates/smolvm-cudart-shim/src/lib.rs:2707-2717 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":2580}}}],"partialFingerprints":{"codehealthFindingId/v1":"09bf7c9e142aa68457fe7ac10943b74ddea91cd08d91df4b90a93c42c5caa356"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:4640-4650 | crates/smolvm-cudart-shim/src/lib.rs:4658-4668 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":4640}}}],"partialFingerprints":{"codehealthFindingId/v1":"df2c7949847079be83886fb8205a68618ab248f3ffdd16b9f3bf022452321d94"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:5523-5533 | crates/smolvm-cudart-shim/src/lib.rs:5595-5605 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":5523}}}],"partialFingerprints":{"codehealthFindingId/v1":"51302873ea0fa61a6557e531ebb0b3a77807ac4b27684cc798377c29baf3f979"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:5961-5971 | crates/smolvm-cudart-shim/src/lib.rs:6040-6050 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":5961}}}],"partialFingerprints":{"codehealthFindingId/v1":"d52908262f773e24906ca81795816b9ef42bc3e49e3a6e46b1c675f5c670f2af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): crates/smolvm-pack/src/assets.rs:1820-1830 | crates/smolvm-pack/src/extract.rs:5400-5409 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/assets.rs"},"region":{"startLine":1820}}}],"partialFingerprints":{"codehealthFindingId/v1":"812afe437d67702a84733f42cf06d259b23c785db0beff9831e6a088144e1589"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/smolvm-pack/src/packer.rs:319-329 | crates/smolvm-pack/src/packer.rs:644-654 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/packer.rs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"87f467fdc9e7a8deafa08c0b258fb29e315e20edcae6aa1de6eaaf8eca931286"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/smolvm-pack/src/packer.rs:596-606 | crates/smolvm-pack/src/packer.rs:687-697 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/packer.rs"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"39c87979b400b650a873030a5228ef0e0600bc71ea46edd82bcacd1e809b4338"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): src/api/handlers/machines.rs:2212-2222 | src/api/handlers/machines.rs:2231-2239 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":2212}}}],"partialFingerprints":{"codehealthFindingId/v1":"9738b1283638c4ce5ff7895e657f22a3fb3572c83bfc4237a3ff892b81307a4b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/cli/machine.rs:1545-1555 | src/cli/machine.rs:4978-4988 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":1545}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1c7507036a607da9f674520afb2e0c0e782b5ab4ce5b16d7d9d7e265a259eb0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): src/cli/pack.rs:1040-1050 | src/cli/pack.rs:1189-1198 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1040}}}],"partialFingerprints":{"codehealthFindingId/v1":"b006381a322b7fc7a3674e22f48d53ec1d4d2868ad27c4d69e05b5d2e3e7c615"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/cli/vm_common.rs:991-1001 | src/cli/vm_common.rs:1144-1154 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":991}}}],"partialFingerprints":{"codehealthFindingId/v1":"88547d824876732a20281d34152b13ea74cb248985488d8d3cd8f1dbd3ac93d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/cuda_daemon.rs:3731-3741 | src/cuda_daemon.rs:4882-4892 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":3731}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9e45399293aecd35f3ba12f71111ac302d7bb50e8eb28f7cc197ab6dadee4d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/portable_checkpoint.rs:1573-1583 | src/portable_checkpoint.rs:1660-1670 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":1573}}}],"partialFingerprints":{"codehealthFindingId/v1":"450060fe4a3e31e84dd21d8b30af71985f95ca649b385dec205f0dc4d5414fbd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 5): crates/smolvm-registry/src/client.rs:397-406 | crates/smolvm-registry/src/client.rs:713-722 | crates/smolvm-registry/src/client.rs:805-814 | crates/smolvm-registry/src/client.rs:1128-1136 | crates/smolvm-registry/src/peer.rs:158-166 \u2014 there are 5 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 5 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9ca4cec86be8fcf7ece3f4bc3f52ceda7ff6b0a41711b37c77313b63f473b47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 4): crates/smolvm-s3fs/src/fs.rs:842-851 | crates/smolvm-s3fs/src/fs.rs:992-1000 | crates/smolvm-s3fs/src/fs.rs:1019-1028 | crates/smolvm-s3fs/src/fs.rs:1043-1051 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/fs.rs"},"region":{"startLine":842}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c2635b906e28562dccaaaea430e0f159106c0e03b777dd4d7ae651c6494d608"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): crates/smolvm-agent/src/crun.rs:486-495 | crates/smolvm-agent/src/crun.rs:550-557 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/crun.rs"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"98f6713a01e79c4c0c3596ab8c0872f1bdf40950a3b7a919ba6ddce17d6cf26b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-agent/src/forkpoint.rs:255-264 | src/agent/fork.rs:3901-3910 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/forkpoint.rs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7b03d4af6933005f91c1c43ba68dfb2c4791e9d582db12e6047150861222e1a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-agent/src/forkpoint.rs:480-489 | crates/smolvm-agent/src/forkpoint.rs:536-545 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/forkpoint.rs"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"637c90c896e232ad54e37609033b3d1105a79133420acdbc6e32f285f7ef479b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-agent/src/main.rs:3891-3900 | crates/smolvm-agent/src/main.rs:7697-7706 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":3891}}}],"partialFingerprints":{"codehealthFindingId/v1":"a57a9e7c8243ee02154a71ce26d05de08cc181a2b18f7b8164e7382151279ce8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-cuda-guest/src/main.rs:196-205 | crates/smolvm-cuda-guest/src/main.rs:264-273 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-guest/src/main.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"757c54d1b78ff00be1d011ab9759f06ce182852db42c2678c62d83dc8d4f2239"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-cuda/src/host.rs:4052-4061 | crates/smolvm-cuda/src/host.rs:4578-4587 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":4052}}}],"partialFingerprints":{"codehealthFindingId/v1":"82558e25e45a9f2c58afd0d1c9a8e0ef22276363655bfff6ba5dc1581019ec41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:2158-2167 | crates/smolvm-cudart-shim/src/lib.rs:2236-2245 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":2158}}}],"partialFingerprints":{"codehealthFindingId/v1":"84dc5a8b47eb1f8459d6df00514fc9fa1ae499fa62f675b9aae9066c25c195ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:4843-4852 | crates/smolvm-cudart-shim/src/lib.rs:4856-4865 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":4843}}}],"partialFingerprints":{"codehealthFindingId/v1":"e92fe4a001afc395bb6c26a6b9c9b780114e2c54a8b1c360460190ef5d166fbe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:6148-6157 | crates/smolvm-cudart-shim/src/lib.rs:6179-6188 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":6148}}}],"partialFingerprints":{"codehealthFindingId/v1":"edeec9c1abac4aa36ce5f311e874fb3721c506d7b4af14ac4f64d6c38488db65"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-pack/src/assets.rs:555-564 | crates/smolvm-pack/src/assets.rs:1698-1707 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/assets.rs"},"region":{"startLine":555}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddc4a23ab6bb70ed9eb888b2c50833b32f57c9b4e237e288e14a3e9b6d77d540"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-pack/src/assets.rs:1751-1760 | crates/smolvm-pack/src/assets.rs:1767-1776 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/assets.rs"},"region":{"startLine":1751}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fd2cea4805b81a74e78cea359075e4ad58074a2c601f336549770c2808a8ed7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-pack/src/format.rs:150-159 | crates/smolvm-pack/src/format.rs:289-298 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/format.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec94abe616daa24160ffaa69b1d0a8594fd5f615e61c33984517152ce8287057"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): crates/smolvm-registry/src/client.rs:496-504 | crates/smolvm-registry/src/client.rs:656-665 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8134b5cf16faffb72b33feee0406ab61ac0f35d530aab45935981312481661a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/agent/fork.rs:61-70 | src/agent/fork.rs:77-86 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b10cd0bb25baf1b95c8339db362b2c51d2eb237da3e0dc7dcd0d93557802623"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/agent/fork.rs:1232-1241 | src/agent/fork/compact.rs:172-183 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":1232}}}],"partialFingerprints":{"codehealthFindingId/v1":"58d97280434f4e45966300b17c2289ea93eb3b9d872646f44b5b9a184f2afca8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/api/handlers/exec.rs:210-219 | src/api/handlers/exec.rs:541-550 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e3238f1c8d52a4c8b8344ca877f8b8ce0b4e9bb7c92b1542a9a9a6e5131b4b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/api/handlers/pools.rs:352-361 | src/api/handlers/pools.rs:379-388 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/pools.rs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d19e75e1274f877b8baa56c82b5823473a816e31dcb44ecd951c8b494735a7f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/cli/machine.rs:1917-1926 | src/cli/machine.rs:4998-5007 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":1917}}}],"partialFingerprints":{"codehealthFindingId/v1":"752388aa70a28c336fcf866628ed56802d3ee3e4b4f89bc36d8008d777c2c792"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/cli/machine.rs:5005-5014 | src/cli/machine.rs:5496-5505 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":5005}}}],"partialFingerprints":{"codehealthFindingId/v1":"462af9c3b42c4544249a6462087d665dfc4cab2e77051011c08b65a85bc53686"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/cli/pack_run.rs:1369-1378 | src/cli/pack_run.rs:1403-1412 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":1369}}}],"partialFingerprints":{"codehealthFindingId/v1":"c923d639b2c717e99a7ddf5e2743606923db828fe7293d705005d96bb854429d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): src/cuda_daemon.rs:498-506 | src/cuda_daemon.rs:4346-4354 | src/cuda_daemon.rs:4385-4393 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcc9c36469407dc917b8c6b5e7f502cda8f51830b9b6cb5ad141d771e13683c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): src/embedded/runtime.rs:545-553 | src/embedded/runtime.rs:607-615 | src/embedded/runtime.rs:654-662 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"05c92db7a7985351a53b0c82c238c71a7eeba86147633955a36e368de77f433b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/smolvm-agent/src/main.rs:5739-5747 | crates/smolvm-agent/src/main.rs:5910-5918 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":5739}}}],"partialFingerprints":{"codehealthFindingId/v1":"1490aba9e75202f5798ccd3d137bc38457e97a7ed5aa79d4fd5b6d2f1174de8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/smolvm-agent/src/main.rs:6272-6280 | crates/smolvm-agent/src/main.rs:6515-6523 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6272}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb336598a7e84f4d069ffa6e6e81c51af5650aa6debfc9c9f0943c4398792c67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/smolvm-agent/src/oci.rs:407-415 | crates/smolvm-agent/src/oci.rs:435-443 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/oci.rs"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"85219a8e6f647d960019760d6dcdd78ea86b59701b747bd7044e5e82a3cf72f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:410-417 | crates/smolvm-cuda-shim/src/lib.rs:430-438 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6562e149989d4b6a4876bcd38f738d69df9fc3926a67db924a5e1cf110ccd0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/smolvm-cuda/src/host.rs:2921-2929 | crates/smolvm-cuda/src/host.rs:2951-2959 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":2921}}}],"partialFingerprints":{"codehealthFindingId/v1":"b81a1d57d59300f1eb88b8bb6d4380320ffc7d652225516ce527ed8db864bcdb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/smolvm-cuda/src/proto.rs:1260-1268 | crates/smolvm-cuda/src/proto.rs:1283-1291 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/proto.rs"},"region":{"startLine":1260}}}],"partialFingerprints":{"codehealthFindingId/v1":"332c81d51afcd8794af9f99d121395ec97b76919f33751ed55fc7efe7a3f0919"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:4811-4819 | crates/smolvm-cudart-shim/src/lib.rs:4826-4834 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":4811}}}],"partialFingerprints":{"codehealthFindingId/v1":"875ae58d8a88d02c0abf63f24444bb16b12e6fdb8a0bb35bfbfdbf8be8d4fbed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:5336-5343 | crates/smolvm-cudart-shim/src/lib.rs:5362-5370 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":5336}}}],"partialFingerprints":{"codehealthFindingId/v1":"88fbc0122751db1143e93cdd8a9d1e0b0be9b778c07192986f214b06194364d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/smolvm-registry/src/client.rs:301-309 | crates/smolvm-registry/src/client.rs:837-847 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"caa565d7f62ac0223f9109dbe693ce1f7cc52057de0d35e4df7fa457ec735ce3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/smolvm-registry/src/client.rs:299-307 | crates/smolvm-registry/src/client.rs:1090-1098 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b63ca902805eef86dba99c668b13e7945af8f9b1db2ac1cc367c5694303af73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): crates/smolvm-registry/src/token_store.rs:137-144 | src/portable_checkpoint.rs:3893-3901 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/token_store.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"1caca98ac6a068c503a328a29ce0bbcfd502100d2d777e1a68461480a90956d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/api/handlers/files.rs:131-139 | src/api/handlers/files.rs:281-289 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/files.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"711fa372bcdecbe548c710986ecb8d610727eb0bfc934b9de85a0720c6328ced"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/api/handlers/machines.rs:155-163 | src/api/state.rs:2171-2179 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"f23654c585b76e9a22beefcd58011309b2dc79e62edb9a82e8fb4731074b19d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/api/handlers/pools.rs:1194-1202 | src/api/pool_controller.rs:519-527 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/pools.rs"},"region":{"startLine":1194}}}],"partialFingerprints":{"codehealthFindingId/v1":"f479919dfa582270eedce51269cd76d20e367b58f8eba5eed6f7abeaef7d9dd5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/cli/machine.rs:1642-1650 | src/cli/machine.rs:1804-1812 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":1642}}}],"partialFingerprints":{"codehealthFindingId/v1":"9789064c7ccb1265ea464edd7fb657a041fa30ebd6851ee524471d78215c1516"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/cli/pack.rs:792-800 | src/cli/pack.rs:811-819 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":792}}}],"partialFingerprints":{"codehealthFindingId/v1":"4138d5a087ce3ea8ebf2b8034171180df85184fd89bf37e20652635d4a62a301"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/cli/pack.rs:998-1006 | src/pack_export.rs:1495-1503 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":998}}}],"partialFingerprints":{"codehealthFindingId/v1":"554774ec38e6e4052136d28ef08a76325051e5116c163f0d9156f42ba04cca76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/cli/pack.rs:1893-1901 | src/cli/pack.rs:2143-2151 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1893}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f3275eaf81c19eaabc568a7564d7b87d7972a22725d80608d25f45fb46c4600"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/cli/pack.rs:2236-2244 | src/cli/pack_run.rs:2113-2121 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":2236}}}],"partialFingerprints":{"codehealthFindingId/v1":"2934fe636a5765b9cc74bb5f06e7dda1c913f0e922a94a3178c3ae402df2e63e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/cli/pack_run.rs:596-604 | src/cli/pack_run.rs:1866-1874 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e9c4a9987fb9d4aa077357472edcae27a46cf405cd4b666c1e291034f92bec2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/cli/vm_common.rs:835-843 | src/cli/vm_common.rs:2209-2217 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":835}}}],"partialFingerprints":{"codehealthFindingId/v1":"c32fbbfae8cf79d662bec583f51718b3f3e5da2c63d7055a18287d7162d293cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/cuda_daemon.rs:2318-2326 | src/cuda_daemon.rs:2527-2535 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":2318}}}],"partialFingerprints":{"codehealthFindingId/v1":"24efcec91cd913102773ecbbd3408588870c82e32534b5ffbd0a57ea6d3197d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/cuda_daemon.rs:2741-2749 | src/cuda_daemon.rs:5530-5538 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":2741}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cec7fffdb6778326190e286fc8f93748e299405b20bb5f5cbcbeb21a1f2b1d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/cuda_daemon.rs:5739-5747 | src/cuda_daemon.rs:5764-5772 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":5739}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd540c527eebbdce6fece6190c02b316e6f739e1b2651f3084573e51f6bccae6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/staged_mount.rs:93-101 | src/staged_mount.rs:132-140 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/staged_mount.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"432768dbd33bc518429c1334a89d636428567447b1c43bf052b766414d025557"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 5): crates/smolvm-s3fs/src/fs.rs:714-720 | crates/smolvm-s3fs/src/fs.rs:845-852 | crates/smolvm-s3fs/src/fs.rs:995-1001 | crates/smolvm-s3fs/src/fs.rs:1022-1029 | crates/smolvm-s3fs/src/fs.rs:1046-1052 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/fs.rs"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f100c97221920ef61906cb5201c15ccf62726f15cb861f099e8ad3a4a91b7ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): src/api/handlers/exec.rs:114-121 | src/api/handlers/exec.rs:175-182 | src/api/handlers/exec.rs:654-661 | src/api/state.rs:1870-1877 \u2014 there are 4 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 4 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"879f06b25b884a99ee90212d9276224172ed2506ca1320fbba817b18c9058572"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): crates/smolvm-agent/src/storage.rs:3353-3360 | crates/smolvm-agent/src/storage.rs:3459-3466 | crates/smolvm-agent/src/storage.rs:3730-3737 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":3353}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e29c7e4bd644ea3bff2340c2699ddfd84b71ac0f04e0477dce1f0e0041a9109"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): crates/smolvm-checkpoint/src/store.rs:951-958 | crates/smolvm-checkpoint/src/store.rs:2779-2786 | crates/smolvm-checkpoint/src/store.rs:2900-2907 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"04c14dfc9fe2855ada89ed3d5c1e1f4aba47ca0223332e6c644ce4e1d68a4bfe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): crates/smolvm-cuda/src/host/gpu.rs:3124-3131 | crates/smolvm-cuda/src/host/gpu.rs:3153-3160 | crates/smolvm-cuda/src/host/gpu.rs:3177-3184 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":3124}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b87860d8a469a39d75614fc954447c7f8aaf29e84d5f712e501dea8606c52f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): crates/smolvm-cuda/src/host/gpu.rs:3133-3141 | crates/smolvm-cuda/src/host/gpu.rs:3162-3169 | crates/smolvm-cuda/src/host/gpu.rs:3186-3193 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":3133}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a6829df478fadce5fcdc8f1cbb290c2994fb35aba3f08f7ef842ada539cf06d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): crates/smolvm-pack/src/packer.rs:339-346 | crates/smolvm-pack/src/packer.rs:599-606 | crates/smolvm-pack/src/packer.rs:690-697 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/packer.rs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"05023b688aaecfb8bee8ab052cf0593d854076d4929a07dbd548bfc85924781b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-agent/src/main.rs:6316-6323 | crates/smolvm-agent/src/main.rs:6574-6581 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6316}}}],"partialFingerprints":{"codehealthFindingId/v1":"4288f7091265a8f4a82ec1a8fe07ec8f6c89d0985bad3730bc06ac26979c5348"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:94-101 | crates/smolvm-cudart-shim/src/lib.rs:1289-1296 \u2014 before extracting anything, compare \u0060crates/smolvm-cuda-shim/src/lib.rs\u0060 and \u0060crates/smolvm-cudart-shim/src/lib.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 87 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef8f5f02047b353463b31a74fcc083f366c4778b52eca85b74e12b3e353f04d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:638-645 | crates/smolvm-cuda-shim/src/lib.rs:648-655 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"01c06bf7bdbb0d482c3ea3290873bf88ec291395f49b6336c15fddc0869b3635"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:1803-1810 | crates/smolvm-cuda-shim/src/lib.rs:4140-4147 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":1803}}}],"partialFingerprints":{"codehealthFindingId/v1":"e36f63902f659b95d87549ba3827bbeb0d64fa236b4aee1e2c84746b753a46dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:2105-2112 | crates/smolvm-cuda-shim/src/lib.rs:2121-2128 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":2105}}}],"partialFingerprints":{"codehealthFindingId/v1":"abbde19091e53583830824bbdd3b21a08e7df4b434e8723d79937c32b0b34b3d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-cuda/src/client.rs:607-614 | crates/smolvm-cuda/src/client.rs:882-889 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/client.rs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"90de8586a27cffe6c2f74af270e7972574addc637601639ce54743bf8311a1ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-cuda/src/host/gpu.rs:2153-2160 | crates/smolvm-cuda/src/host/gpu.rs:2401-2408 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":2153}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ce54a52bf4077cbf7e3e5f44b59842016fdebc372460ee39a1f89acdbf8c7ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:2170-2177 | crates/smolvm-cudart-shim/src/lib.rs:2248-2255 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":2170}}}],"partialFingerprints":{"codehealthFindingId/v1":"84bf5354c74729e020424da75492ac9396afd7e700ec0d27aa9bfcff9df48caf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-pack/src/packer.rs:869-876 | crates/smolvm-pack/src/packer.rs:915-922 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/packer.rs"},"region":{"startLine":869}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebc2d2dce5f462333ce7ca970bcf909a14b769bec2110f483141dc9b30381e6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-pack/src/packer.rs:993-1000 | crates/smolvm-pack/src/packer.rs:1025-1032 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/packer.rs"},"region":{"startLine":993}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a7dc300e0d538868fd33ba1b2dd61ccd3a28acf8463b8c68fa24e395f71f4e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/agent/launcher.rs:2666-2673 | src/agent/launcher_dynamic.rs:1284-1291 \u2014 before extracting anything, compare \u0060src/agent/launcher.rs\u0060 and \u0060src/agent/launcher_dynamic.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 45 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":2666}}}],"partialFingerprints":{"codehealthFindingId/v1":"3db107eceff53d88aa7aeb94acb54b1bd8664371d0b48d4630db743cab35db50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20138 lines \u00D7 3): src/api/device_handoff.rs:329-336 | src/cuda_daemon.rs:504-511 | src/cuda_daemon.rs:4357-4360 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/device_handoff.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"fabf7039c55fd0adc6bdb7de5f1dcfe57a3d6cdc515b7f786500228bfa067513"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/api/handlers/machines.rs:2998-3005 | src/cli/machine.rs:5372-5379 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":2998}}}],"partialFingerprints":{"codehealthFindingId/v1":"7235c068891aa9f2bd74cd1c21d5d8f6b19755e1653b03b488601220968923b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/api/handlers/machines.rs:4143-4150 | src/api/handlers/machines.rs:4160-4167 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":4143}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ebed8f8a7ceabe57bc10b1024b3ad0b1136b6e2b7ebaeea78d21bd7da868b07"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/api/handlers/machines.rs:6628-6635 | src/api/handlers/machines.rs:7299-7306 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":6628}}}],"partialFingerprints":{"codehealthFindingId/v1":"49eb77ea6d9e4c300918fba1964228f2dfd70fc64bccaa936ec769f45b6c6868"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/cli/pack_run.rs:1900-1907 | src/cli/pack_run.rs:2330-2337 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":1900}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eaac82f0d01b14973bef99ac058a42a43482afd813976789bbdd8d5b0b60e4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/cuda_daemon.rs:3449-3456 | src/cuda_daemon.rs:3506-3513 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":3449}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d66405adafe5fba9c90c7afc16f7190c7683c381bf4a73d1a78d93ae97b08d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/cuda_host.rs:410-417 | src/cuda_host.rs:441-448 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_host.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f13b4282ee367a4ec54ad6d26b3e461eef7092de62eda24eeab3ce90175e750"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/portable_checkpoint.rs:4255-4262 | src/portable_checkpoint.rs:4849-4856 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":4255}}}],"partialFingerprints":{"codehealthFindingId/v1":"760f1c07e8c9e827a2840acb3594206aa98e5b8966d6de9914d764f26bf24b43"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/portable_checkpoint.rs:5149-5156 | src/portable_checkpoint.rs:5178-5185 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5149}}}],"partialFingerprints":{"codehealthFindingId/v1":"151e717935ff29ee915d1b46e06a91509728feaf38a8d85fa33aea3d95cc4e6a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): crates/smolvm-checkpoint/src/store.rs:1008-1014 | crates/smolvm-checkpoint/src/store.rs:2790-2796 | crates/smolvm-checkpoint/src/store.rs:2963-2969 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":1008}}}],"partialFingerprints":{"codehealthFindingId/v1":"45c8dd341ffb02b55882205dd087b7d5b732aba1768a4a878ac61da158647a9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): crates/smolvm-cuda/src/host/gpu.rs:3597-3603 | crates/smolvm-cuda/src/host/gpu.rs:3633-3639 | crates/smolvm-cuda/src/host/gpu.rs:3692-3698 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":3597}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f43cad29f6aafb9dc1c767fb0317c4cda9e1478e7c2ea5a7fb5b603eb1c7e71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): crates/smolvm-cudart-shim/src/lib.rs:5537-5543 | crates/smolvm-cudart-shim/src/lib.rs:5609-5615 | crates/smolvm-cudart-shim/src/lib.rs:5644-5650 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":5537}}}],"partialFingerprints":{"codehealthFindingId/v1":"d47a9163b052da7a6f1087419078be10c723ab30f1aed03da0c69ce9d34199e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20137 lines \u00D7 3): src/api/device_handoff.rs:328-333 | src/cuda_daemon.rs:502-508 | src/cuda_daemon.rs:537-542 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/device_handoff.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5dc94552be4637a5657e43c28c3712e729e8215cf70207f1d495a9fa3426083"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/api/handlers/machines.rs:5906-5912 | src/api/handlers/machines.rs:6018-6024 | src/api/handlers/machines.rs:6363-6369 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":5906}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2998cef4021969ca8f49708aeafda2432ea07c6d006e99608ca627d428929c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/smolvm-agent/src/main.rs:6162-6169 | crates/smolvm-agent/src/main.rs:6448-6454 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6162}}}],"partialFingerprints":{"codehealthFindingId/v1":"33514194670aef451e7b4254778af3bdc064f440cdd7d96950db43ff512b1ab1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/smolvm-agent/src/ssh_agent.rs:175-181 | crates/smolvm-agent/src/ssh_agent.rs:184-190 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/ssh_agent.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5e80bfceb997b715bc5b08ced9b9abf28059abc2f1ad76d83784d5463ef4c85"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:1615-1621 | src/data/image_source.rs:431-437 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":1615}}}],"partialFingerprints":{"codehealthFindingId/v1":"160744ca49a3b5f1799f8cc6592bc8af6d6241d9521437fadc374595f738994e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:1171-1177 | crates/smolvm-cuda-shim/src/lib.rs:1375-1384 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":1171}}}],"partialFingerprints":{"codehealthFindingId/v1":"6919e03dfa0086d557781f8b54633de0dfcaa119dbee540941827f324ec1ff1e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:1123-1129 | crates/smolvm-cudart-shim/src/lib.rs:1139-1145 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":1123}}}],"partialFingerprints":{"codehealthFindingId/v1":"e96dcf25bf1d8448aff090ba99744b0ea0d850d49d03d6226e5e25a5500cb38f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (2\u20137 lines \u00D7 3): crates/smolvm-pack/src/extract.rs:3598-3604 | crates/smolvm-pack/src/extract.rs:3699-3700 | crates/smolvm-pack/src/extract.rs:4178-4184 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":3598}}}],"partialFingerprints":{"codehealthFindingId/v1":"69238d0bba10381cc944331b830d87d53268e85e7ecc04910846394ae3a296c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/agent/client.rs:2103-2109 | src/agent/client.rs:2130-2136 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":2103}}}],"partialFingerprints":{"codehealthFindingId/v1":"c856efa6ce54506b68bcc9228d172a3ae800d92797dbec8a3eb899696ec53b5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/api/handlers/exec.rs:122-128 | src/api/handlers/exec.rs:185-192 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"93850abf6338ef804fd485623902ba22e360f91be122dc3ea921322355bc5fcb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/api/handlers/machines.rs:5025-5031 | src/api/handlers/machines.rs:5161-5167 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":5025}}}],"partialFingerprints":{"codehealthFindingId/v1":"09664049ee0d59adb08797c78e5b37deb08995a1919723ed12786f5f8265ad96"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/api/handlers/machines.rs:6342-6348 | src/api/handlers/machines.rs:6720-6726 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":6342}}}],"partialFingerprints":{"codehealthFindingId/v1":"c059202f7d49863dca674dbde01807c81145ea6aa18811ad2adb45844529f2c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/cli/vm_common.rs:1214-1220 | src/embedded/control.rs:636-642 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":1214}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c21b6a7875537fc2e27e213693ab0cf2d16936f3eef7044e786167ddbd47458"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/cuda_daemon.rs:6109-6115 | src/storage.rs:310-316 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":6109}}}],"partialFingerprints":{"codehealthFindingId/v1":"4caecf85e55b8229441abb35e4817c793292e937d0c60a3c4c3919dda93da755"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/cuda_host.rs:337-343 | src/cuda_host.rs:428-434 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_host.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a8b1b864082e324b6d361b3afb17c4e6591ffc994dbc6ad863ed9b2113377d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/embedded/runtime.rs:754-760 | src/embedded/runtime.rs:791-797 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a60042f57f4217cbc3363be0c1776478b7968abc7aa01f1d054d832900faed3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/portable_checkpoint.rs:5588-5594 | src/portable_checkpoint.rs:5690-5696 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5588}}}],"partialFingerprints":{"codehealthFindingId/v1":"e43ceb12beef86532720e5615ecdb65c645cff3ecea1adff535e95f3b4dca3ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): src/api/handlers/machines.rs:6566-6571 | src/api/handlers/machines.rs:6627-6633 | src/api/handlers/machines.rs:6824-6830 | src/api/handlers/machines.rs:7298-7304 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":6566}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d73040dfb824a04607b9f77cf188e9f35868bee419f411183eb0cc56c7d8ed6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): crates/smolvm-agent/src/network/linux.rs:605-610 | crates/smolvm-agent/src/network/linux.rs:650-655 | crates/smolvm-agent/src/network/linux.rs:718-723 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/network/linux.rs"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2915fe43cc6aadf235b686a04b7a60f215ccbafc8e1857c49b5aab8d1706f17"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): crates/smolvm-cuda/src/host/gpu.rs:3603-3608 | crates/smolvm-cuda/src/host/gpu.rs:3639-3644 | crates/smolvm-cuda/src/host/gpu.rs:3704-3709 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":3603}}}],"partialFingerprints":{"codehealthFindingId/v1":"de359d9ccce31b3e4af6f63a886abb588e82c1d8261784922d0d0ec6891efed6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): crates/smolvm-network/src/dns_relay.rs:114-119 | crates/smolvm-network/src/icmp_relay.rs:113-118 | crates/smolvm-network/src/udp_relay.rs:95-100 \u2014 before extracting anything, compare \u0060crates/smolvm-network/src/icmp_relay.rs\u0060 and \u0060crates/smolvm-network/src/udp_relay.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 60 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/dns_relay.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"572502032efc2e3e4c88bfe040bd42788322e2f333be356b39971e5cc0991876"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): src/api/handlers/machines.rs:6341-6346 | src/api/handlers/machines.rs:6425-6430 | src/api/handlers/machines.rs:6719-6724 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":6341}}}],"partialFingerprints":{"codehealthFindingId/v1":"158405df4df1fd55ab7947720aec3733dff3adf1dc176e02bea577ba685bcbf0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:3390-3395 | crates/smolvm-agent/src/storage.rs:3471-3476 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":3390}}}],"partialFingerprints":{"codehealthFindingId/v1":"44459d92d733157a70ad108ccf0952ee86e6c4d96f38723002e33abd24b2f626"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:3618-3623 | crates/smolvm-agent/src/storage.rs:3748-3753 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":3618}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2e55071cc36e6e2d78ac74732bb6dd582c14addab5cf3e731c07ebdf6043a78"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:119-124 | crates/smolvm-cudart-shim/src/lib.rs:89-94 \u2014 before extracting anything, compare \u0060crates/smolvm-cuda-shim/src/lib.rs\u0060 and \u0060crates/smolvm-cudart-shim/src/lib.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 87 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b4e57135a2d6a730aab10efe3607210097bb87a2684ccd3542543b75e45fc18"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:131-136 | crates/smolvm-cudart-shim/src/lib.rs:100-105 \u2014 before extracting anything, compare \u0060crates/smolvm-cuda-shim/src/lib.rs\u0060 and \u0060crates/smolvm-cudart-shim/src/lib.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 87 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"03201ab67df52504c000c4ff83904d3412a67b57a8f41a4bcbf4336cdad0a4b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:156-161 | crates/smolvm-cudart-shim/src/lib.rs:122-127 \u2014 before extracting anything, compare \u0060crates/smolvm-cuda-shim/src/lib.rs\u0060 and \u0060crates/smolvm-cudart-shim/src/lib.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 87 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f77851192f32a1df4383d92a8e3b03d02ded43aa50990cb4cfeb8687da3dbe0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:2383-2388 | crates/smolvm-cuda-shim/src/lib.rs:2523-2528 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":2383}}}],"partialFingerprints":{"codehealthFindingId/v1":"83db7114c78ad3c5e47c2940deaa577dc5fc0d8a8cfdba6d3829e4981e4d343b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-cuda-shim/src/lib.rs:4133-4138 | crates/smolvm-cuda-shim/src/lib.rs:4157-4162 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":4133}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ac05a75c5386e52a8f3f20f5ce443b8261836442e4dff96e3917652d9e13a02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-cuda/src/host/gpu.rs:2929-2934 | crates/smolvm-cuda/src/host/gpu.rs:2952-2961 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":2929}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bbe7bc9107a05556f2bd21f9673a045951c604f9e9362bf08ce433e1a6e6e88"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:3638-3643 | crates/smolvm-cudart-shim/src/lib.rs:3705-3710 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":3638}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7e63b3a22a3612e6ae6ed75090bb4c931dbb28ced5d533fb647561a0a9b49cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-cudart-shim/src/lib.rs:5972-5977 | crates/smolvm-cudart-shim/src/lib.rs:6051-6056 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":5972}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b7fe90a05567179a711054a1c5d1b8bcafcea4debee73f33f9fdc9f7d40672c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-network/src/dns_relay.rs:366-372 | src/dns_filter.rs:99-104 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/dns_relay.rs"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"85b6c5251e2115c51e288ebb751f242a884d246a009badc0e70e671c2741878c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-pack/src/assets.rs:260-265 | src/checkpoint_delta.rs:331-336 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/assets.rs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"0791cdcbcf3ed6d516a8669a2725c8f14906eda8fade0a78b4a31f20639cb04d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-pack/src/extract.rs:3786-3791 | crates/smolvm-pack/src/extract.rs:3802-3807 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":3786}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8f650419443ee5a2a7a9c0458fdfd687b6c5d04e7ef48fce842fa1456769cd4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-pack/src/extract.rs:5255-5260 | crates/smolvm-pack/src/extract.rs:5271-5276 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":5255}}}],"partialFingerprints":{"codehealthFindingId/v1":"de17a6cef8c1e693081cdeea4f73f8c75ec554737eacd1e9092f8a6bae3a2b63"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-pack/src/extract.rs:5535-5540 | crates/smolvm-pack/src/extract.rs:5604-5611 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":5535}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5972a2265b6ea7a44c4de755f7ef643c6c5c9785679513609e79f75c8a2413b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5\u20136 lines \u00D7 2): src/agent/fork.rs:1564-1568 | src/agent/fork.rs:1574-1579 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":1564}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f70bd9fe9e5ce3dce37b282e9b03e3942dcc94fd3efae5f31b9f225732e3245"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/agent/launcher.rs:2495-2500 | src/agent/launcher_dynamic.rs:876-881 \u2014 before extracting anything, compare \u0060src/agent/launcher.rs\u0060 and \u0060src/agent/launcher_dynamic.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 45 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":2495}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce91f76813d677bd7370d8334a19b07d7f016335f999cf1e802a822f44831cd9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/agent/launcher_dynamic.rs:99-104 | src/data/disk.rs:491-496 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher_dynamic.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9effbf107e2f6dc5f4160cdb330540cac91be164470dfafda10a1a245fdde8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/agent/terminal.rs:202-207 | src/agent/terminal.rs:217-222 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/terminal.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"b919dcbfc133491d9936284aa15a90832b166f9019d1de384cf9987dbe1b6d3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/api/handlers/machines.rs:4026-4031 | src/api/handlers/machines.rs:5837-5842 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":4026}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0a5162671225e2903f1497e1a84be7e22aac1345c6775a6558fd1cb6c9c737a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/api/handlers/machines.rs:4382-4387 | src/api/state.rs:1873-1878 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":4382}}}],"partialFingerprints":{"codehealthFindingId/v1":"893353a6667c70cc0d8797451b6d4e02060ada1014db5d51f7a52be44ae7f6e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/api/handlers/machines.rs:5813-5823 | src/api/handlers/machines.rs:5998-6003 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":5813}}}],"partialFingerprints":{"codehealthFindingId/v1":"3671df28d4d4e76a494d5d5a973e676ab4a1d314bb10dfb4d0fb68e6074f5f34"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/cli/serve.rs:740-745 | src/cli/serve.rs:879-884 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/serve.rs"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"e634ed7e628e83a0a0c4d48353543fe321caf16b83e4c38ad43ab4bea41f906f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/cli/vm_common.rs:844-849 | src/cli/vm_common.rs:2203-2208 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f7233130da6b92d6aa8e284f012a952214e9b3fe5a4b9cd00d17cc4be82c013"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/cuda_daemon.rs:4652-4657 | src/cuda_daemon.rs:4721-4726 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":4652}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4a58687bd4c82439d7b1cc824862ddd5b585683e79e49d17d52a557a8699bc1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/portable_checkpoint.rs:5158-5163 | src/portable_checkpoint.rs:5441-5446 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5158}}}],"partialFingerprints":{"codehealthFindingId/v1":"29b07ba58593d03bcd929b4854056141aa3d20b32252901065b293af3e7bf816"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/cli/pack.rs:1842-1846 | src/cli/pack.rs:1892-1896 | src/cli/pack.rs:2142-2146 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1842}}}],"partialFingerprints":{"codehealthFindingId/v1":"05f55ae30ee92ebedb642f85e6f0279d6906ff65dbedca9326243bf13da3866a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20135 lines \u00D7 4): src/platform/linux.rs:111-115 | src/platform/macos.rs:56-58 | src/platform/macos.rs:262-266 | src/platform/windows.rs:48-52 \u2014 there are 4 copies across 3 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 4 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/platform/linux.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b19edb6358f5cc5b363d3e830c33d37b8f904a419c1ee9fc440c09289d27d65"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/smolvm-agent/src/live_resources.rs:282-286 | crates/smolvm-agent/src/live_resources.rs:354-358 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/live_resources.rs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"e31fa42ca6143a48295910b1552d8e03a27ace6f20f201bc1e2e70538f6b31ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/smolvm-agent/src/nsfile.rs:260-264 | crates/smolvm-agent/src/nsfile.rs:506-510 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/nsfile.rs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"1faf2aae21641fb565f45e7fd178bd8e49c7fecf6868308ed9696ccb80d65ed4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/smolvm-cuda/src/host.rs:3445-3449 | crates/smolvm-cuda/src/host.rs:3462-3466 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":3445}}}],"partialFingerprints":{"codehealthFindingId/v1":"c32190c43940871f640db30fba544eb7eb00ff65554452f5058e4d8fa9f3f92d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/smolvm-cuda/src/proto.rs:957-961 | crates/smolvm-network/src/fabric.rs:140-144 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/proto.rs"},"region":{"startLine":957}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f74e47146289c07496f9b463a60e607feeb22e2a5ed7ff1cb88f2a3c0d3f308"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/smolvm-pack/src/assets.rs:323-327 | crates/smolvm-pack/src/assets.rs:833-838 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/assets.rs"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"7df282d3450e4e71bd1ed8fe9c88c5d458f09bcad5f6859d60a264d1a2683991"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/agent/fork.rs:1511-1515 | src/agent/fork.rs:2131-2135 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":1511}}}],"partialFingerprints":{"codehealthFindingId/v1":"a71c9cfdcbb8bfc27dcdcf70ba4afd51ade3fd435bf49f1f5cb708f3a4c19728"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/agent/krun.rs:548-553 | src/agent/krun.rs:588-592 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/krun.rs"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ae1e49833e0b5b6dbabac7cf6f5f0bc6a952f7826979ce52b9f4238f10801cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/api/pool_controller.rs:275-279 | src/api/pool_controller.rs:281-288 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/pool_controller.rs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b4123c9114c45d814492443c2352d7ac6a83f378202350c4e9af117c572f29a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/cli/machine.rs:1750-1754 | src/cli/machine.rs:2224-2228 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":1750}}}],"partialFingerprints":{"codehealthFindingId/v1":"429007f6f15fbcbcf6d0261afdeafcde3043ebbaf10fe879b55a9aa5bb490135"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/cli/machine.rs:4249-4253 | src/cli/machine.rs:4263-4267 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":4249}}}],"partialFingerprints":{"codehealthFindingId/v1":"87ffd0d37d747a1f0773a271c52c948d904a3a658f957ee95d567b8d2bfb8021"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/cli/pack_run.rs:787-792 | src/cli/pack_run.rs:1990-1994 | src/cli/pack_run.rs:2492-2497 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":787}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd4a44c9d3c0f15c582ec8adca3500fcc37502d4d1c2a396e563e481be0b1674"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/cuda_daemon.rs:5290-5294 | src/cuda_daemon.rs:5317-5321 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":5290}}}],"partialFingerprints":{"codehealthFindingId/v1":"be5bee3ad9d2982c639e6d1c34e68b6308c61afbb1d7e6ed980cd20e49c6308a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/cuda_daemon.rs:5789-5793 | src/cuda_daemon.rs:5816-5820 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":5789}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2a11c0dee867b88048859976b38d7fd60d3bc194a292f74d3f17bae371a5b9e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/portable_checkpoint.rs:5472-5476 | src/portable_checkpoint.rs:5525-5529 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":5472}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5e8ecca9b5cdf7d6f7f817916145b05b7fe6561cbc44515e0d60bae6dcea3f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): crates/smolvm-checkpoint/src/store.rs:1725-1730 | crates/smolvm-checkpoint/src/store.rs:1935-1940 | src/api/state.rs:345-349 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":1725}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4db680dd4d9e7f2bfb4b022a237c090d8decc6a07e939913251f30c0ec5ae80"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-cuda/src/client.rs:268-277 | crates/smolvm-cuda/src/host.rs:3939-3952 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/client.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"efd1bf4d64dff85728f72cd8a6fdcf85052ad07bd4109ed261e4c4d138d5d0fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/smolvm-cuda/src/host.rs:6554-6558 | crates/smolvm-cuda/src/host/gpu.rs:1669-1673 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":6554}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5dca6820ecefb6ff5fac124a9405abbb9467aca49636539799d22db655aa27b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-cuda/src/host/gpu.rs:2842-2849 | crates/smolvm-cudart-shim/src/lib.rs:5284-5291 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":2842}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fca7e26454623a9f403bdb85adf37dacd103db6f6c2b435411e595a6a03c5bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-pack/src/extract.rs:3057-3062 | crates/smolvm-pack/src/packer.rs:122-127 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":3057}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6adaaea8a9a648f3190e2af9a0f92d58ae6bf42eb2b166adbf8ba702bf768a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-shim/src/backend.rs:131-136 | crates/smolvm-shim/src/engine.rs:164-169 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-shim/src/backend.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7a5f7d561f33b5e39ab6a0de5966273dcc7ee07ba221360e554cce30aa626aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/api/cache_base_budget.rs:41-48 | src/checkpoint_retention.rs:454-461 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/cache_base_budget.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"a04ccde8a6e1d588e983e673f44a38c4b31b2380ce2e93444a4f3ae5668b579c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/api/handlers/machines.rs:966-971 | src/api/handlers/mounts.rs:33-38 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":966}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc244420014df598c088ef9d8a8e333ba4e74ce8b58d4f7651a0063c30eef234"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/cli/serve_tls.rs:80-84 | src/embedded/bundle.rs:57-61 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/serve_tls.rs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"2074798e33dad08fcf3dfd2fb04a2579564b039d37998ea9c466d58c04978a0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-pack/src/extract.rs:3776-3781 | crates/smolvm-pack/src/packer.rs:224-229 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":3776}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8041fbb3cea8ce57dfbef1be753a8265d9ac220e3cc70f120b3bd69e6b04631"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-shim/src/engine.rs:157-162 | src/usage.rs:137-142 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-shim/src/engine.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"430eb9222ef297dfb6cc27f8539b6d9a7121f88815c7de8aabbccd2caa0682a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): crates/smolvm-agent/src/main.rs:6172-6192 | crates/smolvm-agent/src/main.rs:6457-6472 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6172}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eb72135ab88c2f2f14c9cf555b28d868513c2999dc04c35e6cec30768d5a5dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): crates/smolvm-agent/src/live_resources.rs:248-263 | crates/smolvm-agent/src/live_resources.rs:324-338 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/live_resources.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9f83ffd627e04183ce16017b81d5ac9821c0c7e21aa5ce1bed1b13e4b1957c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/agent/launcher_dynamic.rs:597-612 | src/agent/launcher_dynamic.rs:620-635 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher_dynamic.rs"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"551462a9ef2aea4d4c20008da9bac9c4fb8e85aff578213729fbc332f77de98e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/cuda_daemon.rs:4174-4188 | src/cuda_daemon.rs:4215-4229 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":4174}}}],"partialFingerprints":{"codehealthFindingId/v1":"f85ad0938afccd8c3db22d7daccfc3e53d0b1c8cf029328e0ab9a8572c5e9548"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/api/handlers/mod.rs:160-173 | src/api/handlers/mod.rs:195-204 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/mod.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5a01a1472e148e286c745c4b054bdf8d7ccb35b2faec9abef4dd1a34b768573"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): src/cuda_daemon.rs:1722-1734 | src/cuda_daemon.rs:1787-1799 | src/cuda_daemon.rs:1843-1855 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":1722}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee8b4be333218ca5bb8cd026dbbd9a37316d1cdfc2802aa13e200538a61e614a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/smolvm-agent/src/main.rs:6201-6213 | crates/smolvm-agent/src/main.rs:6477-6489 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6201}}}],"partialFingerprints":{"codehealthFindingId/v1":"07a5fa7cb48369cded7a3c6498a3b631030510452b3017189108eff687616744"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/smolvm-agent/src/main.rs:6211-6223 | crates/smolvm-agent/src/main.rs:6252-6264 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6211}}}],"partialFingerprints":{"codehealthFindingId/v1":"24530e1055f1f3de267f658602781d746f68ff134af3819f9fabaef8a3590d76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/smolvm-credentials/src/ca.rs:121-133 | crates/smolvm-credentials/src/ca.rs:173-185 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-credentials/src/ca.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"27fdb981d237b532dc05d7047788c636c639b5d3dd182b401f452e42d5a2fb7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/agent/fork.rs:1541-1553 | src/agent/fork.rs:2158-2170 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":1541}}}],"partialFingerprints":{"codehealthFindingId/v1":"72498d648a9849cddbdb32efd503e9b870cb231764fb377ae7c3834b2c70a3d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-agent/src/main.rs:6089-6100 | crates/smolvm-agent/src/main.rs:6389-6398 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":6089}}}],"partialFingerprints":{"codehealthFindingId/v1":"34ba62dbf2afb2abca3aa23675d739541a7fe2fe9a565a4db8052ff69cfe199d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/smolvm-cuda/src/host.rs:3628-3639 | crates/smolvm-cuda/src/host.rs:3670-3681 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":3628}}}],"partialFingerprints":{"codehealthFindingId/v1":"88ba6b628a85e7b124e076ea14604f7c0fdac6d3ec598f60716dda5433df57a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/cuda_daemon.rs:1015-1025 | src/cuda_daemon.rs:1032-1042 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7939c5e9f2ac06fde5eced646a8328f76637c4bfbef8209279af8b27a79cca1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/cuda_daemon.rs:2205-2215 | src/cuda_daemon.rs:2226-2236 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":2205}}}],"partialFingerprints":{"codehealthFindingId/v1":"77d811a8bb9da120f6f6b7c4fcb2ead660b2b986e6febf959f345532421843c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/embedded/runtime.rs:523-533 | src/embedded/runtime.rs:570-580 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"39d79a2e87d2b3cf2d821ff37e9dca0fb32bb816005fa8591b98ef4e2cda0f6c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/agent/video.rs:599-607 | src/process.rs:1330-1340 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/video.rs"},"region":{"startLine":599}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ead74f1e6abfc05b29f59fcc6acd881bc5374597ad35d65c7ce9a580102bb80"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/api/handlers/machines.rs:1155-1165 | src/api/handlers/machines.rs:1170-1180 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"e043c34a2cbf94297bd85845fef5bc1320cc3d6561db3c6f545c36b514c346f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/api/handlers/machines.rs:5852-5862 | src/api/handlers/machines.rs:6722-6732 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":5852}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c384bcaa89a45a9e7b257b1377ca0de131c3eaf5ba4154368fec3e92e2484cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/api/handlers/machines.rs:3641-3651 | src/cli/machine.rs:5699-5709 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":3641}}}],"partialFingerprints":{"codehealthFindingId/v1":"21f65d6614c0e38abdda2c85102173bf82b26d4cd7927ae921ec094e06e408ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/smolvm-agent/src/main.rs:4576-4586 | crates/smolvm-agent/src/main.rs:4619-4629 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":4576}}}],"partialFingerprints":{"codehealthFindingId/v1":"44452747d2b684b7fab7701dd34ede5a4f49e8f82e1e2ba4d9aaef9711ff035f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/smolvm-agent/src/main.rs:8168-8177 | crates/smolvm-agent/src/main.rs:8181-8187 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":8168}}}],"partialFingerprints":{"codehealthFindingId/v1":"892df5380ce6938a3fa9268a16e99fbaa8427b3dbcfe9632b10fce3b0017f48a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/smolvm-pack/src/extract.rs:1796-1805 | src/api/handlers/machines.rs:215-221 \u2014 before extracting anything, compare \u0060crates/smolvm-pack/src/extract.rs\u0060 and \u0060src/api/handlers/machines.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 41 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":1796}}}],"partialFingerprints":{"codehealthFindingId/v1":"f10ed7b78e7ee68270dbd80e1d98e326d3113772bba9e7892ada0a203aa75641"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/smolvm-agent/src/main.rs:2666-2675 | crates/smolvm-agent/src/main.rs:2688-2697 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":2666}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c81d14b3f6c7fc6f065b35db42ab23474040468d7aacba4e172af887569b1c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): src/artifact_cache.rs:630-639 | src/artifact_cache.rs:740-749 | src/artifact_cache.rs:790-799 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/artifact_cache.rs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e87be022d47b2e989af9e40e1a34fd19597b15e8f3bd0739cb8de7f07de4ea4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/pack_export.rs:1212-1221 | src/pack_export.rs:1357-1366 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pack_export.rs"},"region":{"startLine":1212}}}],"partialFingerprints":{"codehealthFindingId/v1":"78cc8381393662f2f5ca84cbcc16c28570d84e42a72ad03ed6167b3a6f8eda99"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/cli/machine.rs:5260-5269 | src/cli/pack_run.rs:1246-1255 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":5260}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ae9fcd9d99e44bc33a9ec405775c53fc19ec2cab8a812c989b42f25797440f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/smolvm-agent/src/oci.rs:1399-1407 | crates/smolvm-agent/src/oci.rs:1411-1419 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/oci.rs"},"region":{"startLine":1399}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf478bb0055dbc54c7356bf02100547defbdd743ba4f08396ed0f089eb6cb5cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/agent/fork.rs:900-908 | src/agent/fork.rs:2118-2126 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":900}}}],"partialFingerprints":{"codehealthFindingId/v1":"c08cec559094c90a4ede487409de2013bf630409ed4a7e1e899f9f1f84324abb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-pack/src/packer.rs:846-853 | crates/smolvm-pack/src/packer.rs:890-897 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/packer.rs"},"region":{"startLine":846}}}],"partialFingerprints":{"codehealthFindingId/v1":"19a12f841715ddc5ba429ba74840702f53bfd5eb39474a869e60851d76ae68aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/disk_utils.rs:563-570 | src/disk_utils.rs:582-589 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/disk_utils.rs"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"0874db8e2351a06b2416b6a5025a6ba08c9aad685da792d21041e4f2ed9c2302"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:196-203 | crates/smolvm-agent/src/storage.rs:255-262 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7ecb8b121f49ad972daec8188210e8a896494672c9c11380601464397491462"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:4299-4306 | crates/smolvm-agent/src/storage.rs:4371-4378 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":4299}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a2b7587cb0f0be693e1c349ca0a56b2b77308eda6b423cbd18c33d7c590d0e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/cli/pack.rs:985-992 | src/pack_export.rs:1482-1489 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":985}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b4e4c97a44ba9748ef54efd483a153523791380b95ea51bb39a34cad7bc732b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/process.rs:1534-1539 | src/process.rs:1719-1726 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/process.rs"},"region":{"startLine":1534}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbe1e2c0d20d28aa6685011dbb3f1f7e654082e2c7f84971d0c2f05eaf975523"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-agent/src/pod.rs:218-225 | crates/smolvm-agent/src/pod.rs:990-997 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/pod.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea5692398bcfe67b6ab1022700b493164bb51edcf0f2a36c1e2b30e7d87b6695"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/cuda_daemon.rs:3123-3130 | src/cuda_daemon.rs:3199-3206 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":3123}}}],"partialFingerprints":{"codehealthFindingId/v1":"29304f5a70d6b4e7a9154e29161be4e9ebad254326e2b244d26ad151fc64c073"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/smolvm-cuda/src/host.rs:4640-4647 | crates/smolvm-cuda/src/host.rs:4673-4680 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":4640}}}],"partialFingerprints":{"codehealthFindingId/v1":"b02f0db118579419e59fa4230c3172caadcac2fa0e6faf5cc172a86384935bbe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/api/handlers/machines.rs:1038-1045 | src/portable_checkpoint.rs:1683-1690 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":1038}}}],"partialFingerprints":{"codehealthFindingId/v1":"dafc1cb634435c12e09b499cd255c6d0f1eaa6f3911fca36fc628cfa0f484fa6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/cuda_daemon.rs:3017-3024 | src/cuda_daemon.rs:3163-3167 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":3017}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec1ff31881b4b7d5c107688a279ed64bcb7eff32a2fbf23cbb1b70dfc81ef549"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): src/agent/fork.rs:2756-2763 | src/portable_checkpoint.rs:1576-1583 | src/portable_checkpoint.rs:1663-1670 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":2756}}}],"partialFingerprints":{"codehealthFindingId/v1":"46a103897365da99c5c24ec426995f9d81d0656f41baa3dcc666e346e50ae798"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/cuda_daemon.rs:2991-2997 | src/cuda_daemon.rs:3141-3145 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":2991}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dc6ef1165e6910b72f8548c657e03df06f8db2123d7434182cbb17103db552f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/cuda_daemon.rs:2198-2204 | src/cuda_daemon.rs:2219-2225 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":2198}}}],"partialFingerprints":{"codehealthFindingId/v1":"468a0ef4c8e1757a9bf4f5e019539e1752caed5133b9c58e207f0f51481623ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/api/rollout.rs:1380-1386 | src/api/rollout.rs:1402-1407 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":1380}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f2157f48fd3a441f1882acfeb2d6d618f0f89e0556b7edeedf2bf9b65872a82"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): crates/smolvm-pack/src/extract.rs:1877-1882 | src/cli/machine.rs:975-980 | src/data/image_source.rs:183-188 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":1877}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7df48f850088acc1e457d1c5c139d266b8c4c02de09ac75ef103869d385beab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/cli/pack_run.rs:705-709 | src/cli/pack_run.rs:2384-2389 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":705}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ce813fd1a6ebafed9f224bb0daeb869eec25b62102cd3e823696581d95ae503"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/cli/pack.rs:977-982 | src/pack_export.rs:1474-1479 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":977}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfe2ea94b6fa30e6f42a2950e35d2e7bf6cf3104f77f32d176fd265348248d8f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/smolvm-agent/src/main.rs:8192-8197 | crates/smolvm-agent/src/storage.rs:5692-5697 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":8192}}}],"partialFingerprints":{"codehealthFindingId/v1":"8baf0d7e35e12a71215203b00319c1102a9e5557efd83c4c8fcf0cee2af6764f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/agent/fork.rs:1622-1627 | src/agent/fork.rs:1681-1686 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":1622}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0e0af138a2dabcf268f7afbb4f8a226859cbed1fc68bfa4c786ab91e2d6731a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/cuda_daemon.rs:1735-1740 | src/cuda_daemon.rs:1856-1861 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":1735}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc85369ed0df4f56248c629276192685a49b037ce0df8a8eae3c7887d92febc8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/embedded/runtime.rs:1227-1231 | src/embedded/runtime.rs:1240-1244 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":1227}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fea0445123058bc118473f3d27724225dc0f950b426c3bf35dec91090136efa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/api/rollout.rs:1089-1093 | src/api/rollout.rs:1261-1265 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":1089}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d8305a6a647fcfd0ce91ce7dd47280b9d7e94fd8b6b87ef04695c5963fa0cd9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/cli/pack.rs:993-997 | src/pack_export.rs:1490-1494 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":993}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bf1874476edf02b8c9cdb78724891530f97bab756fe44afeda387d6fa633dea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/cli/pack.rs:677-681 | src/portable_checkpoint.rs:1563-1567 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"52cb8837026d06f84dd57212503ef38a34f8a6511d46122cf376c248b5456b49"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/smolvm-agent/src/nsfile.rs:695-699 | crates/smolvm-agent/src/nsfile.rs:714-718 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/nsfile.rs"},"region":{"startLine":695}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bef07ae63ceb4e7a16efbc953d028d70a4a45828e97440b445f37409589abbe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/smolvm-agent/src/storage.rs:822-826 | crates/smolvm-agent/src/storage.rs:910-914 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c1c0ad060b403497a79cd72d1f02d9b608a49f13fb8f90e18f9438bd099fef1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/smolvm-cuda/src/host/gpu.rs:3238-3242 | crates/smolvm-cuda/src/host/gpu.rs:3243-3247 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":3238}}}],"partialFingerprints":{"codehealthFindingId/v1":"42800ff7b6858a6873f843793caef914beb5cecb12df395869304e0d039ea9d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/smolvm-pack/src/assets.rs:190-196 | crates/smolvm-pack/src/assets.rs:1621-1627 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/assets.rs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"0faea2b755f5b3606fecbe2ec3fe5c2c06c135440c6d7cbcac8226a4225b6148"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/agent/manager.rs:661-665 | src/agent/manager.rs:766-770 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":661}}}],"partialFingerprints":{"codehealthFindingId/v1":"07cce27b0ff8d8d2c6557e6b01209fa4a2d843407350af72f24b6c282ce83b25"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/api/handlers/exec.rs:365-370 | src/api/handlers/exec.rs:375-380 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"4519123efbb5d1844d34ead9e8331652ab098bd6334467ef3afed926373fd7a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/embedded/runtime.rs:1048-1053 | src/embedded/runtime.rs:1084-1089 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":1048}}}],"partialFingerprints":{"codehealthFindingId/v1":"2da142f2d84291495331eaebb41164e07ae8397a9d75dba603beac90bfd2096a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): bench/workload_dpo.py:69-81 | demo/dpo_train.py:68-80 \u2014 before extracting anything, compare \u0060bench/workload_dpo.py\u0060 and \u0060demo/dpo_train.py\u0060 as WHOLE FILES: 99% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 3 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u0060bench/workload_dpo.py:69\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"bench/workload_dpo.py"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce63d18596f45f037417223b7c3c2cb9274f7eea3e3abbada4a09b6bbf4570bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): bench/workload_dpo.py:48-56 | demo/dpo_train.py:47-55 \u2014 before extracting anything, compare \u0060bench/workload_dpo.py\u0060 and \u0060demo/dpo_train.py\u0060 as WHOLE FILES: 99% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 3 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"bench/workload_dpo.py"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"638f6b600ac498f68df13ba8b612fc5d3dfa8fbba7617a36a89f39065dae3e6b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): bench/workload_dpo.py:63-67 | demo/dpo_train.py:62-66 \u2014 before extracting anything, compare \u0060bench/workload_dpo.py\u0060 and \u0060demo/dpo_train.py\u0060 as WHOLE FILES: 99% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 3 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u0060bench/workload_dpo.py:63\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"bench/workload_dpo.py"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"5afcfa050a4f9a786bc68ed07924646f2f8667b070e23e0fa888cdf3eb3c2ef7"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: smolvm-protocol: smolvm-protocol: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 7 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2f32419ced4e87ae87975c33f339e165232eb554d3f192065549e27279bdd11d"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: smolvm-cuda: smolvm-cuda: abstractness 0.02, instability 0.00, distance 0.98 \u2014 zone of pain \u2014 concrete and depended on by 4 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4e8be0d18e7933d0a2244c503d6b099ef455827a118f39e076c23c566b49ed86"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: smolvm-s3fs: smolvm-s3fs: abstractness 0.06, instability 0.00, distance 0.94 \u2014 zone of pain \u2014 concrete and depended on by 1 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7a034a5e195e4f185c3849348fe3cce8c21a0bca124ff1b1035407579fcbc724"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: smolvm-pack: smolvm-pack: abstractness 0.00, instability 0.25, distance 0.75 \u2014 zone of pain \u2014 concrete and depended on by 3 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ebb6925f6c5072c746bb8efe9726d7483b4ab3f64832e40843b13d75eac6b842"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GpuBackend (LCOM4 81): GpuBackend\u0027s methods fall into 81 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 81 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcba336548d30f503a253abef289e71183919d81e7b428145d26b405f19b3f72"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RunConfig (LCOM4 11): RunConfig\u0027s methods fall into 11 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 11 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":765}}}],"partialFingerprints":{"codehealthFindingId/v1":"b41935d3be1a471b0b7e0966dc8c40740cd253549a7298c6c9f8f21a695e9b46"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: KrunFunctions (LCOM4 5): KrunFunctions\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/krun.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec61646b17c21f3074c68c6bd965ef4bec2bab54a8723a853635c819364dd311"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ApiState (LCOM4 5): ApiState\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/state.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"9822928804fe896e61dca2dbb4722e538265d44fc7af861eae84acdee2c15dd8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/cli/machine.rs: src/cli/machine.rs changed 138 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 125 in RunCmd::run at line 1384. 8 of those changes were fix/bug commits, and the other 130 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/cli/machine.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/machine.rs"},"region":{"startLine":1384}}}],"partialFingerprints":{"codehealthFindingId/v1":"af21978c5c4db854a18bdfb030b7f6ee1ffbcc1fdbc2882f62f4ab60edb15b27"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/agent/launcher.rs: src/agent/launcher.rs changed 65 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 190 in smolvm::agent::launcher::launch_agent_vm at line 673. 1 of those changes was a fix/bug commit, and the other 64 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/agent/launcher.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8aacb4f472c26f6bf3e8c7b7e39ffc5d0b3b669b05e694eced6853a9285a2b5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/api/handlers/machines.rs: src/api/handlers/machines.rs changed 131 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 85 in smolvm::api::handlers::machines::create_machine_to_end at line 2666. 7 of those changes were fix/bug commits, and the other 124 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/api/handlers/machines.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":2666}}}],"partialFingerprints":{"codehealthFindingId/v1":"def12679efacef0175e207f4f8f248f4eaff169afef428fe3eb4a2469a10135f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/portable_checkpoint.rs: src/portable_checkpoint.rs changed 82 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 113 in smolvm::portable_checkpoint::capture_with_completion at line 1951. 2 of those changes were fix/bug commits, and the other 80 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/portable_checkpoint.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/portable_checkpoint.rs"},"region":{"startLine":1951}}}],"partialFingerprints":{"codehealthFindingId/v1":"96496e801820f08e574418008e0f5860068923264e3f81191bdf6f5eefd25f93"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/agent/manager.rs: src/agent/manager.rs changed 69 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 82 in AgentManager::start_via_subprocess at line 2509. 3 of those changes were fix/bug commits, and the other 66 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/agent/manager.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":2509}}}],"partialFingerprints":{"codehealthFindingId/v1":"c94a396f4f6edb782acd44d777883a2521c75af437749f246a3da8e3828700e8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/cli/vm_common.rs: src/cli/vm_common.rs changed 92 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 60 in smolvm::cli::vm_common::start_vm_named_with_db at line 1696. 4 of those changes were fix/bug commits, and the other 88 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/cli/vm_common.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/vm_common.rs"},"region":{"startLine":1696}}}],"partialFingerprints":{"codehealthFindingId/v1":"303d7189506f1c314077d29a2f002f36ddcc8828e3fa8c26a4c1cd7f7f43e283"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/agent/fork.rs: src/agent/fork.rs changed 83 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 62 in smolvm::agent::fork::prepare_forks_reusing at line 2534. 5 of those changes were fix/bug commits, and the other 78 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/agent/fork.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork.rs"},"region":{"startLine":2534}}}],"partialFingerprints":{"codehealthFindingId/v1":"fef0f43069e83922c8e8c756a2046bb347c50cd772a5956240d0f86d25c48eea"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-agent/src/main.rs: crates/smolvm-agent/src/main.rs changed 82 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 58 in smolvm_agent::handle_request at line 2472. 3 of those changes were fix/bug commits, and the other 79 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-agent/src/main.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":2472}}}],"partialFingerprints":{"codehealthFindingId/v1":"1333e843a928e4c84043c529bd7af2283cb3c4924b92ed1a4fd58cbd578fe69c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/agent/launcher_dynamic.rs: src/agent/launcher_dynamic.rs changed 48 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 88 in smolvm::agent::launcher_dynamic::launch_agent_vm_dynamic at line 119. 2 of those changes were fix/bug commits, and the other 46 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/agent/launcher_dynamic.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher_dynamic.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"3711315b6b5b39c5305b1249419e9141d1b98c4bb99966c8abe2d3ead6534625"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-cuda/src/host.rs: crates/smolvm-cuda/src/host.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 292 in smolvm_cuda::host::dispatch at line 4714. 1 of those changes was a fix/bug commit, and the other 12 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-cuda/src/host.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host.rs"},"region":{"startLine":4714}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9efdff26e7ff87ddd8c8f4eac453e7c665882e70ac7ae54a6ce0f94f1904172"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-pack/src/extract.rs: crates/smolvm-pack/src/extract.rs changed 44 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 72 in smolvm_pack::extract::safe_unpack_skipping at line 986. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-pack/src/extract.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":986}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e1769506ba1d5f74c18d53a97217f05b34ec13f70c81beb6a6d82edc8599e40"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/internal_boot.rs: src/internal_boot.rs changed 30 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 65 in smolvm::internal_boot::run at line 78. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/internal_boot.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/internal_boot.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"471443a36e0a3abc1c5c2326de5d2a509750699711a8c74a265f4a253faea2ff"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/config.rs: src/config.rs changed 60 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 29 in VmRecord::updated_egress at line 1487. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/config.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/config.rs"},"region":{"startLine":1487}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f83fd10120ed4a917dcfc3ce4ccd0d2541e6e1b7c2e6302da48998a13fd067b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-agent/src/storage.rs: crates/smolvm-agent/src/storage.rs changed 53 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 32 in smolvm_agent::storage::pull_image_with_progress_and_auth at line 3221. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-agent/src/storage.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":3221}}}],"partialFingerprints":{"codehealthFindingId/v1":"841334b7de03e8655391afd3797c3857ab331034ea9b0acff27882c67f4d781e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-protocol/src/lib.rs: crates/smolvm-protocol/src/lib.rs changed 31 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 48 in AgentRequest::log_summary at line 1180. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-protocol/src/lib.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-protocol/src/lib.rs"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3643efb9e7a3b8399cff307874de6c79ffee2f4cce539429039d2cbc16c552b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/cuda_daemon.rs: src/cuda_daemon.rs changed 16 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 93 in smolvm::cuda_daemon::spawn_clone_worker at line 5348. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/cuda_daemon.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":5348}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ff56c0b02410cc854253769e055ce9f47d6f771a6a9071e58eb1314151d3cbf"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/agent/client.rs: src/agent/client.rs changed 49 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 30 in AgentClient::interactive_session at line 2452. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/agent/client.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/client.rs"},"region":{"startLine":2452}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d86b69984493d4d82b7f2550464eccbd7023b71418097c68993c6d3ba7589b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/cli/pack.rs: src/cli/pack.rs changed 41 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 26 in PackCreateCmd::run at line 683. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/cli/pack.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8bd60233da679aaf4740a6925640ad521540e025f848a2fccdd7703938d87e9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/cli/pack_run.rs: src/cli/pack_run.rs changed 34 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 27 in PackRunCmd::run at line 472. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/cli/pack_run.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack_run.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b54d5d7fe34d6ee89a3659f752535ba62f8b73bac88255c232f9778d22fd4ee"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/cli/serve.rs: src/cli/serve.rs changed 31 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in ServeStartCmd::run_server at line 420. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/cli/serve.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/serve.rs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"540d1f60c3b9777c4031dfd347e55476a30a711cd29aae7d71bfdb8594243c64"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/cli/smolfile.rs: src/cli/smolfile.rs changed 31 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in smolvm::cli::smolfile::build_create_params at line 98. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/cli/smolfile.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/smolfile.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e0c466fe3ce1bae31b1154a12a5816308231c76523c38b17c34cbbde325adc8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-network/src/tcp_relay.rs: crates/smolvm-network/src/tcp_relay.rs changed 20 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 33 in smolvm_network::tcp_relay::relay_stream at line 1252. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-network/src/tcp_relay.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_relay.rs"},"region":{"startLine":1252}}}],"partialFingerprints":{"codehealthFindingId/v1":"63d24e85e8284a3de433d751bf9e4954812a0b00c1a34d2abd8b8bb9304e0670"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-network/src/stack.rs: crates/smolvm-network/src/stack.rs changed 17 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 35 in smolvm_network::stack::run_network_stack at line 232. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-network/src/stack.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/stack.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3aa17b450f408843dd0bf1c8f71cef78e1c5480f6fb7192d3b999bd5d16bedb"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/pack_export.rs: src/pack_export.rs changed 36 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in smolvm::pack_export::reap_stale_export_scratch_in at line 758. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/pack_export.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pack_export.rs"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d71d4ca046b8cf15ca73c7ceaa9c5c54a86dd20050c131fac299bde48499a2"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-cuda/src/proto.rs: crates/smolvm-cuda/src/proto.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 115 in smolvm_cuda::proto::encode_request at line 976. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-cuda/src/proto.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/proto.rs"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea92c0ccc75709f110c84060e0278da92389c3b45e5c6b0152b6a2362e9cd517"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/embedded/runtime.rs: src/embedded/runtime.rs changed 28 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in EmbeddedRuntime::pause_machine_inner at line 221. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/embedded/runtime.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/embedded/runtime.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c2aba1809ec36bf80febbb033fd70f2d85b90a1e24e873d6b321c10dfbc617b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-s3fs/src/fs.rs: crates/smolvm-s3fs/src/fs.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 99 in S3Fs::dispatch at line 710. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-s3fs/src/fs.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/fs.rs"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab5e81b09bbf8588bd4f3752707e00a1df1e1cd865f1654da6722c73be9bab05"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-cuda/src/host/gpu.rs: crates/smolvm-cuda/src/host/gpu.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 78 in GpuBackend::cuda_driver_library_call at line 745. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-cuda/src/host/gpu.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/host/gpu.rs"},"region":{"startLine":745}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cf39c013bf5e9463494c87306c77fc762bf9f9784744f2177966491ce5c578e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/db.rs: src/db.rs changed 22 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in SmolvmDb::claim_fork_pool_slot at line 1545. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/db.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/db.rs"},"region":{"startLine":1545}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f21f617b7beae0316e46d1348aa33fb04f5c4f63b271b6f8fb99a053d0e2770"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/api/handlers/pools.rs: src/api/handlers/pools.rs changed 18 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in smolvm::api::handlers::pools::acquire_lease_inner at line 804. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/api/handlers/pools.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/pools.rs"},"region":{"startLine":804}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4b6a69341ee19eb84e3a877fc5645a9f45aacea23af707acd3cf901e7bba165"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-checkpoint/src/store.rs: crates/smolvm-checkpoint/src/store.rs changed 19 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in smolvm_checkpoint::store::materialize_generation at line 2197. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-checkpoint/src/store.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-checkpoint/src/store.rs"},"region":{"startLine":2197}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0024b2096284583054bb593ec1d8eb6d63ead64e7b12b56a53103a85efdacba"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/api/pool_controller.rs: src/api/pool_controller.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in ForkPoolController::fill_pool at line 541. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/api/pool_controller.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/pool_controller.rs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"23e8bdbc158cdfeb55e7f90b8261c948a219ac72e8ceba4d7a25f32b9afb6f3c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/agent/vnc.rs: src/agent/vnc.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 36 in smolvm::agent::vnc::run_client at line 468. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/agent/vnc.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"52d3b25a1afa32c8da5fea90c68d370310c967506c014d938c741f292090b48a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/network/launch.rs: src/network/launch.rs changed 12 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in smolvm::network::launch::validate_requested_network_backend at line 338. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/network/launch.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/network/launch.rs"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"6abc151e175db3ce52b29bfecc1ed0c40580b57af990eebc2cfaf04709e31cc7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/api/admission.rs: src/api/admission.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 34 in PoolAdmissionState::observe at line 251. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/api/admission.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/admission.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0a128ccd38ca07992b2b7edbdb6a4e053f1b6a66807676f2b90e624fcef05c5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/main.rs: src/main.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in smolvm::main at line 182. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/main.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/main.rs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9f4bd697ce412d5d6af59543f06e4a0481b7a56e4bd52631de4c8462fa4ed51"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-cudart-shim/src/lib.rs: crates/smolvm-cudart-shim/src/lib.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in smolvm_cudart_shim::module_image_len at line 4564. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-cudart-shim/src/lib.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":4564}}}],"partialFingerprints":{"codehealthFindingId/v1":"034865ce549651169f8634963b720cd84a39b0cccb6e5a085f49fdea9c548e32"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/artifact_cache.rs: src/artifact_cache.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in smolvm::artifact_cache::inventory_candidates at line 723. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/artifact_cache.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/artifact_cache.rs"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc1935fb9dc98cab5f43de156e35e6f9f0a48064138c6d28a542494f455304fe"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/registry.rs: src/registry.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in Reference::parse at line 455. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/registry.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/registry.rs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cb8e36ed1942bb8425e1fa47eabbfdf4c66657ab05c39beca1846c924ab748f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-agent/src/nsfile.rs: crates/smolvm-agent/src/nsfile.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in smolvm_agent::nsfile::run_helper at line 67. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-agent/src/nsfile.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/nsfile.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"01e2cc1915c5730d0c3d55435907e1c8562fd006bd6c706a812fac3db7bbf604"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/agent/fork/compact.rs: src/agent/fork/compact.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in smolvm::agent::fork::compact::collect_unreachable_layers at line 905. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/agent/fork/compact.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fork/compact.rs"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b8446dacedc7f1e375b867c543329c7d04c00bf56d8019231bf6532eb7ae5a8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-credentials/src/intercept.rs: crates/smolvm-credentials/src/intercept.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 30 in State::forward at line 381. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-credentials/src/intercept.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-credentials/src/intercept.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"774651dc8f9153decde89e2ea5d5efab7d2f3d95c8f68aed47889b3ba67be5e7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/cuda_host.rs: src/cuda_host.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 26 in smolvm::cuda_host::proxy_to_daemon at line 322. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/cuda_host.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_host.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a270fca5ff2bf9ba4ebc8145fb3d9ca4de16864f10bae9c6c13ba879b878a7c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/agent/fsnotify_watch.rs: src/agent/fsnotify_watch.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in smolvm::agent::fsnotify_watch::run_watch at line 166. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/agent/fsnotify_watch.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/fsnotify_watch.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"b73139d76044d5ba0946ff50f52b15f16b24b23d662de3009a05ea3d3b663df8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-cuda-shim/src/lib.rs: crates/smolvm-cuda-shim/src/lib.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in smolvm_cuda_shim::resolve_proc at line 3957. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-cuda-shim/src/lib.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":3957}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7542233f06f6231bac3f2ac8fc59377548a39345aa5248763b0b9b78e995c9a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-s3fs/src/s3.rs: crates/smolvm-s3fs/src/s3.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in Client::list_dir_snapshot at line 340. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-s3fs/src/s3.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-s3fs/src/s3.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"286e6119a67742bcf0b604c72daf113eba7dbaf3d93266321f8fb122924aa090"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-agent/src/process.rs: crates/smolvm-agent/src/process.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in smolvm_agent::process::wait_with_timeout_cleanup_and_liveness at line 359. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-agent/src/process.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/process.rs"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed045b70f8d96f3d809047df5f623a98b158f09779ecabce321d3d0912ce81d7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/api/rollout.rs: src/api/rollout.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in RolloutExecutor::publish_device_policy at line 1102. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/api/rollout.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/rollout.rs"},"region":{"startLine":1102}}}],"partialFingerprints":{"codehealthFindingId/v1":"cda3fd2458c90c9f0bacc0078c12df6ca38750b8e79aa345416f9ceb5eb7ded7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-protocol/src/credentials.rs: crates/smolvm-protocol/src/credentials.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in CredentialPolicy::validate at line 171. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-protocol/src/credentials.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-protocol/src/credentials.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"378cc14155de64156dc1bb2dc02d5c2747a9bf1500cdd915fd064aa23363dc42"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/vm/backend/libkrun.rs: src/vm/backend/libkrun.rs changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 34 in LibkrunVm::exec_vm at line 101. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/vm/backend/libkrun.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"cffdf0a7e880489223cf0c4e3c43a82c054874d542a937b3b906669dbaaa4b3a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/agent/vnc_client.html: src/agent/vnc_client.html changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in vnc_client.html.startVideo at line 224. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- src/agent/vnc_client.html\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc_client.html"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"87fc6d33da3a7ce43a5663259cc53d854a47c341fa6fa4e599a80b809a1ba9d7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/smolvm-pack/src/checkpoint_stream.rs: crates/smolvm-pack/src/checkpoint_stream.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in CheckpointStream::append at line 206. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-29..2026-10-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-29 04:17:50 -07:00\u0027 --until=\u00272026-10-27 04:17:50 -07:00\u0027 --full-history --no-merges -- crates/smolvm-pack/src/checkpoint_stream.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/checkpoint_stream.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"93e3453c0637a614ed4119f939c92bf912a453bd1aea1943410f919ef3b86a2f"}},{"ruleId":"D20","level":"note","message":{"text":"No ADRs found: No ADRs found. No recognised ADR directory (\u0060docs/adr/\u0060, \u0060docs/decisions/\u0060, \u0060adr/\u0060, \u0060docs/rfcs/\u0060, an \u0060ADR0001/\u0060 folder, or their siblings) exists anywhere in this tree. What was searched, so you can tell an empty log from a search that missed one: every directory under the tree (build output, dependencies and VCS metadata excepted), for a document that is either any non-index page inside a recognised ADR directory, whatever its name and however deeply nested (\u0060docs/adr/use-postgres.md\u0060, \u0060docs/adr/2024/0001-x.md\u0060); or a file anywhere whose name is ADR-shaped (\u00600001-use-postgres.md\u0060, \u0060adr-012-caching.md\u0060); or, when neither turned anything up, a document carrying the decision-record signature (an \u0022Architecture Decision Record\u0022 heading, or Status / Context / Decision / Consequences as section headings). A decision log that clears none of these \u2014 unnumbered files outside any recognised directory, without those headings \u2014 is not seen by this check and this row is then wrong. If that is your case, say so rather than renaming anything; otherwise, consider recording architectural decisions in \u0060docs/adr/\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2bea044ff79d7d275f5a91a6e2f548586178eaf480274c33960ad020c854631"}},{"ruleId":"D26","level":"note","message":{"text":"Projects may be oversized for their cohesion: 1 of 18 project(s) overshoot their size bounds, lowering Project Cohesion to 8.9/10. The most over is \u0060(repository root)\u0060 (146089 LoC, 510 module-visible types across 18 directories). Review these for cohesion \u2014 draw the boundary inside the module first (group each responsibility into its own package or directory and keep the cross-boundary members non-public), since splitting a published package moves types between packages and breaks consumers."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d5a94650dc74886a0f1f08eb9fb6775f1fc395279ef7e901c970c9d26f767a72"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"552f45541fae06efeed09f7e04d56256e5a6acd560e81d05e2524c37496a4e60"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bd4520a96395f3be5ec83b48fdd5ec3d2714b80438a67d9d9d76f4d35e22347b"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d11eab09017e94af92905e65f6d6988789f46cd8a5badc7cd5088ba7003df4bc"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"34a6977a6c0e301347db9c3c844939ef01e132d21941fce28a3de6d622d4d435"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"181d8cfd034d67de4455646f13e8448e80d05def693619d7519764c0d7bef5f8"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6b2d5c8665218b683848c3f39b18b445a9a83a50a8ba6cfe1a14f7aab0a4a3ea"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6bcdb54aacd1a38222c145ce608d9e42b43b0275782de0017d4347964c824fe5"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2783a747a8b74137ab5bb75526b92ee28614c1adf2527427c60b410812632062"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"44e2837496fb8c397ce6508db9fbe91201c17c32292006e95ca1f2f2ac2363b6"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"183fe9319553e7a47029dda669319acb6fd1eb6023983d7d0f3dec3c30cbfb88"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1929878414d599b1415dc4068a86c49eaf8b74a7888c832c9ca010b128df860f"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"53c6a2389fd16a1cf50c3f86bc037384aa26a40c9dcbc90f942de22a88cb9094"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a1f31e3fc38e806c632551480508ae27b2701acddad0a9d80c648ba1fc9463b3"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"866f5db9e17cba13054be81498300d5689d6380b38ab693dd948f99e20adbff5"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c1bb7814097052b3b9e49cf20adb5ffa3c94da3abc00863955683dc4725b2e91"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ae4b19a624088a80ae967fa19fc6e2d3b4d86bf95f6afb9918729adad8224e32"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"82a1893f62fe8dee3fcdaad2e3da3e94b86729172346ee8d336b86cb9d8780c6"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"05dd1cc6a6536213feac72458953b3ecc92da85b7219289a9d2c68054660f8e9"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3c80bf5b8cc475fbdcd7027ab994e34c53195a8e87437532d66ed8cff3ab0c42"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6b562a86ba4fad32d6ccdcd6ca2d4c34c2236a59e5d8276adbfb83a1790cdee0"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a1873f73df2980e05749fb989e4983bd7e44b6790994284629fa7f4a2ef29ad4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"774e84eaf65696bacc627959839c1af1927b88e5fcbe02a78f7a8b8671c240ba"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ab979ab2dc46515c14a5a4f004fc991e04e40404eedb88f91aeaa5242f0df4a2"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"45e43b2cf0f13df69fd5c5d1f3263d8d91ae8a1d217ff414c529a77aebd1ca8d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"311f2b1dd969a2ef73985fc36dd91e65e3d6a6cb49a0706cd68e381199f12c7c"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e9b79a42c1353f66f0a4d39600ecafc51a05b89031e98896312f2acc981a4331"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c4014e7719155abad9ee780737c6a29d8c31bcf1e70b94286734d74edc799576"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"57d823555c0f50a3493fd14230fc2974c80d783a2164e0399518f807a574cc38"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2ba1bd8cd7cc00ffea37dae7b5e07643f624b23874e3cb0759fc3e4878f73406"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"74e9a15e0aaad67b56b01fc904a989f50780d47c2a8d26f4479f4d170548bf18"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6e22fa714af38036b109f9493501c28af262c3a9a1a2d30d80f7ec23c8ecb75e"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1fe915542e9ef9e0e2030d13e5e967c9edc93ad44e0043112709e63c307bce8b"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"93c67239263ced008f6948a23fc91225b82d9ea981b2c200b7bb9b3e6d6a2731"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4a04264eaf0a90ed63886610c9e2251cf5431cabd6d952016a10ea99155c6aad"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7e9323362030c11a89ee75d7211b2720333c55d8869ae68ed4aebea060c08384"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d92d492f279497a97159e521f6a848a5f0fc66e0e4668028d0cca48bba8e0cd2"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fbb3016e08588da0295feed2d3c1aabf07e14aa98db895f7d8608ac6dac5e7fc"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"613343d1b752f35745826fe8d15b453cf20383607c0f92f58d6658c1e8f77558"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f782c0d7a9f0d5d38c75648713b76f1fde3fc1f981d05642591632401bdb112c"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"40e0c9ff3e70ab9b557fc6c0576cc0b57ffe59bc95e2d2bd2a1fc101309fe9ff"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4ad9c28590cde91bcba478789c1ce4532f07301901b8baa271fd4aea2e356618"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9053f48275835dabd703d24f491a37334edf4aa814d350ba7e8c13535f5dd3ba"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b3cb4bfb12196b67ef5e7013935c42447d754f0305ded2a3bedbb63eb7762172"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3bc48308f4fab768e847ce9e802b9ecb3bfd08c80d1038c5cfc976f752701c04"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"36ae3cf65343c30b691540cbeeaa382e6f720cb23b94c73f1dcf0d40c93df2b8"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A05:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"31af52521046ac24b5d81d10f17fc9ea11933308530b2cc8c6787e583338d2c7"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A05:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-4","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"221305fe6c2a445f1c4ba8dfb4fab0edbb3240671f49bd02cb7db84fc93c967d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2df837a86d37148655b5fdb02d754cdc86389c87797cf7882763bbba796a8273"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A05:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"02d0dc71d6566351840ba25693aef22d826257cc2517ed2ba899b3f56c5faed5"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"85a3bd1679641da41a09ae686b47ea3a1bbd04f843c6125249e230581dc89f63"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A05:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"60854abadde90dc3e5b2aae1220339d00b9eaef3c7c02c1fdd73a1516373f2e9"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A05:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-4","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"798084c7155c4e7fad79c65bd0f07250347b25a17e0e0a9d5f591b6900d3b3df"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d7a83ed670ae6dd6bd26c174260dbd9774d824b6179936db5f0f86828f4211bf"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"483da4789970d7c913e6e2c4aeea495eeff5b52b15a6b093284d964538f44aab"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"25edca5b5b75ad0b2a3333bd5bfb06d125b0fabed7d2fd1b8b544a777180c84c"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3f551951363ed68fd2326704dc2644b389c6e7b2b10c63e24833800d8aac5dbc"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6839bfa98fe26b633711f1ea37259818aa79b3f89ac60467ec1ffd8ebaddea9b"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3649e0b1c95520414022b5a44d0a667a8f65fe07aeea8377bf47f5094731dd47"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fb7f5656bc9b0c4ff6cf22959224e97c2c46457e63bd35d7f745d6b073975b92"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e201ce7e320b57f99475dfa06d7a3facaad695d3ce376222f8de93aa76e08fac"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a1cf3aa7e907a126e4f05a846e0c08fdda9699f5085e814044614b8bbb5b57ea"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0f8330308e07c41bf3ca5aa79d667cdbafdb5f8ecdf53360f7196c8a65bac491"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0b3e66ae1606a650041986ca6c22c46813f91f385e9dc15f78a82c9c14de2fad"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ff20f2a6c9429fb2f2d5054d9a99d2db5a1e53134317d09baf8df80a51cd8ed4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f9aac45f3794779f78a4bebb5e0841df6a4bf44a3880c38462bff3a54ea7555e"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f263d29037dabe1a01f6022abd054027de70742f9f8a2a179b92c466246cd0d9"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"24f983e57d11d78e0cba474c1eab911fffd1e0007250e9c55c73943fa5f314b5"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b21ef51d97f04d1a8b921e635aca9ef4e877341aa2c3b0f6eaeabc61234774b6"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4f51d598102786d6fe7ccdb4c5ce07901ce46b3341024418f2338de4b1f69943"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4f92241376401502a76b0521c8325ec5ac4b2679a6c13f66166ec884cf715b80"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"63c4a093cd4d8270d8663d7b47af1062c73ee032c2d6873d217251d788ab2402"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6504d8d1633fd2629c17cb911821ef9d4b240f323d5e1ebac2df01ac4726a04a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8d29b94038490c84613e9786e27a95b1e6778b882160e1bb8b3d7dcc9422beff"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"858eb7f80b7507dfba0c3f1f3da34922e68eec00c263f8d42558fd15e99292b9"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f96de53a9c41aa9762bf4bb7d8c6ceb5328ca215e45d4016e18c2ff1458e371c"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e7aea5ad354bb944fe749ff0e5f574830ccdd11e2edd1cb16678dd3d93b52205"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1de4e8df69f8ea88743a72dc79ebdff0df14ccb12667fe14ae5c33266501ddc5"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5a0307a0e95589e470722eaa1f6edefde899ff9d045423b92eaede73ef396b02"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"855451eb322b80e9c22309f05343d55d411160048b3059476c34034cdd161958"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fb4a23173542d7a1718b502d857067e50a3ab2bcd9e6cbc8252c0d9b2bd57371"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f942f498d240b67fee82289eb3ff4f9679a803d0e57a79d106f90c084ee30aec"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8f26cf859b21a29d8199401b33bcf3af3c7310d1527e0674e2e7f9168d28c86d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"59bdb5a1e8e9e2536fc49c741fcb4259a61a8678fc811d3adeb596662203897f"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9e05a9afdb159c3b4e03fba36ee6c997dfff609cf8e7411f86b673ca79d09a53"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"31e15292ee7781495cff3025f3779e23aded0d07be93120b45c65e1d6518c389"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"76686a21fd43237e8724b040e613ec8e7b4eb0523a0db343472cbf44b7e638a4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9452f25b6ef7ba3cfb9946b2ddbb900f0f7bd7b88126b7a085594334d55ffabd"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7973fd69c53a62722ca791d5d8967c3c6c9c75df53abc31f648e6c16722369af"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d2542699b904854fe2d3bb29c559aae2c03652694d5ce26390e798fe91bdf8a8"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5af221a0a713df6aa43875e37653ab43744fc29dba3d5ea44eaf351c954cd1d8"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1d11b483dfcf915b1cf80342d758e26c1a3f32b269afb2615b61f8aa4d116443"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d3863a2595bb228753ae718bfb2db02eb99929aa10f09e1bd606c6259c16041d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1682a2e5e72b45c7356020406d3a82e61c9d0d3e29993ea3a74aa0d59541b642"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d541a0eb3b2dbe5998fdd42a98fc8d42f993bd63318277a56aeb54e15c268e50"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7d0b1f1b6e42174c545e1063d548a603c1ae6668b5cf7b3f28dacec5ce96be02"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"313e787b071b69318dad3fc0f2c096c9b4810e13794a3b24a42f0fac97a04d21"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"abb0a0ecc909287033bed3675214c2e2a3ad291dc6ee51e9df93097772e0c056"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A05:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cb7ffd157678b71eabb497895cabe9154f41424a92366d3194fb16c6e1bea476"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A05:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-4","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a6443bb9784164c7af2443f224e385a12165e1a9c0a16cd342e626c154c52901"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A08:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fd7f07313ac30d1589d9137a88f5b29c41bb0ee99762ef7487f2c8231319194e"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A08:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ce89a9772c0c1a2fea9eda19d53a4eba0ba908326b14e9a93748b6e9a73ec779"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A08:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ccf5be67e14cd797e27b8f52cf84069f1adcccb4fe68f33ece95737784ba8b04"},"taxa":[{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A01:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"31302920dcc59e5dc93dac101c2889e8a76b7953eac6cc15ff3c4d734ce2b158"},"taxa":[{"id":"CWE-939","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2b5cc6a78fe02a95b2f6755616011982ae866dcba8c2aeaae7b037f36ce19be5"},"properties":{"dependency":{"package":"unsafe-libyaml","version":"0.2.11","advisory":"RUSTSEC-2024-0449","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4975822701b3b96654c82dada9bad969e348a6adefa52cd3bba1b6cfd71c3bb7"},"properties":{"dependency":{"package":"bincode","version":"2.0.1","advisory":"RUSTSEC-2025-0141","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"77d4d5d4357ce0a5ade8f6f76c84914f1a2c80f9fe7358d9854254b760de650a"},"properties":{"dependency":{"package":"zvariant","version":"5.13.0","advisory":"RUSTSEC-2026-0370","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7f6329e2b29fe1ee1dd724766af980b151618490b720201bbdc1839704210c3e"},"properties":{"dependency":{"package":"zbus_names","version":"4.3.3","advisory":"RUSTSEC-2026-0371","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f67f0700e108bacf2f3dfd2008273e31f01b0ea1f2d5f9ef71c4f46ace73bbe9"},"properties":{"dependency":{"package":"zvariant_derive","version":"5.13.0","advisory":"RUSTSEC-2026-0372","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"759d36a63e8483c4a467399ff199fa57fa2e02d89ef311720974588edb9516d4"},"properties":{"dependency":{"package":"anyhow","version":"1.0.102","advisory":"RUSTSEC-2026-0190","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1092cdc16bab90e26caa98781415518f2a1a0fec9b43d183894264e01dcc42b6"},"properties":{"dependency":{"package":"event-listener","version":"5.4.1","advisory":"RUSTSEC-2026-0221","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c64e30c28e3c0e2ac4c865fc1656b78d3404e0bf0484e55f9176b7c5f283f360"},"properties":{"dependency":{"package":"tokio","version":"1.52.3","advisory":"RUSTSEC-2026-0386","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ca383df8f93c1fcb449201c7c47b9fc487e55acf31a9bb60212d29fe36dde189"},"properties":{"dependency":{"package":"block-buffer","version":"0.10.4","advisory":"[GHSA redacted]","reachability":{"kind":"unknown"}}}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d1e2385d7c60e9fb895aef9ac5aab1c6d515b643e756e24d4f5c9ff9dfc2af9a"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0486f367bd38813a72e701e41ef9db6a07ee607b8ea1495d9dbd97f065c0356e"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"91bbe2d1ff727212c403897bbd58571d4b5953aedee61fbb3795ec7bdd622cf7"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9b69a71a260cab93f81d225ae65c7fbd9dc66424bfb03b82de556b5fa50f6e13"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"379952cc8260d41492df55089c60ecf0a89768f751f499835d0eb838dcf52bd0"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4f2fa65782c24ef40d78530e87e1dcfb019afaba0f61e2b83ca467aebf2cc8a1"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9be60db9c0ee832efdae0f8ed2aef92351fa96c814e45e9f43351fe88970b628"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cb33b7975cb1b321f2cb4e0fb6aede8b3c5c48706d15ccbbe2d86fbd82498ba3"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5461d329c76fa84bbcf54e11585f10a3f8d2db13190f4a1a17c3171f6822b104"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b24ddceb55eb578d13477ad9f5f925a5563901cf49b19e229d4f0e9e62940419"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"205aaa45829dc9ed0fe7d94c48005837564378ea6b5fff14101f094e54218b96"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"dc1e7a268e4eed3ecb228aaa34cc9c7496cb8fc576863d1bd4759e807943b1d0"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1e55d6a74e8b1b2b69b7d3320aee8a77a9a846fd6c22e7b3a90721a31ee42374"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"81c8b163cfb77ea035e26a7dfee26ef9b558d1c4c2510f4cbeb397d99236ba75"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"93dcf6a96fc0c57756c4a2359a7abb3451568b46a60efef9a9dda8587c1abfb7"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f8c6245f6b5ae9f596fe264315f122e9144004fae7f7747da86e6d9f8f8c5cfd"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A06:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1120079cafa958cc1afc44533f2768567309f56127b07e0dc0100301eb3ddf50"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8afb668c485109a34fec0b3d03f0e9e2681e1bb5222cc7d4fb9d743b309b27f2"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2032aaad8668fc7b728f0753e8624a56daee679d61f1a1451658ebede28c3461"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"832d05f8b60cd7c65fa2d64dc571997eb567a00d4aaffde760db6eba8ef4079b"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"06e662cdb1f715ebf310235a3ca0a1cd334cf9b361d7fe3477b1019c1ea20fa7"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"21ca1441bfdc5dedc6122355e1dece91995cae0cdf8ce19029368901d73efae5"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3865e07a24ec21eb757b0388a1100340a4c84d32000025c74f43dd2d2112aa7b"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: boot_config.rs \u2194 machine.rs: \u0060src/agent/boot_config.rs\u0060 (context agent) and \u0060src/cli/machine.rs\u0060 (context cli) sit in DIFFERENT parts of the tree yet change together 90% of the time (9 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see. You can check this without leaving the row: of the 9 shared commits counted here, the most recent 3 are \u00605e9d3584\u0060 External egress interceptor (#1405); \u0060b310083f\u0060 feat: add --expose-socket and --mount-socket for forwarding arbitrary\u2026; \u0060b000644e\u0060 feat: expose the guest Docker daemon socket to the host over vsock \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/boot_config.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ce053743e5a616a20092c5097bb8ec8d4b6fd35d787680b65b19da3db858182"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: boot_config.rs \u2194 vm_common.rs: \u0060src/agent/boot_config.rs\u0060 (context agent) and \u0060src/cli/vm_common.rs\u0060 (context cli) sit in DIFFERENT parts of the tree yet change together 80% of the time (8 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see. You can check this without leaving the row: of the 8 shared commits counted here, the most recent 3 are \u00605e9d3584\u0060 External egress interceptor (#1405); \u0060b310083f\u0060 feat: add --expose-socket and --mount-socket for forwarding arbitrary\u2026; \u0060b000644e\u0060 feat: expose the guest Docker daemon socket to the host over vsock \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/boot_config.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"09bd5c2104306bf6c125470ee08403f629d484c286c7e5c0a1d31a1ef0b32fbf"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: boot_config.rs \u2194 smolfile.rs: \u0060src/agent/boot_config.rs\u0060 (context agent) and \u0060src/cli/smolfile.rs\u0060 (context cli) sit in DIFFERENT parts of the tree yet change together 60% of the time (6 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see. You can check this without leaving the row: of the 6 shared commits counted here, the most recent 3 are \u0060b310083f\u0060 feat: add --expose-socket and --mount-socket for forwarding arbitrary\u2026; \u0060b000644e\u0060 feat: expose the guest Docker daemon socket to the host over vsock; \u0060b1296355\u0060 feat(cuda): remote guest CUDA Driver-API calls to the host GPU over v\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/boot_config.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"31a9f88a2bd56495cf76ec3f4d54346fd4a5706c9b14f321bb8b8f01a1469c88"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: forkpoint.rs \u2194 vm_common.rs: \u0060crates/smolvm-protocol/src/forkpoint.rs\u0060 (context crates) and \u0060src/cli/vm_common.rs\u0060 (context cli) sit in DIFFERENT parts of the tree yet change together 50% of the time (5 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see. You can check this without leaving the row: of the 5 shared commits counted here, the most recent 3 are \u006062d9b9e9\u0060 Keep a released clone alive when the branch helper is its main proces\u2026; \u0060a7eb7885\u0060 Make branching the primary machine lifecycle (#1118); \u0060c993b1b0\u0060 Support nested machine checkpoints (#1062) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-protocol/src/forkpoint.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d61edb4c4cecdf5959b98963e65a74df1ac2b2b7b82a327f80f5d1691200de07"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: forkpoint.rs \u2194 manager.rs: \u0060crates/smolvm-protocol/src/forkpoint.rs\u0060 (context crates) and \u0060src/agent/manager.rs\u0060 (context agent) sit in DIFFERENT parts of the tree yet change together 50% of the time (5 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see. You can check this without leaving the row: of the 5 shared commits counted here, the most recent 3 are \u006062d9b9e9\u0060 Keep a released clone alive when the branch helper is its main proces\u2026; \u006078e5250f\u0060 Park idle branchpoints until capture (#1147); \u0060a68f0429\u0060 Harden post-training CUDA pools (#886) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-protocol/src/forkpoint.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1335a6e2e95c583e8eefc5a9769d9da9afc0d32387f5e8f9d389c53fb846f719"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: forkpoint.rs \u2194 launcher.rs: \u0060crates/smolvm-protocol/src/forkpoint.rs\u0060 (context crates) and \u0060src/agent/launcher.rs\u0060 (context agent) sit in DIFFERENT parts of the tree yet change together 50% of the time (5 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see. You can check this without leaving the row: of the 5 shared commits counted here, the most recent 3 are \u00600fa81825\u0060 Share active branch memory and guard host capacity (#1204); \u006062d9b9e9\u0060 Keep a released clone alive when the branch helper is its main proces\u2026; \u006078e5250f\u0060 Park idle branchpoints until capture (#1147) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-protocol/src/forkpoint.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"352641097b458dc6647a727e6a3646c2fba661fd8c0f935aaab5bde1e772de15"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: boot_config.rs \u2194 launcher.rs: \u0060src/agent/boot_config.rs\u0060 and \u0060src/agent/launcher.rs\u0060 change together 100% of the time (10 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 10 shared commits counted here, the most recent 3 are \u00605e9d3584\u0060 External egress interceptor (#1405); \u0060b310083f\u0060 feat: add --expose-socket and --mount-socket for forwarding arbitrary\u2026; \u0060b000644e\u0060 feat: expose the guest Docker daemon socket to the host over vsock \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/boot_config.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"31c0a631bc40910ff3aca7658b89097b32d6a827f2e8e418ca3b00d53aa61d2d"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: main.rs \u2194 files.rs: \u0060crates/smolvm-agent/src/main.rs\u0060 and \u0060src/api/handlers/files.rs\u0060 change together 64% of the time (7 of the 11 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 7 shared commits counted here, the most recent 3 are \u006053508e15\u0060 Keep a user\u0027s supplementary groups on every exec path, let uploads se\u2026; \u00609c3140f8\u0060 Make file operations target the filesystem exec uses and give each im\u2026; \u0060e9a26706\u0060 Prepare file access without running commands from guest images (#1700) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"63bc73c1570a5506f124b413520700da5b89e759e2df75adcb24a725daebf064"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: main.rs \u2194 client.rs: \u0060crates/smolvm-cuda-codegen/src/main.rs\u0060 and \u0060crates/smolvm-cuda/src/client.rs\u0060 change together 60% of the time (6 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 6 shared commits counted here, the most recent 3 are \u0060780393f2\u0060 Support CUDA 13 runtime ABI calls; \u006067c2c30f\u0060 Fix fork-clone serving, sm90 in-VM support, and per-replica module sh\u2026; \u006098a229d2\u0060 CUDA fork: sync-call retry, allocation burst, multi-GPU pinning, sand\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-codegen/src/main.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7475a33b1bee91605cc86e20afe5623e50c267b644f131d0584598f86d173918"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: main.rs \u2194 host.rs: \u0060crates/smolvm-cuda-codegen/src/main.rs\u0060 and \u0060crates/smolvm-cuda/src/host.rs\u0060 change together 60% of the time (6 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 6 shared commits counted here, the most recent 3 are \u0060780393f2\u0060 Support CUDA 13 runtime ABI calls; \u006067c2c30f\u0060 Fix fork-clone serving, sm90 in-VM support, and per-replica module sh\u2026; \u006098a229d2\u0060 CUDA fork: sync-call retry, allocation burst, multi-GPU pinning, sand\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-codegen/src/main.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"207f811cb5f5dbb0e627a30d1e64f84cfa81299685fc06e2ced02f51b075fcfc"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: client.rs \u2194 gpu.rs: \u0060crates/smolvm-cuda/src/client.rs\u0060 and \u0060crates/smolvm-cuda/src/host/gpu.rs\u0060 change together 58% of the time (15 of the 26 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 15 shared commits counted here, the most recent 3 are \u006023838a2d\u0060 Support segmented CUDA graph capture (#987); \u0060780393f2\u0060 Support CUDA 13 runtime ABI calls; \u006067c2c30f\u0060 Fix fork-clone serving, sm90 in-VM support, and per-replica module sh\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda/src/client.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c0d12ac96aef770e9a1db574ff504b6af762a24a404b943994ed4adb31a2dc9"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: forkpoint.rs \u2194 machines.rs: \u0060crates/smolvm-protocol/src/forkpoint.rs\u0060 and \u0060src/api/handlers/machines.rs\u0060 change together 50% of the time (5 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 5 shared commits counted here, the most recent 3 are \u00600fa81825\u0060 Share active branch memory and guard host capacity (#1204); \u006062d9b9e9\u0060 Keep a released clone alive when the branch helper is its main proces\u2026; \u0060a7eb7885\u0060 Make branching the primary machine lifecycle (#1118) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-protocol/src/forkpoint.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"da603af767af46ff84c100ef9583f13d799eb6d3a320c43bf9294526a43f029a"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"},"taxa":[{"id":"CICD-SEC-9","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"},"taxa":[{"id":"CICD-SEC-9","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"90f83b4fa27db32740afe9540c905f3c0499caed87f61049a8a903ecc95b41c3"},"taxa":[{"id":"CICD-SEC-8","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7ad4701c91f7eaa24aa7b7536975da3068c18dd1ab098025ae5c285286432c8e"},"taxa":[{"id":"CICD-SEC-6","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"19d4cbb252a3e4997007fe629a8fde65a6a24e745494155b47ed43cbf523f1eb"},"taxa":[{"id":"CICD-SEC-4","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"85272427e5ac7789526111ca82de869eea4fc2fc96a87b50cbd8d0352b6bfb44"},"taxa":[{"id":"CICD-SEC-5","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2af4300a1cb9a51453c5f12a52be5d44ddfbea3ddece9b9b217074eb881f1a5c"},"taxa":[{"id":"CICD-SEC-5","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c5928b81075799790cb18fed2980a6b6e8aa5072772041c9951633efe8eb3542"},"taxa":[{"id":"CICD-SEC-1","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d657599f6f99da1927d3377533dfc0888b34c4d84aa7d5579841fd72d0e39bce"},"taxa":[{"id":"CICD-SEC-6","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D40","level":"note","message":{"text":"No network policy: No Kubernetes NetworkPolicy (or Cilium policy) found. Without one, every pod can talk to every other pod and reach out to the internet by default. Add a default-deny policy and open only the flows you need."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"295828650a2aaa1b03ae9b32ae6843a0c38011e5a70b1926442c4fa7187de5f0"}},{"ruleId":"D41","level":"note","message":{"text":"No seccomp profile: The workload runs a container with no seccomp profile in force (neither RuntimeDefault nor a Localhost profile, on the container or the pod), so Kubernetes runs it Unconfined. Seccomp blocks the syscalls a container never needs, shrinking the kernel attack surface a container escape would use."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deploy/kubernetes/example-pod.yaml"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"eceea1559b75ca9e74c029143b5c0ebc38aafc16fc4974d56aebc109daef4132"}},{"ruleId":"AC1","level":"warning","message":{"text":"\u003Ccanvas\u003E without a text alternative: A \u003Ccanvas\u003E with no aria-label/title and no inner fallback content can\u0027t be described by assistive tech. Add a name or fallback content."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc_client.html"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bc013cc79aadc25e7fa7d3e9c50e44716b019d1840248c42c5c793c1fcd168a"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. Wrap the primary content in \u003Cmain\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packaging/repos/pacman-arch-index.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"46c70f5b550f945a16264d873c683fa9f775af23f1bece84e83ca00deab7de14"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. Wrap the primary content in \u003Cmain\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/vnc_client.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e9cf318663e55f04c5178dbf337743d21bcb47d7d4c4082b14520fae729b838"}},{"ruleId":"AC7","level":"warning","message":{"text":"Accessibility enforcement below the top rung: No accessibility enforcement found \u2014 no automated accessibility check runs over the HTML your app renders. Assert the accessibility invariants over that HTML in the test suite you already have (parse the output and assert, or drive a browser), and gate that test in CI so a regression blocks the merge. What was searched, so you can tell an absence from a miss: the 2 markup file(s) this pass actually assessed, the linter configuration checked in beside them, and this repository\u0027s test and CI files \u2014 matched by name against the accessibility checkers this dimension carries. An audit run outside the repository, a hosted scanner, or a check whose name is not one of those, is not seen here."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d46019b86eff5ddad9db289e6802ac158899e980df54c34f67722442787ead62"}},{"ruleId":"AX9","level":"error","message":{"text":"Query writes persistent state on the read path: RegistryClient.get_token: \u0060RegistryClient.get_token\u0060 is a read-named query yet it performs a durable write on the read path (a persist to a store/repository). A query must stay side-effect-free so reads are safe to retry, cache, and route to a read replica; move the write into a command."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":1405}}}],"partialFingerprints":{"codehealthFindingId/v1":"57188dfbef6af80c564fd57ce599e746eb03cd4edcb4f6f9b4490e6ed563b8a6"}},{"ruleId":"C2","level":"note","message":{"text":"No named authorization policies: Authorization IS enforced here (by route guards, auth middleware or checks that refuse a caller) \u2014 this is NOT a claim that endpoints are unprotected. What\u0027s missing is a NAMED rule set: who may do what is encoded inline where it is checked, so the rules can\u0027t be listed, reviewed or tested apart from the code that applies them. Recommendation, not a defect."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b048fdf3fa524ac68c7874fdfcdb4c49d5f010013f2cb22a0bd84cb12ceb951f"}},{"ruleId":"M2","level":"note","message":{"text":"No ADRs: No Architecture Decision Records found \u2014 no conventional ADR directory, no numbered \u0060NNNN-title\u0060 documents in any markup this check reads, and nothing ADR-shaped by content. Design rationale recorded elsewhere (a design-notes tree, a mailing list, pull-request discussion) is not visible to this check and is not re-findable per decision, so a future maintainer cannot ask why one choice was made and get an answer."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"670b3d6e36a756d63097d0dfbf90afd5fc761308800b9354894a07c3f4e4aa14"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/dev-env/README.md links to \u0060../live-resize.md\u0060, but \u0060docs/live-resize.md\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/dev-env/README.md"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"8168171a954e5e067bb4145049532482f808e3e1ee8ffb036f67787022904ac8"}},{"ruleId":"P2","level":"note","message":{"text":"Logging is not universal: Only 10/13 runnable modules use logging (modules with no entry point or server are excluded \u2014 they are libraries a runnable module hosts). Silent: \u0060.\u0060, \u0060crates/smolvm-cuda-codegen\u0060, \u0060crates/smolvm-cuda-guest\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"91a94e21d6d4d0e6a2003f94505b0b02b157176f0b24c4820f3f82b4447a97fe"}},{"ruleId":"P4","level":"note","message":{"text":"No rollback/health safety: Deployment automation exists and the service already exposes health probe endpoints (healthz/livez/readyz or a container healthcheck), but no manifest in this repository wires them into readiness/liveness probes, a rolling-update strategy, lifecycle hooks or a migration job \u2014 a bad release is harder to detect and reverse. If that wiring lives in a separate ops/Helm repository, document the pointer here so release safety is evidenced."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"db6bab8a28a2145f47e5a4e6683cda39d2ba0296c723238e8057da979ae1c706"}},{"ruleId":"P6","level":"note","message":{"text":"No changelog: No CHANGELOG/HISTORY/RELEASES file \u2014 what shipped when isn\u0027t easy to reconstruct for support or audit. (Versioning/tagging makes releases traceable, but a changelog records the what.)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dda5aa5aed8cbb292c3ef2b733bc138f614293ae6426c85e98bf31ef330d9415"}},{"ruleId":"P7","level":"warning","message":{"text":"Outbound HTTP without resilience: \u0060urllib.request.urlopen(\u0060 makes an outbound HTTP call, and nothing bounds it: no timeout, deadline, retry or circuit breaker is set for it here, and the client has no process-wide default. A slow or failing dependency will hold this service\u0027s request, thread or connection until the call gives up on its own \u2014 or never, for a client with no default timeout."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packaging/nix/bump.py"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6be0a3723044c9cdcd9d5d7b4c72ea6dc3076eccd79bd19f567b1aba61a8281"}},{"ruleId":"P7","level":"warning","message":{"text":"Outbound HTTP without resilience: \u0060reqwest::get(\u0060 makes an outbound HTTP call, and nothing bounds it: no timeout, deadline, retry or circuit breaker is set for it here, and the client has no process-wide default. A slow or failing dependency will hold this service\u0027s request, thread or connection until the call gives up on its own \u2014 or never, for a client with no default timeout."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/exec.rs"},"region":{"startLine":1387}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1bc102f4941365ae7b15358b84cddc4ae7eef9f4f6215baceffdd75b7586956"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060run_server\u0060 is async and calls thread::sleep \u2014 a blocking call inside async code stalls the executor thread, and every task scheduled on it for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/serve.rs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff3db9584b27de7f1e17c5e4accbf76ba91ca294118060c49c2e3340acad58ea"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060serve_tcp_tls\u0060 is async and calls block_on \u2014 a blocking call inside async code stalls the executor thread, and every task scheduled on it for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/serve.rs"},"region":{"startLine":756}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffb38db02205a5d5b71b464ec7eb858e9d00da9ebd10338475c7dfa61aefa74a"}},{"ruleId":"S1","level":"warning","message":{"text":"Weak hash algorithm: MD5/SHA1 is computed here, and both are collision-broken. If this digest protects anything \u2014 a signature, an integrity or tamper check, a credential, or any value an attacker can influence \u2014 that is a real weakness: use SHA-256\u002B (\u0060sha2::Sha256::digest(\u2026)\u0060) for content integrity, or a KDF (bcrypt/Argon2/scrypt) for password storage. If it only derives a non-security identifier (a cache key, an avatar URL, an ETag), collision resistance carries no security consequence here; make that intent explicit instead \u2014 a non-cryptographic hash such as xxhash or murmurhash says it in code \u2014 since the algorithm alone cannot distinguish the two uses. Where a protocol this code does not own fixes the digest (a k-anonymity range query, a legacy signature format), the protocol decides; say so beside the call."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/websocket.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0d86b78cc3d20822d28cf5757d384eda77ab7bf4a374ecf1f1aceb6e03e8239"}},{"ruleId":"S1","level":"note","message":{"text":"No security response headers detected: None of the 11 security response headers the OWASP Secure Headers Project recommends (Content-Security-Policy, Strict-Transport-Security, X-Content-Type-Options, X-Frame-Options, \u2026) is set on a response this repository\u0027s Rust server sends \u2014 defense in depth, even when a proxy could set them. (\u22122.0 on this card.) The server: \u0060axum::serve(\u0060 (src/cli/serve.rs:541)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bd19c680309417e132c0be93c2002123f0664b42afe6172b1319da65a6a57ba7"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060!bundle.is_empty() \u0026\u0026 !bundle.ends_with(b\u0022\\n\u0022)\u0060 appears character-identically in 2 files \u2014 crates/smolvm-agent/src/credentials.rs, crates/smolvm-agent/src/storage.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/credentials.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"a72ac8fd2b7d7c90533977d72a4b5bfed77a5eabf177938b060a7a944e7f9713"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060checkpoint.is_none() \u0026\u0026 manifest.mode == smolvm_pack::format::PackMode::Vm\u0060 appears character-identically in 2 files \u2014 src/api/handlers/machines.rs, src/cli/machine.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":2969}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbca1923adf10e1a1b42ac462a874b3c4de69f7d8a17e3940f9ba35879e7b17b"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060cpu_profile_result \u003C 0 \u0026\u0026 cpu_profile_result != -libc::ENOTSUP\u0060 appears character-identically in 2 files \u2014 src/agent/launcher.rs, src/agent/launcher_dynamic.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2f5570a6f550530268f3135c9e6575e45f43047d15ef132ec302e0a20c8fef2"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060cpus != checkpoint.cpus || mem != checkpoint.memory_mib\u0060 appears character-identically in 2 files \u2014 src/api/handlers/machines.rs, src/cli/machine.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":3112}}}],"partialFingerprints":{"codehealthFindingId/v1":"aef5f32cb30379c63bdd06b4d752f597db615286aa6edd191090d14dbc52024b"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060device.is_null() || pci_bus_id.is_null()\u0060 appears character-identically in 2 files \u2014 crates/smolvm-cuda-shim/src/lib.rs, crates/smolvm-cudart-shim/src/lib.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":1082}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f37bee5df448f6cd008846e4181c956b6e36a0496d27962ebebc7760c75d8be"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060e == libc::EAGAIN || e == libc::EWOULDBLOCK\u0060 appears character-identically in 2 files \u2014 crates/smolvm-cuda-shim/src/lib.rs, crates/smolvm-cudart-shim/src/lib.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cuda-shim/src/lib.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"01c3eedd80f51317ea0ec5ef522f0fd5ae593f8c1c99cf58323467599f4f437d"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060engine == BlockIoEngine::Async || durability == DiskDurability::Deferred\u0060 appears character-identically in 2 files \u2014 src/agent/launcher.rs, src/agent/launcher_dynamic.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":2904}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7c059cd858aa966a146d7db6b7b3c3a0365deb4d57df2e6ddd75828252472c6"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060event.key \u003E= 1 \u0026\u0026 event.key - 1 \u003C ready.len()\u0060 appears character-identically in 3 files \u2014 crates/smolvm-network/src/dns_relay.rs, crates/smolvm-network/src/icmp_relay.rs, crates/smolvm-network/src/udp_relay.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/dns_relay.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca74e3170be79c7f4ee822de7654e558d7834d58b46bce3da33d29cf77327e35"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060image == \u0022alpine:3.20\u0022 \u0026\u0026 workload_id == \u0022fork-overlay-owner\u0022\u0060 appears character-identically in 2 files \u2014 crates/smolvm-protocol/src/lib.rs, src/agent/client.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-protocol/src/lib.rs"},"region":{"startLine":2115}}}],"partialFingerprints":{"codehealthFindingId/v1":"1afd3e5e67b904dc4b890edcae44a1c05cc4d5ea11a8e953be6b81dcdcf6958e"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060line.is_empty() || line.starts_with(\u0027#\u0027)\u0060 appears character-identically in 4 files \u2014 crates/smolvm-agent/src/oci.rs, crates/smolvm-network/src/egress.rs, crates/smolvm-network/src/watchlist.rs, src/data/image_source.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/oci.rs"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f12cfea79fdffeab18c9a24436f35a32e2ff350cd1c6f559910c189dfc9806"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060n \u003E= 2 \u0026\u0026 magic[0] == 0x1f \u0026\u0026 magic[1] == 0x8b\u0060 appears character-identically in 2 files \u2014 crates/smolvm-agent/src/storage.rs, crates/smolvm-oci-layer/src/lib.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":2210}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bb74dcaa24a2b2f932338eeeb71ac851b0476115e0ec96df4a31f4a23a3b7e0"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060potential_registry.contains(\u0027.\u0027) || potential_registry.contains(\u0027:\u0027)\u0060 appears character-identically in 2 files \u2014 crates/smolvm-agent/src/storage.rs, src/registry.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/storage.rs"},"region":{"startLine":6243}}}],"partialFingerprints":{"codehealthFindingId/v1":"35159aaa35cee6bcef26fa5c8abcf4708a3f232339e962e8892523bc0ad3fd37"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060r == -libc::ENOSYS || r == -libc::EPERM || r == -libc::EACCES || r == -libc::ENOTSUP\u0060 appears character-identically in 2 files \u2014 src/agent/launcher.rs, src/agent/launcher_dynamic.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":2958}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5dbc2fb44e2bc78a5c61d6e0e4a282da8849f44b44f97d823bfd42cf6d52021"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060record.external_interceptor_required \u0026\u0026 external_interceptor.is_none()\u0060 appears character-identically in 3 files \u2014 src/api/handlers/machines.rs, src/cli/machine.rs, src/cli/vm_common.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":4086}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fa6c1d0e96438c1cc584bcac39dcf153936221520dbf926f882293252b1a969"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060v.eq_ignore_ascii_case(\u0022off\u0022) || v == \u00220\u0022\u0060 appears character-identically in 2 files \u2014 crates/smolvm-agent/src/disk_trim.rs, src/agent/launcher.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/disk_trim.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb28185b5124f1cf849789f4eb3d77d17ca88921b28c1b0c5e71fac6500cf9e6"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060vm_seed.is_some() || checkpoint.is_some()\u0060 appears character-identically in 2 files \u2014 src/api/handlers/machines.rs, src/cli/machine.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/handlers/machines.rs"},"region":{"startLine":3002}}}],"partialFingerprints":{"codehealthFindingId/v1":"98b6f6bb36b8eaa347ca2c7d80a50c263499515375e12a5dd1249a882eafe5d9"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060info!\u0060 at line 1986 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060info!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_daemon.rs"},"region":{"startLine":1986}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3c172c6fb14d2f824e26d574199a643befbfba0e31466f87b56897b53d6e68f"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060info!\u0060 at line 556 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060info!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cuda_host.rs"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"88b9c7807fbd8dd7f97ce4982297d8bafc33ef19f724ae22c322b25383bbaff6"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 680 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/internal_boot.rs"},"region":{"startLine":680}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a40fcd72940869c390dc128c3e0b93a42b2bf27b2614155f9b63ee4813335d1"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060info!\u0060 at line 213 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060info!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm_exit.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"81de8d418ad149385f96b84e10dd5dd76803a95936666e88d1b0681b2e192c82"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 215 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm_exit.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbe00b1d7f8e46efe6202dd7b9856a8d609b941bda2bfa6f25e81be4ec3c4449"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 150 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f936eb76bb662f35c18a2f5005213fa380a1e1c2411a0ab43ab12089e28cd1d"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 167 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9c323037dc018f0f4781c8a4507fd56cfe940278b120cd0a468ce83c90411b9"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 239 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"9278dc765132b9259ebfef3ed877600446c1fc2780dc3d762a2bbff2b92e1026"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 240 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"28f7190ee0862be4186392a5bde78a2517c5e07be27f88d189c6e0df38d46d1a"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 241 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ba532451a23e5cec622affb2fb7b8ac5fcf5f6c61e11fddd2667088d0c77bf3"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 242 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1a86c9366a4b518acfcda0ed197924ca11807d5a4c953231f8f4d9b24c51986"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 245 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"970235b8e6cd65545af2dcdff4deb574befb0274556ec4199df505d0ef960fa6"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 269 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad1cc0ad50de1cc98d5cd62a67c0aaa12ae83f4d3ae437222d06d66a37b66f06"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 321 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d9e0899da72ce8fe5f74c65f61b8ffdd7d1934785c568fda227c0c2f29a0c86"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 341 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"04da8c45a3d1e64321ee3a22408d5b8d67bda9ec833e1b5eb24c34d8bdaa0d00"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 360 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"580a791f95990c0942fbd274976c1d8f03f899e293fa3afeb01f932ac4c7a11a"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 377 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4ca4af2193b7625886df06d0ee05593b025f7a01f1e348f16cc294ee5cbe054"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 499 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dc7822646ac9c3301be5e4965d2cdfcf40ddc0d83e7bac5851679571f2d3380"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 512 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f0ef0814919405ee201d0dad2c9acbd48c69d43ee15360cb1148aa1292085d9"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 534 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"e02e7690546db6b9c13a69ea1265371c59e6e8e12abb764e6f0a31c9f423b79c"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 536 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"b582fe974e03fecf83545057213ab51e2e05cf5872bd2b434a4ad3a8e511654e"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 548 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/vm/backend/libkrun.rs"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"882af7d39825943521b486091bfd256b20d8258dec0c102d9c2bb7e35c996462"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 61 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/platform/macos.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"419456cf2dc031b6b29371a21d4115e59152789e4083fb61d70e8fba4a8138a0"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 219 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/platform/macos.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"2db6ec670030f701a9f6bf8615ea9defa5695a5fe76cadfaeb8dd6e5a442f6a2"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 1097 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1097}}}],"partialFingerprints":{"codehealthFindingId/v1":"9367aa26987a1a8040e3cdddbe67ff192f0f55335302ee71c6aecccb749e0f2b"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 1113 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1113}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3026789844ccfa224f841fee9cd5f6c1e9bcddcf3f4325f954c5333028bdd0c"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 1739 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1739}}}],"partialFingerprints":{"codehealthFindingId/v1":"66fb5307fbb245d60bc9e89fec22466b5de6e739e70849309075b27267feaecf"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 1755 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1755}}}],"partialFingerprints":{"codehealthFindingId/v1":"3168cc62a0cca51ab5db026bb8f5aca17a43288c9578a3ad46a5f7a3efed9fd1"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 1797 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/pack.rs"},"region":{"startLine":1797}}}],"partialFingerprints":{"codehealthFindingId/v1":"831b8861a9b546f01576ca4fde436dac47e45193a49f29d371d96d6714d8b036"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 1105 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/serve.rs"},"region":{"startLine":1105}}}],"partialFingerprints":{"codehealthFindingId/v1":"30a9b9cc6eee1b1e82fd555289b29e82546c546b1607bb5f0c840e087f284d77"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 1840 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":1840}}}],"partialFingerprints":{"codehealthFindingId/v1":"b295dd77033e642713fb8049c230c5b5fc413f065d185bdda983b77a3e8fd9e4"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 1882 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":1882}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac34e720ba5ee968f6944d977c68091f1c031465d77d03947ecc117269850dcf"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060info!\u0060 at line 1888 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060info!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":1888}}}],"partialFingerprints":{"codehealthFindingId/v1":"23f11797ee0d51d19648d605f987dd3b9d843713ff1fd70543ef3da1064bd5bd"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 1929 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":1929}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b6b110d1363e823502ba21d3be7d92507f67e24caa9283ac59cc283125cecf2"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 1993 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":1993}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e441d89e1c32b536770dc02cc2df2a6fea9d52c1e341c2e236adcda69602c6f"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060error!\u0060 at line 2077 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060error!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/launcher.rs"},"region":{"startLine":2077}}}],"partialFingerprints":{"codehealthFindingId/v1":"42c7fa3602b30ae691235a08762f8cdc297d14756b4917cbc6264186bb9fde22"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 1520 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":1520}}}],"partialFingerprints":{"codehealthFindingId/v1":"94afb0a1fd89b73bd51a9681b348aae92a2587573e83586be2d4eeb1413cfdd4"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 3747 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":3747}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c93a415075edb4b0aac6b6bbd405fbe407f99dde633978b6cdab505b54769d9"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 133 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/netns_tap.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa9b47e5b539b98b7844db6696cc17a3f533d4575de7b18f597f4784e848f699"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 144 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/netns_tap.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b5eb86e85ff751bfe5163121d718677a2ef7358b712a31dd0158df381f4e827"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 153 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/netns_tap.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"fee12f57d551ee2764ac786f989a9200548dafab0b40667e5498c7bf15890d73"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 171 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/netns_tap.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"359cf9a7f0ca20b09bd86679b9cba215a782ad03403a9decfec014ea0ebaf904"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060debug!\u0060 at line 178 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060debug!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/netns_tap.rs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dac569a65a85c7010b5c5b1d80fa5698b32434f8e467c55b7dd4442160e9d75"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 827 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/tcp_relay.rs"},"region":{"startLine":827}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0a8fb160f2817600b768e55331e18b3ed8a41b3dbb0ea89be99c7c4491853c0"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn!\u0060 at line 826 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060warn!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"78fc45f03c18cb5f1040d9a3d2499fcf9e197e019f2ab0f312ea4d88a372960c"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060error!\u0060 at line 870 is handed a format string with \u0060{\u2026}\u0060 values in it, so tracing records one finished \u0060message\u0060 field \u2014 the values in it cannot be queried, filtered or aggregated as fields, and every occurrence reads as a different message. Record the values as fields beside a constant message instead: \u0060error!(order_id = %order_id, status = ?status, \u0022order status updated\u0022)\u0060 (\u0060%\u0060 records a value by its \u0060Display\u0060, \u0060?\u0060 by its \u0060Debug\u0060, a bare name as itself), which a JSON subscriber, OpenTelemetry or a log store keeps as queryable keys. An error goes in as a field too: \u0060error = %err\u0060."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/main.rs"},"region":{"startLine":870}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cd4782d9d0ab79d6bb07d637c26f90827eaca850df7fed5226d7be93ef7a797"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060live_main_containers\u0060 turns every \u0060Err\u0060 into \u0060Vec::new()\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/nsfile.rs"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc5ee3abad067bccf9cf804c8e086d6ebc6839a3482ebbb31b051e8c4ae319cd"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060live_containers\u0060 turns every \u0060Err\u0060 into \u0060Vec::new()\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/nsfile.rs"},"region":{"startLine":917}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e4906cc38e49436f7b7ee458e159533bfb0684e6123fbbb9663afd713ff0727"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060live_descendants\u0060 turns every \u0060Err\u0060 into \u0060Vec::new()\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-agent/src/process.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"9652d0f132eac24efbb4fcc29c2bba304d8fd88b52efe4f86388a93e06c6a732"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060smolvm_cudart_translate_host_pointers\u0060 turns every \u0060Err\u0060 into \u00600\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":1980}}}],"partialFingerprints":{"codehealthFindingId/v1":"2efae81930990afa943180cb7ac206e3956ce7136a82f817573e76189849f244"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060nvcompBatchedDeflateDecompressGetTempSizeEx\u0060 turns every \u0060Err\u0060 into \u00601\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":5199}}}],"partialFingerprints":{"codehealthFindingId/v1":"10a71e264d7b3f176589f8112536e6ac2849d7163e06d7a0ac6f632d42b1a5c0"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060cudnnBackendGetAttribute\u0060 turns every \u0060Err\u0060 into \u00601\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":5400}}}],"partialFingerprints":{"codehealthFindingId/v1":"048427a850b7741a7cb333e81aeaacbe272fca5ade7f9debaf5c10865c8994c4"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060cudnnBackendFinalize\u0060 turns every \u0060Err\u0060 into \u00601\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":5409}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e212ab8f9e0c611801b0308729c70a662efa7f1b6495c43e9f6db92ced55092"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060bn_size_call\u0060 turns every \u0060Err\u0060 into \u00601\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-cudart-shim/src/lib.rs"},"region":{"startLine":6131}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7c421228dca3844a8709f00c546ecfce57603e2c9cf7113b244d48ab4717899"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060record_once\u0060 turns every \u0060Err\u0060 into \u0060Verdict::default()\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-network/src/watchlist.rs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"12d902633b7443b476210d953315d8cf510344122dac9a6985e9b95e852bf0d3"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060dir_disk_usage\u0060 turns every \u0060Err\u0060 into \u00600\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":1904}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aad511aa8c3e4849ecb0da003ec8481ed27b6890987b331114b15c14b385389"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060evict_cache_to_size_protecting\u0060 turns every \u0060Err\u0060 into \u00600\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":1953}}}],"partialFingerprints":{"codehealthFindingId/v1":"29f430a157316d6638915e8dc51c1272c3130211d7869e6b2d4d0ce8c648f539"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060sum_tar_sizes\u0060 turns every \u0060Err\u0060 into \u00600\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-pack/src/extract.rs"},"region":{"startLine":5017}}}],"partialFingerprints":{"codehealthFindingId/v1":"521b428cbb1e7639748debbd093e8ff34c229f84fd2f82982551fc444ddcb944"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060upload_http_client\u0060 turns every \u0060Err\u0060 into \u0060reqwest::Client::new()\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/smolvm-registry/src/client.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb3aaea782984a80d9e1f4a38d29c5ad1898a54eafcd5d996bd55f70b6e599b9"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060console_output_to_file\u0060 turns every \u0060Err\u0060 into \u0060-1\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/krun.rs"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"c963c20efb866cd2802b3f1abccf8b85c2a2f1cdea6f1a08b113e4bf9c381e76"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060console_output_to_file\u0060 turns every \u0060Err\u0060 into \u0060-1\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/krun.rs"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"68654e49e5492bdc80c8b0fb7250fa1476196529d2d8b4805b8223a0942fffb4"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060describe_source_device\u0060 turns every \u0060Err\u0060 into \u0060String::new()\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pack_export.rs"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"15ab2e808e2d1d8f3e154bf187dc22f036ea380fdaf2cab3b8f6bf848d7a6cdb"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060walk_blocks\u0060 (in \u0060disk_used_mb\u0060) turns every \u0060Err\u0060 into \u00600\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/agent/manager.rs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2d6abbb27c93e46ce05bbe293b821a51985a7a746015d243719d2323f5f3581"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060scan\u0060 turns every \u0060Err\u0060 into \u0060Vec::new()\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/cache_base_budget.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f705453a6bb79971fde5eb8fda4d5d7bc6bc8c84d613ec62b17c6bf49aaae8a"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default on Err: \u0060directory_apparent_bytes\u0060 turns every \u0060Err\u0060 into \u00600\u0060 \u2014 a failure becomes a plausible value and a silent behavior change with no trail. Log the error or propagate it with \u0060?\u0060. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the arm or in the doc comment, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pack_export.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"70b1299afda255362ca25ad20d872931e40fb8de7d2e7e16fbbd1c4a65027986"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1032","guid":"5f21e517-68aa-a650-9a25-5771ef024637","name":"OWASP Top Ten \u2014 Security Misconfiguration category","shortDescription":{"text":"OWASP Top Ten \u2014 Security Misconfiguration category"},"helpUri":"https://cwe.mitre.org/data/definitions/1032.html"},{"id":"CWE-1059","guid":"a2381a08-60f6-9554-a8b8-f3018cfaaca5","name":"Insufficient Technical Documentation","shortDescription":{"text":"Insufficient Technical Documentation"},"helpUri":"https://cwe.mitre.org/data/definitions/1059.html"},{"id":"CWE-1357","guid":"e4d2e772-757e-0a5c-bd7d-77052949d866","name":"Reliance on Insufficiently Trustworthy Component","shortDescription":{"text":"Reliance on Insufficiently Trustworthy Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1357.html"},{"id":"CWE-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.html"},{"id":"CWE-16","guid":"659db3ea-affc-8453-8add-c1218fbfcb92","name":"Configuration","shortDescription":{"text":"Configuration"},"helpUri":"https://cwe.mitre.org/data/definitions/16.html"},{"id":"CWE-250","guid":"52ee12e8-390a-7351-b1e6-388afa694e54","name":"CWE-250","shortDescription":{"text":"CWE-250"},"helpUri":"https://cwe.mitre.org/data/definitions/250.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"Missing Support for Integrity Check","shortDescription":{"text":"Missing Support for Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-494","guid":"b8a65e0d-e459-4a55-a931-fc1136482375","name":"Download of Code Without Integrity Check","shortDescription":{"text":"Download of Code Without Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/494.html"},{"id":"CWE-506","guid":"401d6455-56e3-0552-9a39-f77461673e3f","name":"Embedded Malicious Code","shortDescription":{"text":"Embedded Malicious Code"},"helpUri":"https://cwe.mitre.org/data/definitions/506.html"},{"id":"CWE-522","guid":"71fb233e-ce6a-ae57-9419-ef8373540b09","name":"Insufficiently Protected Credentials","shortDescription":{"text":"Insufficiently Protected Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/522.html"},{"id":"CWE-732","guid":"1da27e8f-b330-7650-ab63-bd61953eae5d","name":"Incorrect Permission Assignment for Critical Resource","shortDescription":{"text":"Incorrect Permission Assignment for Critical Resource"},"helpUri":"https://cwe.mitre.org/data/definitions/732.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Improper Neutralization of Special Elements used in a Command (\u0027Command Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in a Command (\u0027Command Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)","shortDescription":{"text":"Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"Improper Neutralization of Special Elements used in an SQL Command (\u0027SQL Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in an SQL Command (\u0027SQL Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-939","guid":"12397742-f2c4-8254-8012-482c3356c551","name":"CWE-939","shortDescription":{"text":"CWE-939"},"helpUri":"https://cwe.mitre.org/data/definitions/939.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Improper Control of Generation of Code (\u0027Code Injection\u0027)","shortDescription":{"text":"Improper Control of Generation of Code (\u0027Code Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]},{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61","version":"2025","organization":"OWASP Foundation","informationUri":"https://top10.owasp.org/2025/","isComprehensive":false,"shortDescription":{"text":"The OWASP Top 10:2025 web application security risks."},"taxa":[{"id":"A01:2025","guid":"df693558-c822-0452-8f7b-4d53cb6bcc59","name":"Broken Access Control","shortDescription":{"text":"Broken Access Control"},"helpUri":"https://top10.owasp.org/2025/A01_2025-Broken_Access_Control/"},{"id":"A02:2025","guid":"668dee9e-41bc-6354-97d0-fdf8f40c50c1","name":"Security Misconfiguration","shortDescription":{"text":"Security Misconfiguration"},"helpUri":"https://top10.owasp.org/2025/A02_2025-Security_Misconfiguration/"},{"id":"A03:2025","guid":"168e227c-7735-2e57-bc6e-997affe644c5","name":"Software Supply Chain Failures","shortDescription":{"text":"Software Supply Chain Failures"},"helpUri":"https://top10.owasp.org/2025/A03_2025-Software_Supply_Chain_Failures/"},{"id":"A05:2025","guid":"87e86033-3231-8458-8e4a-5cb82743553a","name":"Injection","shortDescription":{"text":"Injection"},"helpUri":"https://top10.owasp.org/2025/A05_2025-Injection/"},{"id":"A06:2025","guid":"491554d7-b8e4-9652-91a9-53700dc92ece","name":"Insecure Design","shortDescription":{"text":"Insecure Design"},"helpUri":"https://top10.owasp.org/2025/A06_2025-Insecure_Design/"},{"id":"A07:2025","guid":"334ddd78-539d-d35c-83dd-253647eb7eaf","name":"Authentication Failures","shortDescription":{"text":"Authentication Failures"},"helpUri":"https://top10.owasp.org/2025/A07_2025-Authentication_Failures/"},{"id":"A08:2025","guid":"84b0c297-710e-9a5f-9335-936ecb260c36","name":"Software or Data Integrity Failures","shortDescription":{"text":"Software or Data Integrity Failures"},"helpUri":"https://top10.owasp.org/2025/A08_2025-Software_or_Data_Integrity_Failures/"}]},{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35","organization":"OWASP Foundation","informationUri":"https://owasp.org/www-project-top-10-ci-cd-security-risks/","isComprehensive":false,"shortDescription":{"text":"The OWASP Top 10 CI/CD Security Risks."},"taxa":[{"id":"CICD-SEC-1","guid":"a40d9a4c-89f5-4b5d-b2dc-32dc9cbfe814","name":"Insufficient Flow Control Mechanisms","shortDescription":{"text":"Insufficient Flow Control Mechanisms"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-01-Insufficient-Flow-Control-Mechanisms"},{"id":"CICD-SEC-4","guid":"c859d8ea-8b24-a157-9406-94929c10397a","name":"Poisoned Pipeline Execution (PPE)","shortDescription":{"text":"Poisoned Pipeline Execution (PPE)"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-04-Poisoned-Pipeline-Execution"},{"id":"CICD-SEC-5","guid":"cc7f4610-8859-e654-9029-d5f97d992220","name":"Insufficient PBAC (Pipeline-Based Access Controls)","shortDescription":{"text":"Insufficient PBAC (Pipeline-Based Access Controls)"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-05-Insufficient-PBAC"},{"id":"CICD-SEC-6","guid":"f2ee2486-b260-2952-a41f-6b67fa713940","name":"Insufficient Credential Hygiene","shortDescription":{"text":"Insufficient Credential Hygiene"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-06-Insufficient-Credential-Hygiene"},{"id":"CICD-SEC-8","guid":"b6b2dacf-a168-4957-876e-a8c73ee00eb0","name":"Ungoverned Usage of 3rd Party Services","shortDescription":{"text":"Ungoverned Usage of 3rd Party Services"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-08-Ungoverned-Usage-of-3rd-Party-Services"},{"id":"CICD-SEC-9","guid":"b3d36727-0395-5b51-94c4-5e173d62eab3","name":"Improper Artifact Integrity Validation","shortDescription":{"text":"Improper Artifact Integrity Validation"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-09-Improper-Artifact-Integrity-Validation"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":144,"secretScannerRunsExcluded":0}},"redactionTokens":["A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."]}]}