{"$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":"D7","name":"Architectural Integrity","shortDescription":{"text":"Architectural Integrity"},"helpUri":"https://codehealth.canine.dev/dimensions/D7"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D10","name":"Test Quality","shortDescription":{"text":"Test Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D10"},{"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"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"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":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"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":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D22","name":"Internal API Consistency","shortDescription":{"text":"Internal API Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D22"},{"id":"D25","name":"ADR Conformance","shortDescription":{"text":"ADR Conformance"},"helpUri":"https://codehealth.canine.dev/dimensions/D25"},{"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"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"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"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"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"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"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"]}],"properties":{"cwe":["CWE-1032","CWE-732","CWE-16"]}},{"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"]}],"properties":{"cwe":["CWE-1357","CWE-494"]}},{"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"]}],"properties":{"cwe":["CWE-1059"]}},{"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"]}],"properties":{"cwe":["CWE-506"]}},{"id":"D44","name":"Platform End-of-Life","shortDescription":{"text":"Platform End-of-Life"},"helpUri":"https://codehealth.canine.dev/dimensions/D44"},{"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":"AX8","name":"Test isolation","shortDescription":{"text":"Test isolation"},"helpUri":"https://codehealth.canine.dev/dimensions/AX8"},{"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":"DM4","name":"Rich vs anemic domain model","shortDescription":{"text":"Rich vs anemic domain model"},"helpUri":"https://codehealth.canine.dev/dimensions/DM4"},{"id":"DM5","name":"Encapsulated state","shortDescription":{"text":"Encapsulated state"},"helpUri":"https://codehealth.canine.dev/dimensions/DM5"},{"id":"DM6","name":"Domain \u2194 infrastructure boundary","shortDescription":{"text":"Domain \u2194 infrastructure boundary"},"helpUri":"https://codehealth.canine.dev/dimensions/DM6"},{"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":"PF1","name":"Benchmark discipline","shortDescription":{"text":"Benchmark discipline"},"helpUri":"https://codehealth.canine.dev/dimensions/PF1"},{"id":"PF3","name":"Async \u0026 latency hygiene","shortDescription":{"text":"Async \u0026 latency hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/PF3"},{"id":"SC1","name":"Supply-chain hygiene","shortDescription":{"text":"Supply-chain hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/SC1"},{"id":"X10","name":"Duplicated predicate","shortDescription":{"text":"Duplicated predicate"},"helpUri":"https://codehealth.canine.dev/dimensions/X10"},{"id":"X6","name":"Hand-rolled structured-format parsing","shortDescription":{"text":"Hand-rolled structured-format parsing"},"helpUri":"https://codehealth.canine.dev/dimensions/X6"},{"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":"servers::postgres::types::parameters_to_scalar_values (cyclomatic 131): servers::postgres::types::parameters_to_scalar_values has cyclomatic complexity 131 (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/servers/src/postgres/types.rs"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"e92c08ad1c4dd381f7fc6648695a74a3e5ef00200a8fd2f0f42326b7ab32ff46"}},{"ruleId":"D1","level":"warning","message":{"text":"PromPlanner::create_function_expr (cyclomatic 105): PromPlanner::create_function_expr has cyclomatic complexity 105 (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/query/src/promql/planner.rs"},"region":{"startLine":3278}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c890bc436d2d46dc14c0bca97e3dda6ef2601fcc1d48f651631c3f8285f0ade"}},{"ruleId":"D1","level":"warning","message":{"text":"operator::req_convert::common::push_column_to_rows (cyclomatic 94): operator::req_convert::common::push_column_to_rows has cyclomatic complexity 94 (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/operator/src/req_convert/common.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"78feb60cd2f755e474871f1596c941f0a1931f69f03a72a393d162fac6aa1725"}},{"ruleId":"D1","level":"warning","message":{"text":"servers::http::jaeger::traces_from_records (cyclomatic 64): servers::http::jaeger::traces_from_records has cyclomatic complexity 64 (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/servers/src/http/jaeger.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"0693d39acb6fcc858abfdc0de0f900883aaa2d2f26994c3f6518a80dfc71e70f"}},{"ruleId":"D1","level":"warning","message":{"text":"PromPlanner::or_operator (cyclomatic 61): PromPlanner::or_operator has cyclomatic complexity 61 (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/query/src/promql/planner/set_operator.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"518e754290334bca7554ad72dd48cb99072083421ad22c70d126f76ed948e467"}},{"ruleId":"D1","level":"warning","message":{"text":"ScanMetricsSet::fmt (cyclomatic 60): ScanMetricsSet::fmt has cyclomatic complexity 60 (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/mito2/src/read/scan_util.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc929dd1b86d5e89cd9ba82e76a9aba896aa4c4c0212792f4f2dbced8e78225c"}},{"ruleId":"D1","level":"warning","message":{"text":"StatementExecutor::execute_sql (cyclomatic 57): StatementExecutor::execute_sql has cyclomatic complexity 57 (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/operator/src/statement.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"d45db505f9b28e783d16aa007592aa196512a7685acfb8bd970265120e45ab76"}},{"ruleId":"D1","level":"warning","message":{"text":"PromPlanner::prom_binary_expr_to_plan (cyclomatic 49): PromPlanner::prom_binary_expr_to_plan has cyclomatic complexity 49 (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/query/src/promql/planner.rs"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"be18bef2e41d786308ec501ac8ac3e48538ce5ab80e68d7dc5589620d5c60e06"}},{"ruleId":"D1","level":"warning","message":{"text":"servers::mysql::helper::convert_value (cyclomatic 49): servers::mysql::helper::convert_value has cyclomatic complexity 49 (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/servers/src/mysql/helper.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf48b2f34292fdc0e4228deaa271fa74e75ad69236c02f91dac1ee89376dee0e"}},{"ruleId":"D1","level":"warning","message":{"text":"frontend::instance::check_permission (cyclomatic 48): frontend::instance::check_permission has cyclomatic complexity 48 (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/frontend/src/instance.rs"},"region":{"startLine":1596}}}],"partialFingerprints":{"codehealthFindingId/v1":"03ff4874269d328af602e3dcb0e57573855cda85735b0904a863901f94d4bfc4"}},{"ruleId":"D1","level":"warning","message":{"text":"Helper::try_into_vector (cyclomatic 46): Helper::try_into_vector has cyclomatic complexity 46 (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/datatypes/src/vectors/helper.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"234a04d9080322b86004eb34b57cd626217805628cc3acc9d4bba39db1a0d035"}},{"ruleId":"D1","level":"warning","message":{"text":"Inserter::create_or_alter_tables_on_demand (cyclomatic 46): Inserter::create_or_alter_tables_on_demand has cyclomatic complexity 46 (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/operator/src/insert.rs"},"region":{"startLine":1041}}}],"partialFingerprints":{"codehealthFindingId/v1":"69615085c51ecbb4fd363710a9573773cb3ac08964e4199e4f6472848a16a733"}},{"ruleId":"D1","level":"warning","message":{"text":"ColumnDataTypeWrapper::try_from (cyclomatic 45): ColumnDataTypeWrapper::try_from has cyclomatic complexity 45 (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/src/helper.rs"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"477b7769d4ad377d167e7a5488b50ba6d0e01f14b46681ae32ba8c1b3577745a"}},{"ruleId":"D1","level":"warning","message":{"text":"ScanbenchCommand::run (cyclomatic 42): ScanbenchCommand::run has cyclomatic complexity 42 (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/cmd/src/datanode/scanbench.rs"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d7e2e5f09a690b79c33e27bc1d147c90bc9834b223d9dbf1e9b99e52af01dca"}},{"ruleId":"D1","level":"warning","message":{"text":"ConcreteDataType::from (cyclomatic 41): ConcreteDataType::from has cyclomatic complexity 41 (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/src/helper.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f38ae2db88e436f55f9e2e80a4a76ee34652832970fb525422c048f7d5affb8"}},{"ruleId":"D1","level":"warning","message":{"text":"Categorizer::check_plan (cyclomatic 40): Categorizer::check_plan has cyclomatic complexity 40 (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/query/src/dist_plan/commutativity.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"abbe5d542ba921e8e01296a76ac375b29874010c66b46547415298877667716a"}},{"ruleId":"D1","level":"warning","message":{"text":"ParserContext::parse_show (cyclomatic 39): ParserContext::parse_show has cyclomatic complexity 39 (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/sql/src/parsers/show_parser.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"801d78a873a7d65373358e0ee585a72f6437c49c5fef7a195cf53c985f089c34"}},{"ruleId":"D1","level":"warning","message":{"text":"ConcreteDataType::fmt (cyclomatic 36): ConcreteDataType::fmt has cyclomatic complexity 36 (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/datatypes/src/data_type.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"70badf76d3bc417d8fccf52a4fbe0f699aca72f2d68137e860e5b4c0c4a8d0fb"}},{"ruleId":"D1","level":"warning","message":{"text":"sql::util::extract_tables_from_statement (cyclomatic 34): sql::util::extract_tables_from_statement has cyclomatic complexity 34 (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/sql/src/util.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"166f83daf8a5a4e26c86b9ff06f6fbddadc3e81762a118bd8aa6d6fe8dbc6ca1"}},{"ruleId":"D1","level":"warning","message":{"text":"api::helper::pb_value_to_value_ref (cyclomatic 33): api::helper::pb_value_to_value_ref has cyclomatic complexity 33 (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/src/helper.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e530f780a02cad851075e553898f2376fe5fcc41a2b81a6001395c17f417bd6"}},{"ruleId":"D1","level":"warning","message":{"text":"ci-slash.main (cyclomatic 32): ci-slash.main 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":".github/scripts/ci-slash.py"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaa464b4a4b252178b43615c2ed1f864e96c8c908efaf66380dbe7d3d9df47f3"}},{"ruleId":"D1","level":"warning","message":{"text":"promql::functions::native_histogram::native_extrapolated_rate (cyclomatic 31): promql::functions::native_histogram::native_extrapolated_rate 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/promql/src/functions/native_histogram.rs"},"region":{"startLine":2467}}}],"partialFingerprints":{"codehealthFindingId/v1":"df717729f1203c9683d344be68065fa3555aeb25f6da504113a854f535d746cd"}},{"ruleId":"D1","level":"warning","message":{"text":"MysqlResultWriter::write_recordbatch (cyclomatic 31): MysqlResultWriter::write_recordbatch has cyclomatic complexity 31 (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/servers/src/mysql/writer.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"f329ad65e8fa21561e8fe8ad5a2111e6ada0322fbd8af4313696791f86bdd529"}},{"ruleId":"D1","level":"warning","message":{"text":"NativeHistogram::fraction_with_info (cyclomatic 30): NativeHistogram::fraction_with_info 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/common/query/src/native_histogram.rs"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1e96b41730082b59a3edbeb298cd3671aab50df66ab16078e6e4540490c79d2"}},{"ruleId":"D1","level":"warning","message":{"text":"ParserContext::parse_statement (cyclomatic 30): ParserContext::parse_statement has cyclomatic complexity 30 (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/sql/src/parser.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"a547af22a9d05ff0e2d5f3d6b3969d6bb0bd01f014ce8012c3b30aea6538eec7"}},{"ruleId":"D1","level":"warning","message":{"text":"pipeline::etl::transform::transformer::greptime::coerce::coerce_u64_value (cyclomatic 29): pipeline::etl::transform::transformer::greptime::coerce::coerce_u64_value has cyclomatic complexity 29 (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/pipeline/src/etl/transform/transformer/greptime/coerce.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"6caad5ddb6560e85a7aeaf257849962c12d2f468ec1be69d8d81365b053200e9"}},{"ruleId":"D1","level":"warning","message":{"text":"RowWriter::write (cyclomatic 29): RowWriter::write has cyclomatic complexity 29 (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/servers/src/http/prometheus.rs"},"region":{"startLine":1062}}}],"partialFingerprints":{"codehealthFindingId/v1":"a18d64b737e0d74b347289e3b6b5e01cebf5b9243f31d8248c6a7a3e861e1925"}},{"ruleId":"D1","level":"warning","message":{"text":"HttpOutputWriter::write (cyclomatic 29): HttpOutputWriter::write has cyclomatic complexity 29 (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/servers/src/http/result.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"611e59bfdbd0422a5571bb64687775ad4053b94eb75ecb57a1d88fed5067ee61"}},{"ruleId":"D1","level":"warning","message":{"text":"frontend::instance::grpc::fill_catalog_and_schema_from_context (cyclomatic 28): frontend::instance::grpc::fill_catalog_and_schema_from_context 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/frontend/src/instance/grpc.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"52fd71a81ed8addb5a42216818ee05bcd4c5ea4303f8b7608d2bfd31587660c7"}},{"ruleId":"D1","level":"warning","message":{"text":"NativeHistogram::quantile_with_info (cyclomatic 27): NativeHistogram::quantile_with_info 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/common/query/src/native_histogram.rs"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"4df431f66937ee258a813c858cc66d5d49d7db0775b486fc34283888cb69fa58"}},{"ruleId":"D1","level":"warning","message":{"text":"HistogramFoldStream::evaluate_fraction (cyclomatic 27): HistogramFoldStream::evaluate_fraction 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/promql/src/extension_plan/histogram_fold.rs"},"region":{"startLine":1341}}}],"partialFingerprints":{"codehealthFindingId/v1":"03147b3febaf413eadf3869f2ecfa38b5f6afd028d887794cfee96f7d66ae1b9"}},{"ruleId":"D1","level":"warning","message":{"text":"datatypes::vectors::eq::equal (cyclomatic 26): datatypes::vectors::eq::equal 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":"src/datatypes/src/vectors/eq.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"006866fcc02598fc46455a0029530ab832a780b72f49eedac146a193a97a5f18"}},{"ruleId":"D1","level":"warning","message":{"text":"ParquetbenchCommand::run (cyclomatic 25): ParquetbenchCommand::run 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/cmd/src/datanode/parquetbench.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"50f1cda3461de905d4e931a199daa593d5a9d8a3eb5fae5fd7a5c1d15d5e6186"}},{"ruleId":"D1","level":"warning","message":{"text":"pipeline::etl::transform::transformer::greptime::coerce::coerce_i64_value (cyclomatic 25): pipeline::etl::transform::transformer::greptime::coerce::coerce_i64_value has cyclomatic complexity 25 (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/pipeline/src/etl/transform/transformer/greptime/coerce.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"03748c55d3ae27682ee18bde8a32ecb03e342fbbaa4727829e27a8bf0edfe79b"}},{"ruleId":"D1","level":"warning","message":{"text":"MergeScanExec::to_stream (cyclomatic 25): MergeScanExec::to_stream 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":"src/query/src/dist_plan/merge_scan.rs"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"588ac0bb0fe23bc69b5b727eed9f7b8046ff05414412548660c875ed9178e37e"}},{"ruleId":"D1","level":"warning","message":{"text":"ParserContext::parse_alter_trigger (cyclomatic 25): ParserContext::parse_alter_trigger has cyclomatic complexity 25 (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/sql/src/parsers/alter_parser/trigger.rs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"454d8c3a24205d25c96a49ed553710341a6416d387ebc69d25e8ff6e7cebfa7b"}},{"ruleId":"D1","level":"warning","message":{"text":"Predicate::eval (cyclomatic 24): Predicate::eval 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/catalog/src/system_schema/predicate.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac5c0ff17e2fb0334a032791f62504f374fe7dde17760ef155b24c9423bb2d24"}},{"ruleId":"D1","level":"warning","message":{"text":"Value::try_negative (cyclomatic 24): Value::try_negative has cyclomatic complexity 24 (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. This is NOT this file\u0027s highest cyclomatic complexity: Value::try_from (cyclomatic 37) 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/datatypes/src/value.rs"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4ab8d0ff9d212d462b57a6268f20cae9c4a4dab8a7ceb7368a46530b04dac89"}},{"ruleId":"D1","level":"warning","message":{"text":"operator::expr_helper::to_alter_table_expr (cyclomatic 24): operator::expr_helper::to_alter_table_expr has cyclomatic complexity 24 (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/operator/src/expr_helper.rs"},"region":{"startLine":811}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dc40216ea7cde874eab908bf585cb6fb5c1bcfc5118345e65852c195b512187"}},{"ruleId":"D1","level":"warning","message":{"text":"CoalescingBatcher::run (cyclomatic 24): CoalescingBatcher::run 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/servers/src/grpc/flight/stream.rs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"63e1dd5b9d71e859ce2f1720b35fb96f0d7a0fe604af4424f6b873939b26c8bc"}},{"ruleId":"D1","level":"warning","message":{"text":"common_function::scalars::math::clamp::clamp_impl (cyclomatic 23): common_function::scalars::math::clamp::clamp_impl 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/common/function/src/scalars/math/clamp.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ec0ad09735ef341704a373672f779c49809bfe8e8d840a5f0c1b3c6e66c43a1"}},{"ruleId":"D1","level":"warning","message":{"text":"PartitionExpr::try_as_logical_expr (cyclomatic 23): PartitionExpr::try_as_logical_expr 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. This is NOT this file\u0027s highest cyclomatic complexity: Operand::try_as_logical_expr (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":"src/partition/src/expr.rs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7abc76fc34bb3af255574d41c2d3d3fdc540b8d522b7029aa4e8ce76f4e518c"}},{"ruleId":"D1","level":"warning","message":{"text":"flow::batching_mode::utils::merge_op_for_aggregate_expr (cyclomatic 22): flow::batching_mode::utils::merge_op_for_aggregate_expr has cyclomatic complexity 22 (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/flow/src/batching_mode/utils.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"57fcf68f3577f3c0f06538103b0380f7922220232debda90fcfc72c39c668320"}},{"ruleId":"D1","level":"warning","message":{"text":"MetricEngine::handle_request (cyclomatic 22): MetricEngine::handle_request has cyclomatic complexity 22 (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/metric-engine/src/engine.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aea0c72d65b9e18bac1997015886edec8a912f4a5afc73a3506eccaba35a4d6"}},{"ruleId":"D1","level":"warning","message":{"text":"MitoRegion::set_role_state_gracefully (cyclomatic 22): MitoRegion::set_role_state_gracefully has cyclomatic complexity 22 (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/mito2/src/region.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"281525bf6e3e9cf0670e1953644fbed33134cf5ddba8ac66d57a2e93a7aa1a86"}},{"ruleId":"D1","level":"warning","message":{"text":"ParquetReaderBuilder::build_reader_input_inner (cyclomatic 22): ParquetReaderBuilder::build_reader_input_inner has cyclomatic complexity 22 (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/mito2/src/sst/parquet/reader.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"90f523cc855accc469488c9473695a830eaa5785d1569f89669ed1d9b2ef0738"}},{"ruleId":"D1","level":"warning","message":{"text":"operator::statement::semantic_graph::conventions::validate (cyclomatic 22): operator::statement::semantic_graph::conventions::validate 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/operator/src/statement/semantic_graph/conventions.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"a713335bc9c26b1db1e12c9bb53f36e75975549fefb6c236b43322aa2f53a386"}},{"ruleId":"D1","level":"warning","message":{"text":"PromPlanner::create_table_scan_plan (cyclomatic 22): PromPlanner::create_table_scan_plan 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/query/src/promql/planner.rs"},"region":{"startLine":2762}}}],"partialFingerprints":{"codehealthFindingId/v1":"e31d4f7cf1d27f5eba7efc4b2967cacf3f9c03ef1ae51e60860f6c1347952e02"}},{"ruleId":"D1","level":"warning","message":{"text":"query::promql::planner::matching_filters::try_propagate (cyclomatic 22): query::promql::planner::matching_filters::try_propagate has cyclomatic complexity 22 (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/query/src/promql/planner/matching_filters.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"4031dccab281ec359a887c7dbebf331e4a0dd46cad9c52d5b2c2e1534039097a"}},{"ruleId":"D1","level":"warning","message":{"text":"cli::data::import_v2::packed::validate_snapshot (cyclomatic 21): cli::data::import_v2::packed::validate_snapshot 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/cli/src/data/import_v2/packed.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"007646870b986c45272ca1b18e5b4533633dde25649d77bf55443351d7ff3d2f"}},{"ruleId":"D1","level":"warning","message":{"text":"Runner::execute_once (cyclomatic 21): Runner::execute_once 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/common/procedure/src/local/runner.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"c300a9b3febf51256a0a93c80f08b231eb77582eccb39aaeaea23e900be6697d"}},{"ruleId":"D1","level":"warning","message":{"text":"Instance::ingest_trace_spans (cyclomatic 21): Instance::ingest_trace_spans 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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":871}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d34c8d264ca296f9daa6181f1c8edd3c0fa47c768df31e463b90d700327c28"}},{"ruleId":"D1","level":"warning","message":{"text":"BatchGcProcedure::get_file_references (cyclomatic 21): BatchGcProcedure::get_file_references 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/meta-srv/src/gc/procedure.rs"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fd4d41fd9a79d49531faba58c49f315dc34c72adbb38f3322dcc3e55ce10a4c"}},{"ruleId":"D1","level":"warning","message":{"text":"Inserter::get_alter_table_expr_on_demand (cyclomatic 21): Inserter::get_alter_table_expr_on_demand 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/operator/src/insert.rs"},"region":{"startLine":1522}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7d257211a4e06143908a04c905b4fd63a8f249636a605dfa91fc36b66eb4e2b"}},{"ruleId":"D1","level":"warning","message":{"text":"Pattern::from_str (cyclomatic 21): Pattern::from_str 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/pipeline/src/etl/processor/dissect.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"1465171a0336a9b5a88126c929214da2f1d72f2821f2afcb1d2896c1a0714579"}},{"ruleId":"D1","level":"warning","message":{"text":"ExtrapolatedRate::calc (cyclomatic 21): ExtrapolatedRate::calc 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/promql/src/functions/extrapolate_rate.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"5238b77e408904a6739303591e2f793e55d1a9ead0b3bbd4b5e20cf707e13fe2"}},{"ruleId":"D1","level":"warning","message":{"text":"WindowedSortStream::poll_next_inner (cyclomatic 21): WindowedSortStream::poll_next_inner 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/query/src/window_sort.rs"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a96e00c830081694325c27131ebd6ae7c95029e5dd9f8cd86a3f2454567fbaf"}},{"ruleId":"D1","level":"warning","message":{"text":"AlterTableOperation::fmt (cyclomatic 21): AlterTableOperation::fmt 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":"src/sql/src/statements/alter.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f969ee228e4b9be48186b8bcc476743133603337d6ff8e0375c6d08539afec1"}},{"ruleId":"D1","level":"warning","message":{"text":"aws-ec2-runner-teardown.teardown (cyclomatic 21): aws-ec2-runner-teardown.teardown 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":".github/scripts/aws-ec2-runner-teardown.py"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"524e89251e210549e725df802bc5bfe44022d5bc52b649a5ba62d81e426f461a"}},{"ruleId":"D1","level":"warning","message":{"text":"Predicate::from_expr (cyclomatic 20): Predicate::from_expr 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/catalog/src/system_schema/predicate.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"6af81c0d1bee12eda0b1be463235c5d86074d6ac138015af3c3be4e361715b02"}},{"ruleId":"D1","level":"warning","message":{"text":"cli::data::import_v2::command::parse_ddl_statements (cyclomatic 20): cli::data::import_v2::command::parse_ddl_statements 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/src/data/import_v2/command.rs"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"c91d891d7f8cd598c5372a0bcbb27160ba8a0edd0ba844d7484ec25871a62669"}},{"ruleId":"D1","level":"warning","message":{"text":"SimpleFilterEvaluator::cast_timestamp_unit (cyclomatic 20): SimpleFilterEvaluator::cast_timestamp_unit 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/common/recordbatch/src/filter.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"c39edfb2167b325a08693b6749643575f9a4922882cc7dfbc29a31ecf88ef27c"}},{"ruleId":"D1","level":"warning","message":{"text":"promql::functions::native_histogram::select_mixed_range_lanes (cyclomatic 20): promql::functions::native_histogram::select_mixed_range_lanes 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. This is NOT this file\u0027s highest cyclomatic complexity: MixedRangeFunction::parse (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":"src/promql/src/functions/native_histogram.rs"},"region":{"startLine":1937}}}],"partialFingerprints":{"codehealthFindingId/v1":"64eca03cac4dc605e8b2828b397e70cd277f4b6d6aeb3648363ff58819c44b2f"}},{"ruleId":"D1","level":"warning","message":{"text":"LogQueryPlanner::build_content_filter_with_expr (cyclomatic 20): LogQueryPlanner::build_content_filter_with_expr 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/query/src/log_query/planner.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"268841e0ffe9bc1a6159221a4dbb322da472ca87b3f19f5a8b5089a93f9ff354"}},{"ruleId":"D1","level":"warning","message":{"text":"PromPlanner::build_time_index_filter (cyclomatic 20): PromPlanner::build_time_index_filter 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/query/src/promql/planner.rs"},"region":{"startLine":2662}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5e9049f343d4f94e94ee3e88bb080583bbcbac0a33ff9b736ac839dc02c64f6"}},{"ruleId":"D1","level":"warning","message":{"text":"ExportCreateCommand::build (cyclomatic 19): ExportCreateCommand::build 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/src/data/export_v2/command.rs"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"5988a0c62aeca8f2174b5a5eddd9bd04319f26105dbdacb708647ab7f1bfd6fd"}},{"ruleId":"D1","level":"warning","message":{"text":"StartCommand::merge_with_cli_options (cyclomatic 19): StartCommand::merge_with_cli_options 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cmd/src/datanode.rs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5663332481a3cd0dd43f484622fd9ed4879067b089982c65ac8027cfda6c2da"}},{"ruleId":"D1","level":"warning","message":{"text":"cmd::datanode::parquet_rewrite::build_writer_properties (cyclomatic 19): cmd::datanode::parquet_rewrite::build_writer_properties 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/cmd/src/datanode/parquet_rewrite.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"09d9b2bf9eec3fc8942abf410b194c1f7569ddad6b8c043a3cf863aabc66a332"}},{"ruleId":"D1","level":"warning","message":{"text":"BatchingEngine::create_flow_inner (cyclomatic 19): BatchingEngine::create_flow_inner 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/engine.rs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"560508ad68441a40031c5b192fc8439f9929a0586b39e2d12fdfc87ad08ef1bc"}},{"ruleId":"D1","level":"warning","message":{"text":"Instance::reconcile_trace_column_types (cyclomatic 19): Instance::reconcile_trace_column_types 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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":1943}}}],"partialFingerprints":{"codehealthFindingId/v1":"3055c917dd860ef2e9f05b56e8b5ab9a25c145485c2a387f416766d86bc140ec"}},{"ruleId":"D1","level":"warning","message":{"text":"Batch::merge_last_non_null (cyclomatic 19): Batch::merge_last_non_null 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/mito2/src/read.rs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"92bcac59a1d0c365451b5e119a298ff55355616d1a1c28b6586d9736a8869404"}},{"ruleId":"D1","level":"warning","message":{"text":"RegionWorkerLoop::handle_alter_region_options_fast (cyclomatic 19): RegionWorkerLoop::handle_alter_region_options_fast 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/mito2/src/worker/handle_alter.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"22bcec3eb5b4b361bf93a3eb3894b030eaef42158f034bb31af9decb117054eb"}},{"ruleId":"D1","level":"warning","message":{"text":"StatementExecutor::determine_flow_type (cyclomatic 19): StatementExecutor::determine_flow_type 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/operator/src/statement/ddl.rs"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3e8ef50ac9407c89699ca5f932049b7971a7eec42fd062e6e3865040079cd2d"}},{"ruleId":"D1","level":"warning","message":{"text":"StatementExecutor::set_variables (cyclomatic 19): StatementExecutor::set_variables has cyclomatic complexity 19 (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/operator/src/statement.rs"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"048f83b4f7dcbfa3c4cc8aa43eea9818b3eeca674ce9b0e9db928a2b4d23b570"}},{"ruleId":"D1","level":"warning","message":{"text":"pipeline::etl::transform::transformer::greptime::coerce::coerce_bool_value (cyclomatic 19): pipeline::etl::transform::transformer::greptime::coerce::coerce_bool_value has cyclomatic complexity 19 (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/pipeline/src/etl/transform/transformer/greptime/coerce.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"f285b0d95d5e29518b97fc0cb0a3546b185f98a06d5e196e09b85fb7b9227977"}},{"ruleId":"D1","level":"warning","message":{"text":"HistogramFoldStream::evaluate_row (cyclomatic 19): HistogramFoldStream::evaluate_row 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/promql/src/extension_plan/histogram_fold.rs"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"87470c25342d85629d2b78a0271433e8284559a88c8903a194fd273121615a74"}},{"ruleId":"D1","level":"warning","message":{"text":"PlanRewriter::should_expand (cyclomatic 19): PlanRewriter::should_expand 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/query/src/dist_plan/analyzer.rs"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd818398439dfe603383b410e397a354960bbeb7b40b0ab83f82358e4e436917"}},{"ruleId":"D1","level":"warning","message":{"text":"CountNestAggrRule::try_rewrite_sort (cyclomatic 19): CountNestAggrRule::try_rewrite_sort 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/optimizer/count_nest_aggr.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"83e8d6890ea41040511e13a1a08da2aab5f25db0e68968ae45099fb2f324c783"}},{"ruleId":"D1","level":"warning","message":{"text":"PromPlanner::selector_to_series_normalize_plan (cyclomatic 19): PromPlanner::selector_to_series_normalize_plan 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/query/src/promql/planner.rs"},"region":{"startLine":2247}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac03cf5e0c05a1e4c59fa2ca34a7a296dcb7a74a7c6968a9642903f92679932"}},{"ruleId":"D1","level":"warning","message":{"text":"servers::batcher::table::pending_worker::start_worker (cyclomatic 19): servers::batcher::table::pending_worker::start_worker 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/servers/src/batcher/table/pending_worker.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"afec9c8541ec64286e62ee268ecc71d82502734b37def3e9443f595a433a68e4"}},{"ruleId":"D1","level":"warning","message":{"text":"collect_context.collect_report (cyclomatic 19): collect_context.collect_report 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".agents/skills/greptimedb-development-docker-image/scripts/collect_context.py"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"cea39a7f9d46e927b0b68d92313933f28e369bdec66379d9bf45dd0845ee7f07"}},{"ruleId":"D1","level":"warning","message":{"text":"StartCommand::merge_with_cli_options (cyclomatic 18): StartCommand::merge_with_cli_options 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/cmd/src/frontend.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f7a8dbf2419c72e880e304bcbe01f083235bffa50e14928a2083dfc2be161f2"}},{"ruleId":"D1","level":"warning","message":{"text":"PackIndex::validate (cyclomatic 18): PackIndex::validate 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/common/datasource/src/packed_snapshot.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d0a5ff17563ac26b656c7b1b705d52c66742ab7a2695830b48d8e9fa671b931"}},{"ruleId":"D1","level":"warning","message":{"text":"ParserContext::parse_one_impl (cyclomatic 18): ParserContext::parse_one_impl 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/common/function/src/scalars/matches.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"3519c192bab20408f027154f158e1d19941bb85d3c7e56b592546471df26de3a"}},{"ruleId":"D1","level":"warning","message":{"text":"BatchingTask::start_scheduled_loop (cyclomatic 18): BatchingTask::start_scheduled_loop has cyclomatic complexity 18 (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/flow/src/batching_mode/task.rs"},"region":{"startLine":1620}}}],"partialFingerprints":{"codehealthFindingId/v1":"74d52d6a71cd28757fd4e8ace56c53aced8c696f2c5d40f56e2fc6804c00e9bb"}},{"ruleId":"D1","level":"warning","message":{"text":"TraceColumnRequestSchema::incompatible_schema_batches (cyclomatic 18): TraceColumnRequestSchema::incompatible_schema_batches 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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"1136db26158b7a387ad1cedab4ad09d802937bf080e2fc52a988d073de927783"}},{"ruleId":"D1","level":"warning","message":{"text":"mito2::sst::parquet::prefilter::build_reader_filter_plan (cyclomatic 18): mito2::sst::parquet::prefilter::build_reader_filter_plan 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/mito2/src/sst/parquet/prefilter.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"95229bd1536d62adda1faceafe3376ce60fa5cbeff675674ec8eccc0355f7426"}},{"ruleId":"D1","level":"warning","message":{"text":"mito2::series_index::maintenance::build_index_version (cyclomatic 18): mito2::series_index::maintenance::build_index_version 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/mito2/src/series_index/maintenance.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"0883b82531b9bebcc19efe10dfbad3962b4a7eaa6f6ee72e82e62a90f86408b0"}},{"ruleId":"D1","level":"warning","message":{"text":"mito2::region::opener::preload_parquet_meta_cache_for_files (cyclomatic 18): mito2::region::opener::preload_parquet_meta_cache_for_files 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/mito2/src/region/opener.rs"},"region":{"startLine":1200}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5b8df95696495547d1a1581e264a65d7a9fe7d06a6f148a89365bae3a577d43"}},{"ruleId":"D1","level":"warning","message":{"text":"servers::postgres::handler::describe_fields (cyclomatic 18): servers::postgres::handler::describe_fields has cyclomatic complexity 18 (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/servers/src/postgres/handler.rs"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4a0749d129635adbda38fd62c76a32751ee5bca0fe85f8dcb62ef4b8d2e67e1"}},{"ruleId":"D1","level":"warning","message":{"text":"servers::http::prometheus::label_values_query (cyclomatic 18): servers::http::prometheus::label_values_query 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/servers/src/http/prometheus.rs"},"region":{"startLine":1683}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e914a618a20ea21a6bb746a9f604cb3afd6aadd679bb65997d0b471ab1b1387"}},{"ruleId":"D1","level":"warning","message":{"text":"servers::pipeline::run_custom_pipeline (cyclomatic 18): servers::pipeline::run_custom_pipeline 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/servers/src/pipeline.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"a21effdf64c0c89a9b3a4e8acd21c90a4f6ed5bac597372a2aa08bfdecfb5ef7"}},{"ruleId":"D1","level":"warning","message":{"text":"agent-observability-summary.benchmark (cyclomatic 18): agent-observability-summary.benchmark 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":".github/scripts/agent-observability-summary.py"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"f62c688729e712c5de08983430561d4ee49220d5538363a5e574014c06593c3a"}},{"ruleId":"D1","level":"warning","message":{"text":"Manifest::validate_layout (cyclomatic 17): Manifest::validate_layout 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/src/data/export_v2/manifest.rs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0d56215020f38eac05398c073b4ed3dc64402a6a5894bfd41ddbcacfab7b50e"}},{"ruleId":"D1","level":"warning","message":{"text":"StartCommand::merge_with_cli_options (cyclomatic 17): StartCommand::merge_with_cli_options 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/cmd/src/metasrv.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"df299ceeed8012c6609582a40f7d78f9c3514aa3973f02f925e1c3c10aebee06"}},{"ruleId":"D1","level":"warning","message":{"text":"common_sql::convert::sql_value_to_value (cyclomatic 17): common_sql::convert::sql_value_to_value has cyclomatic complexity 17 (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/common/sql/src/convert.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe10ab7659fcdfeb0925053cb77fd98188d467009a44171d1aee2330f5dc9555"}},{"ruleId":"D1","level":"warning","message":{"text":"FulltextOptions::try_from (cyclomatic 17): FulltextOptions::try_from has cyclomatic complexity 17 (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/datatypes/src/schema/column_schema.rs"},"region":{"startLine":742}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3b1bb2bbab765e0991de1b4893fc69f68ecda2b35d1f14df579a0df7a28517f"}},{"ruleId":"D1","level":"warning","message":{"text":"BatchingTask::apply_query_result_to_state (cyclomatic 17): BatchingTask::apply_query_result_to_state 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/flow/src/batching_mode/task/ckpt.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bdc47367b1256786b28e00a73db714b96832022e3bd5ae81dd706d07bd3ea4c"}},{"ruleId":"D1","level":"warning","message":{"text":"EntityGraphProviderImpl::enumerate (cyclomatic 17): EntityGraphProviderImpl::enumerate 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/frontend/src/instance/entity_graph.rs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d8c64d4d00ef3a14292846cdac4aac049521e2abf2e4825192e30bf45b52a76"}},{"ruleId":"D1","level":"warning","message":{"text":"Metasrv::try_start_after_gc_check (cyclomatic 17): Metasrv::try_start_after_gc_check 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/meta-srv/src/metasrv.rs"},"region":{"startLine":617}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ce9a0d53db3a379a7fb76d2c9c93f05b9789251e6b0f85c5ac6fb6e9d530831"}},{"ruleId":"D1","level":"warning","message":{"text":"DefaultCompactor::merge_ssts (cyclomatic 17): DefaultCompactor::merge_ssts 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/mito2/src/compaction/compactor.rs"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"872718a67f0f59baf3af03dce9e39aec2584f99dd66ddf4568616a502ed53e74"}},{"ruleId":"D1","level":"warning","message":{"text":"LocalGcWorker::do_region_gc (cyclomatic 17): LocalGcWorker::do_region_gc 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/mito2/src/gc.rs"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"648b879427187d2c5040e8fc701f8bd78534a67a28af41c924f73eb9d37bf3c8"}},{"ruleId":"D1","level":"warning","message":{"text":"RegionWorkerLoop::handle_write_requests (cyclomatic 17): RegionWorkerLoop::handle_write_requests 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/mito2/src/worker/handle_write.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"145d1eaa72dd3003c239ed72eb70f68ae172fa0111c01bdaf8930c4f06a02ccf"}},{"ruleId":"D1","level":"warning","message":{"text":"Collider::try_create_nucleon (cyclomatic 17): Collider::try_create_nucleon has cyclomatic complexity 17 (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/partition/src/collider.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"e166c58c00bf24ec191af44872e7a7b930220b4f0d29d162bf0d6d65665289f8"}},{"ruleId":"D1","level":"warning","message":{"text":"partition::simplify::simplify_terms (cyclomatic 17): partition::simplify::simplify_terms 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/partition/src/simplify.rs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"437b728f6ac88a614b49525628cf5f1f3c6e80651b9f398efad57ad0c81073c1"}},{"ruleId":"D1","level":"warning","message":{"text":"servers::http::prometheus::update_metric_name_matcher (cyclomatic 17): servers::http::prometheus::update_metric_name_matcher has cyclomatic complexity 17 (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/servers/src/http/prometheus.rs"},"region":{"startLine":1619}}}],"partialFingerprints":{"codehealthFindingId/v1":"60cd1e10d0e8bcaaf517e15dbdf4a1bded720aeddb9575391e03a68d112db340"}},{"ruleId":"D1","level":"warning","message":{"text":"AlterKind::validate (cyclomatic 17): AlterKind::validate 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. This is NOT this file\u0027s highest cyclomatic complexity: RegionRequest::try_from_request_body (cyclomatic 20) 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/store-api/src/region_request.rs"},"region":{"startLine":969}}}],"partialFingerprints":{"codehealthFindingId/v1":"0212b50550a18f462073130fbb956c765849c4d36b221fe9ccb5f085e6c1c023"}},{"ruleId":"D1","level":"warning","message":{"text":"query-regression-run.run_direct_case (cyclomatic 17): query-regression-run.run_direct_case 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":".github/scripts/query-regression-run.py"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"25db1103bfe3d9ff8a096b12efb24e46ae83de82a52400f495a3a66e30a562ad"}},{"ruleId":"D1","level":"warning","message":{"text":"Import::run (cyclomatic 16): Import::run 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/cli/src/data/import_v2/command.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"39905e277406e08157231a7b41cfa646d0dcd7c60293d4ddc247a616b2407fd8"}},{"ruleId":"D1","level":"warning","message":{"text":"common_function::admin::flush_compact_table::parse_compact_options (cyclomatic 16): common_function::admin::flush_compact_table::parse_compact_options 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/common/function/src/admin/flush_compact_table.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"419dd1c190b44a171fe68eb4e9c5490b8ac738e786c7d4d629690b203ade08fe"}},{"ruleId":"D1","level":"warning","message":{"text":"NativeHistogram::detect_reset (cyclomatic 16): NativeHistogram::detect_reset 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/common/query/src/native_histogram.rs"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"666a3e7e667cc0e0cd6f7125f4ea78ecf9f28b7a77f0d53a97fcd6397b810571"}},{"ruleId":"D1","level":"warning","message":{"text":"common_sql::convert::parse_string_to_value (cyclomatic 16): common_sql::convert::parse_string_to_value 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/common/sql/src/convert.rs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7742bb3b95e9a96b43366aea256db8305b3e5544c95e4a810a3d6ced4428cb4"}},{"ruleId":"D1","level":"warning","message":{"text":"BatchingTask::execute_plan_unlocked (cyclomatic 16): BatchingTask::execute_plan_unlocked 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/flow/src/batching_mode/task.rs"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cf3bf7725fb8a1e22e07beb7d051ddb0d08710e6b3dce975c32fe44edeccc75"}},{"ruleId":"D1","level":"warning","message":{"text":"MetasrvBuilder::build (cyclomatic 16): MetasrvBuilder::build 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/meta-srv/src/metasrv/builder.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"744bc505e65eb5decc975b3e4bdcb1698868dc3836408656b8fa2d058abfb0d7"}},{"ruleId":"D1","level":"warning","message":{"text":"ParquetFetchMetrics::fmt (cyclomatic 16): ParquetFetchMetrics::fmt 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/mito2/src/sst/parquet/row_group.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"540c59ebd425ba0dfee5b50c8ad6401f3bdfbdda75005c5d453e3f0c1cbf5481"}},{"ruleId":"D1","level":"warning","message":{"text":"RegionWorkerLoop::handle_alter_request (cyclomatic 16): RegionWorkerLoop::handle_alter_request 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/mito2/src/worker/handle_alter.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f0f41572f158267ba94d22dd432e99c6bac4f86f552fa509b95dd7ee39d64c4"}},{"ruleId":"D1","level":"warning","message":{"text":"RegionWorkerLoop::process_write_requests (cyclomatic 16): RegionWorkerLoop::process_write_requests 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/mito2/src/worker/handle_write.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a0279c30dbd3572337901180398e59b9b105fdcdab59676b9ca257dfeb17e62"}},{"ruleId":"D1","level":"warning","message":{"text":"mito2::read::seq_scan::build_flat_sources (cyclomatic 16): mito2::read::seq_scan::build_flat_sources 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/mito2/src/read/seq_scan.rs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"07264abfd767077dbd78b7cccbeb24c6efaef411296997ee57715c551ab711ff"}},{"ruleId":"D1","level":"warning","message":{"text":"mito2::sst::parquet::format::column_values_by_type (cyclomatic 16): mito2::sst::parquet::format::column_values_by_type 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/mito2/src/sst/parquet/format.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"afc9b138ad21ee57973ce0694e5daef7022b84b89f51b218b655c638017a9801"}},{"ruleId":"D1","level":"warning","message":{"text":"StatementExecutor::repartition_table (cyclomatic 16): StatementExecutor::repartition_table 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":"src/operator/src/statement/ddl.rs"},"region":{"startLine":1692}}}],"partialFingerprints":{"codehealthFindingId/v1":"150045ee362f91072c5841ef16e28600e847054007e9f7fd80561f2606f76bd6"}},{"ruleId":"D1","level":"warning","message":{"text":"PartitionChecker::run (cyclomatic 16): PartitionChecker::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/partition/src/checker.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"c06babb06d51e73816e58c6831f64f21edfa0bf94386b1f6ce2fac8256690b05"}},{"ruleId":"D1","level":"warning","message":{"text":"DissectProcessor::process_pattern (cyclomatic 16): DissectProcessor::process_pattern 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/pipeline/src/etl/processor/dissect.rs"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d76ec20bea8602fc335140bb2db9aa360148cbd54fcbe59c6b4458c949cfc32"}},{"ruleId":"D1","level":"warning","message":{"text":"promql::functions::native_histogram::native_histogram_range_float (cyclomatic 16): promql::functions::native_histogram::native_histogram_range_float 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: MixedRangeFunction::parse (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":"src/promql/src/functions/native_histogram.rs"},"region":{"startLine":1191}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1e54564bf349959d9e1d146aa05760761af18184d71f9d59250310f423d847f"}},{"ruleId":"D1","level":"warning","message":{"text":"DataFusionExprConverter::convert (cyclomatic 16): DataFusionExprConverter::convert 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. This is NOT this file\u0027s highest cyclomatic complexity: DataFusionExprConverter::is_safe_cast_for_partition_pruning (cyclomatic 18) 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/query/src/dist_plan/predicate_extractor.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ccceb5be0df9dc18795cf2d090411c8a97e1737ac5c4868026edb9678dfe0fb"}},{"ruleId":"D1","level":"warning","message":{"text":"RangeSelectStream::generate_output (cyclomatic 16): RangeSelectStream::generate_output 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/query/src/range_select/plan.rs"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c70d84dc9b1341fca5559704c6bbb4c30cc1557415976a594926b912680cfa2"}},{"ruleId":"D1","level":"warning","message":{"text":"query::range_select::plan_rewrite::evaluate_expr_to_millisecond (cyclomatic 16): query::range_select::plan_rewrite::evaluate_expr_to_millisecond 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":"src/query/src/range_select/plan_rewrite.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"6df964d1adb6d8f523f524bd2bb2ac3cd3ba0ca0b5d3c368d98384de68bd3f3b"}},{"ruleId":"D1","level":"warning","message":{"text":"PostgresServerHandlerInner::authenticate_password_message (cyclomatic 16): PostgresServerHandlerInner::authenticate_password_message 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/servers/src/postgres/auth_handler.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9603022e66dde378075a320daf3eac000348a5c5ba27264e39acac87ad17e04"}},{"ruleId":"D1","level":"warning","message":{"text":"servers::http::handler::sql_analyze_stream (cyclomatic 16): servers::http::handler::sql_analyze_stream 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/servers/src/http/handler.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"224923044ca35782463ceb9fae7c69cd853bcb8caabfaca0bde5cccd93cf40a1"}},{"ruleId":"D1","level":"warning","message":{"text":"servers::otlp::trace::v1::write_attribute_with_schema (cyclomatic 16): servers::otlp::trace::v1::write_attribute_with_schema 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/servers/src/otlp/trace/v1.rs"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"f85bb77cb6019d5c112a7dde9ffdf474f263105ab884711b21c7c0c2f6b78f58"}},{"ruleId":"D1","level":"warning","message":{"text":"servers::http::prometheus::collect_metric_names (cyclomatic 16): servers::http::prometheus::collect_metric_names 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":"src/servers/src/http/prometheus.rs"},"region":{"startLine":1377}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfb3379c4f57a67d0341dbb80dc476f1f45596f7be236f9298d996d69990d809"}},{"ruleId":"D1","level":"warning","message":{"text":"ParserContext::parse_create_flow (cyclomatic 16): ParserContext::parse_create_flow 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/sql/src/parsers/create_parser.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"55a6b514a025203f6ffb08958888948f8d759a2ff7fb04b7214623ea0f9da7c1"}},{"ruleId":"D1","level":"warning","message":{"text":"TableMeta::set_table_options (cyclomatic 16): TableMeta::set_table_options 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/table/src/metadata.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"823b70941479e4a6bf9baf1b4bbe0d0811d71d10b6a644093ee2a787d914bd3f"}},{"ruleId":"D1","level":"warning","message":{"text":"agent-observability-summary.lifecycle (cyclomatic 16): agent-observability-summary.lifecycle 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":".github/scripts/agent-observability-summary.py"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e7026317ffc16768902c23439fa01d42b2fa24d1523dc4a034ebf998cecebad"}},{"ruleId":"D1","level":"warning","message":{"text":"query-regression-slash.admit_pull (cyclomatic 16): query-regression-slash.admit_pull 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":".github/scripts/query-regression-slash.py"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8936d890cf6f0ce895fafb41d6cd9e799a6b23deb44d777d0835336f0784600"}},{"ruleId":"D1","level":"warning","message":{"text":"query-regression-summary.build_markdown (cyclomatic 16): query-regression-summary.build_markdown 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":".github/scripts/query-regression-summary.py"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e423e5f54da66a74373b188e5d60883dbbaa125c88520ab87420a0c780f6a38"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::postgres::types::parameters_to_scalar_values (cognitive 205): servers::postgres::types::parameters_to_scalar_values has cognitive complexity 205 (threshold 15). Drivers by points: if/else 55 (117 pts), match/switch 23 (85 pts), boolean chains 2, loops 1 (nesting depth added 124). 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/servers/src/postgres/types.rs"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b9913e4574a7e8fcb5c1ef3a18910cea06d28936d750d4210a894f2851390a6"}},{"ruleId":"D2","level":"warning","message":{"text":"operator::req_convert::common::push_column_to_rows (cognitive 187): operator::req_convert::common::push_column_to_rows has cognitive complexity 187 (threshold 15). Drivers by points: if/else 62 (124 pts), loops 31 (62 pts), match/switch 1 (nesting depth added 93). 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/operator/src/req_convert/common.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"9405c40045e8c6ef2db5fc767ed2418d3dda9d194af57ae83189801d7d9de21a"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::http::jaeger::traces_from_records (cognitive 162): servers::http::jaeger::traces_from_records has cognitive complexity 162 (threshold 15). Drivers by points: if/else 34 (134 pts), loops 6 (17 pts), boolean chains 8, match/switch 1 (3 pts) (nesting depth added 113). 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/servers/src/http/jaeger.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eb0813350d83874baa5c95ee7e206594cd949e54adf00208f5033159d013569"}},{"ruleId":"D2","level":"warning","message":{"text":"PromPlanner::create_function_expr (cognitive 139): PromPlanner::create_function_expr has cognitive complexity 139 (threshold 15). Drivers by points: if/else 70 (118 pts), loops 6 (13 pts), boolean chains 5, match/switch 2 (3 pts) (nesting depth added 56). 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/query/src/promql/planner.rs"},"region":{"startLine":3278}}}],"partialFingerprints":{"codehealthFindingId/v1":"468f5be706bf8fe6fc06c78d02bb42da9d22f6384443c1a6b13e6e5970b33bb7"}},{"ruleId":"D2","level":"warning","message":{"text":"Inserter::create_or_alter_tables_on_demand (cognitive 96): Inserter::create_or_alter_tables_on_demand has cognitive complexity 96 (threshold 15). Drivers by points: if/else 25 (62 pts), loops 9 (19 pts), boolean chains 9, match/switch 3 (6 pts) (nesting depth added 50). 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/operator/src/insert.rs"},"region":{"startLine":1041}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f2b1765bf33c84ff577860377161e9a7324993846c4934b023aab6885279e38"}},{"ruleId":"D2","level":"warning","message":{"text":"PromPlanner::or_operator (cognitive 91): PromPlanner::or_operator has cognitive complexity 91 (threshold 15). Drivers by points: if/else 45 (59 pts), boolean chains 17, loops 6 (10 pts), match/switch 3 (5 pts) (nesting depth added 20). 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/query/src/promql/planner/set_operator.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e4caecff8314a41a6305538947a1d85c540b2c6283a54b67f2bf79236529a07"}},{"ruleId":"D2","level":"warning","message":{"text":"PromPlanner::prom_binary_expr_to_plan (cognitive 81): PromPlanner::prom_binary_expr_to_plan has cognitive complexity 81 (threshold 15). Drivers by points: if/else 31 (53 pts), boolean chains 18, match/switch 5 (10 pts) (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":"src/query/src/promql/planner.rs"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"e930e2af888c7d57fe3b2dc009b532b811252c1522319b25ad854ee91273f59f"}},{"ruleId":"D2","level":"warning","message":{"text":"ScanbenchCommand::run (cognitive 77): ScanbenchCommand::run has cognitive complexity 77 (threshold 15). Drivers by points: if/else 30 (48 pts), loops 7 (16 pts), match/switch 5 (10 pts), boolean chains 3 (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":"src/cmd/src/datanode/scanbench.rs"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccfcda0b20e9b8a1c1a9582cc27307dc375f5a280e65d803758a5f86ca222348"}},{"ruleId":"D2","level":"warning","message":{"text":"ScanMetricsSet::fmt (cognitive 70): ScanMetricsSet::fmt has cognitive complexity 70 (threshold 15). Drivers by points: if/else 50 (59 pts), boolean chains 7, loops 2 (4 pts) (nesting depth added 11). 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/mito2/src/read/scan_util.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"25476ebfa239e1d6481c80e4e04acdba4fc4381d97df1f099b56c17a77ce1b3e"}},{"ruleId":"D2","level":"warning","message":{"text":"promql::functions::native_histogram::native_extrapolated_rate (cognitive 61): promql::functions::native_histogram::native_extrapolated_rate has cognitive complexity 61 (threshold 15). Drivers by points: if/else 28 (50 pts), boolean chains 6, loops 3 (5 pts) (nesting depth added 24). 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/promql/src/functions/native_histogram.rs"},"region":{"startLine":2467}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5383eb3d9b8f9873e7cf188231d75c96801685dfa243e6b679ea2446d9d0680"}},{"ruleId":"D2","level":"warning","message":{"text":"MergeScanExec::to_stream (cognitive 57): MergeScanExec::to_stream has cognitive complexity 57 (threshold 15). Drivers by points: if/else 22 (49 pts), match/switch 1 (4 pts), loops 2 (3 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":"src/query/src/dist_plan/merge_scan.rs"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad820e7c76bd5540f0c83280bc04af79d0d79ccf1356f36775dac159e93b5361"}},{"ruleId":"D2","level":"warning","message":{"text":"Batch::merge_last_non_null (cognitive 54): Batch::merge_last_non_null has cognitive complexity 54 (threshold 15). Drivers by points: if/else 11 (36 pts), loops 7 (17 pts), boolean chains 1 (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/mito2/src/read.rs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"162bd650c239ee68769f6de60a5006593f7f9b7d1256eed8efd595a44ce78609"}},{"ruleId":"D2","level":"warning","message":{"text":"ParserContext::parse_show (cognitive 50): ParserContext::parse_show has cognitive complexity 50 (threshold 15). Drivers by points: if/else 37 (43 pts), boolean chains 7 (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/sql/src/parsers/show_parser.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"14cc54ee7299a92f9e00b1c406e73b5f6801e8a69eba3d3a4d9552b34d4fe60f"}},{"ruleId":"D2","level":"warning","message":{"text":"CoalescingBatcher::run (cognitive 49): CoalescingBatcher::run has cognitive complexity 49 (threshold 15). Drivers by points: if/else 14 (37 pts), loops 3 (5 pts), match/switch 2 (5 pts), boolean chains 2 (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/servers/src/grpc/flight/stream.rs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"049ac73b0e9bd1496a26807ef95ed7fbf530c75c7d32861f2a4ce8b3ae294a01"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::batcher::table::pending_worker::start_worker (cognitive 48): servers::batcher::table::pending_worker::start_worker has cognitive complexity 48 (threshold 15). Drivers by points: if/else 10 (35 pts), loops 2 (6 pts), match/switch 2 (5 pts), boolean chains 2 (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":"src/servers/src/batcher/table/pending_worker.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e4dbb1d449ed1d655a7838e76a20148ad6f116b828aa4a0da300580eab30009"}},{"ruleId":"D2","level":"warning","message":{"text":"Runner::execute_once (cognitive 46): Runner::execute_once has cognitive complexity 46 (threshold 15). Drivers by points: if/else 12 (38 pts), match/switch 3 (6 pts), boolean chains 2 (nesting depth added 29). 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/common/procedure/src/local/runner.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5ce240b65c545596a958f82160cb790deda4545dfd147dc317a40df16eb0761"}},{"ruleId":"D2","level":"warning","message":{"text":"WindowedSortStream::poll_next_inner (cognitive 46): WindowedSortStream::poll_next_inner has cognitive complexity 46 (threshold 15). Drivers by points: if/else 14 (38 pts), match/switch 3 (5 pts), loops 2 (3 pts) (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":"src/query/src/window_sort.rs"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aef523657aa11ff69496966931a54cbc1fbf9415f278f34319d7dad31b817cf"}},{"ruleId":"D2","level":"warning","message":{"text":"ci-slash.main (cognitive 46): ci-slash.main has cognitive complexity 46 (threshold 15). Drivers by points: if/else 18 (30 pts), boolean chains 9, loops 2 (4 pts), ternaries 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":".github/scripts/ci-slash.py"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"8156d74f4c46acc8619f4923f31d9a47745c6209f172c41fd88d81514f6f0e5d"}},{"ruleId":"D2","level":"warning","message":{"text":"cli::data::import_v2::packed::validate_snapshot (cognitive 45): cli::data::import_v2::packed::validate_snapshot has cognitive complexity 45 (threshold 15). Drivers by points: if/else 9 (29 pts), loops 4 (8 pts), boolean chains 4, match/switch 1 (4 pts) (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":"src/cli/src/data/import_v2/packed.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"6655ac90d8ed510ff279bf632ea26c0c18fab44a04e06f46e06b06a7e8cadc33"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchingTask::apply_query_result_to_state (cognitive 44): BatchingTask::apply_query_result_to_state has cognitive complexity 44 (threshold 15). Drivers by points: if/else 20 (42 pts), match/switch 1 (2 pts) (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":"src/flow/src/batching_mode/task/ckpt.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"1244d9fba9f5dfe7675fd133d267c501593620082fae820c3624ed20eae06a94"}},{"ruleId":"D2","level":"warning","message":{"text":"PromPlanner::selector_to_series_normalize_plan (cognitive 44): PromPlanner::selector_to_series_normalize_plan has cognitive complexity 44 (threshold 15). Drivers by points: if/else 13 (28 pts), loops 4 (12 pts), match/switch 1 (3 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/query/src/promql/planner.rs"},"region":{"startLine":2247}}}],"partialFingerprints":{"codehealthFindingId/v1":"e929337bcff5158388ce453b1fa1c1cc09bc4900ed296f630174448d85bc7a72"}},{"ruleId":"D2","level":"warning","message":{"text":"Instance::reconcile_trace_column_types (cognitive 42): Instance::reconcile_trace_column_types has cognitive complexity 42 (threshold 15). Drivers by points: if/else 11 (32 pts), loops 3 (6 pts), boolean chains 4 (nesting depth added 24). 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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":1943}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f6229943c9ad33a161fe43627eb2f2f0c1db4f1a88b34726fd3fe111512fcc2"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultCompactor::merge_ssts (cognitive 42): DefaultCompactor::merge_ssts has cognitive complexity 42 (threshold 15). Drivers by points: loops 8 (24 pts), if/else 5 (15 pts), match/switch 1 (3 pts) (nesting depth added 28). 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/mito2/src/compaction/compactor.rs"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6dae38853e321141ff9c7eb5d01c1853d2583712752e46792ff3d0bfbd6ad85"}},{"ruleId":"D2","level":"warning","message":{"text":"NativeHistogram::quantile_with_info (cognitive 41): NativeHistogram::quantile_with_info has cognitive complexity 41 (threshold 15). Drivers by points: if/else 19 (32 pts), boolean chains 8, 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/common/query/src/native_histogram.rs"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"4efe8e338ad49e12e92417efd37842c554e88c072edc90a2373f60fcda6e2dc4"}},{"ruleId":"D2","level":"warning","message":{"text":"operator::statement::semantic_graph::conventions::validate (cognitive 41): operator::statement::semantic_graph::conventions::validate has cognitive complexity 41 (threshold 15). Drivers by points: if/else 13 (29 pts), loops 5 (7 pts), match/switch 1 (3 pts), boolean chains 2 (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/operator/src/statement/semantic_graph/conventions.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d843ecbc941927fa0fcec8117899658efce5f5e0883603e2241c9e4104b11bd"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtrapolatedRate::calc (cognitive 41): ExtrapolatedRate::calc has cognitive complexity 41 (threshold 15). Drivers by points: if/else 19 (31 pts), match/switch 2 (7 pts), boolean chains 2, 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/promql/src/functions/extrapolate_rate.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb8c62d6bb912ff28e95a84539f5bfb2ffa10e748cbabeffa5cd571c506a583c"}},{"ruleId":"D2","level":"warning","message":{"text":"BoundedStager::delete_routine (cognitive 41): BoundedStager::delete_routine has cognitive complexity 41 (threshold 15). Drivers by points: if/else 8 (35 pts), match/switch 2 (5 pts), loops 1 (nesting depth added 30). 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/puffin/src/puffin_manager/stager/bounded_stager.rs"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7c561ab26fe8458421c7c342c66b69478d6815b9a7a7f0d2814fbda47a73216"}},{"ruleId":"D2","level":"warning","message":{"text":"Inserter::get_alter_table_expr_on_demand (cognitive 40): Inserter::get_alter_table_expr_on_demand has cognitive complexity 40 (threshold 15). Drivers by points: if/else 13 (28 pts), boolean chains 5, match/switch 1 (4 pts), loops 1 (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":"src/operator/src/insert.rs"},"region":{"startLine":1522}}}],"partialFingerprints":{"codehealthFindingId/v1":"b22821d38ca92d323643977d124e212ec3d527123be244bf8192016df2aa47d9"}},{"ruleId":"D2","level":"warning","message":{"text":"NativeHistogram::fraction_with_info (cognitive 39): NativeHistogram::fraction_with_info has cognitive complexity 39 (threshold 15). Drivers by points: if/else 16 (25 pts), boolean chains 13, 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/common/query/src/native_histogram.rs"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e3243c32e0a4035899ae0c11f56853a667c258227b2eb9cd032214162595649"}},{"ruleId":"D2","level":"warning","message":{"text":"partition::simplify::simplify_terms (cognitive 39): partition::simplify::simplify_terms has cognitive complexity 39 (threshold 15). Drivers by points: if/else 7 (22 pts), loops 7 (15 pts), boolean chains 2 (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":"src/partition/src/simplify.rs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"17ef2bf6de23235b539b2d0ae6011d47af0ab4f0f606176e256e0f3721ab788a"}},{"ruleId":"D2","level":"warning","message":{"text":"cli::data::import_v2::command::parse_ddl_statements (cognitive 38): cli::data::import_v2::command::parse_ddl_statements has cognitive complexity 38 (threshold 15). Drivers by points: if/else 14 (34 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (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":"src/cli/src/data/import_v2/command.rs"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8074e572d7aa1374ef24f1aa5b437f4b0dc0c586389854a76eab74ebf998f52"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchGcProcedure::get_file_references (cognitive 38): BatchGcProcedure::get_file_references has cognitive complexity 38 (threshold 15). Drivers by points: if/else 10 (18 pts), loops 9 (15 pts), match/switch 2 (4 pts), boolean chains 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":"src/meta-srv/src/gc/procedure.rs"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c2c5e345820a3154ceab87d6d9fd0adb41cb79155beb4e50b64f2b13a507a01"}},{"ruleId":"D2","level":"warning","message":{"text":"HistogramFoldStream::evaluate_fraction (cognitive 38): HistogramFoldStream::evaluate_fraction has cognitive complexity 38 (threshold 15). Drivers by points: if/else 17 (26 pts), boolean chains 9, loops 2, 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/promql/src/extension_plan/histogram_fold.rs"},"region":{"startLine":1341}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7fcbfd786586c8e5bf222b2f1a5b51571cb612a49c5c61f2de8fd236ae8bc33"}},{"ruleId":"D2","level":"warning","message":{"text":"Pruner::worker_loop (cognitive 37): Pruner::worker_loop has cognitive complexity 37 (threshold 15). Drivers by points: if/else 11 (26 pts), loops 3 (7 pts), boolean chains 2, match/switch 1 (2 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/mito2/src/read/pruner.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"69aefb8932e81602e91858dcc4f93a161c2aec89b0cdf9e937b89b386815a910"}},{"ruleId":"D2","level":"warning","message":{"text":"PromPlanner::create_table_scan_plan (cognitive 36): PromPlanner::create_table_scan_plan has cognitive complexity 36 (threshold 15). Drivers by points: if/else 15 (24 pts), loops 3 (6 pts), boolean chains 4, match/switch 1 (2 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/query/src/promql/planner.rs"},"region":{"startLine":2762}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae6efa5947df8db61d8ee0fe96c733b3e0fb112a4060a2ea4efdb212f74d7ab9"}},{"ruleId":"D2","level":"warning","message":{"text":"RangeSelectStream::generate_output (cognitive 36): RangeSelectStream::generate_output has cognitive complexity 36 (threshold 15). Drivers by points: if/else 12 (21 pts), loops 7 (15 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/query/src/range_select/plan.rs"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e5c4b84b6434c898bd2f53b741322819cc4828c5bcbe2fdc26f3b93131ac544"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::http::result::prometheus_resp::merge_batch (cognitive 36): servers::http::result::prometheus_resp::merge_batch has cognitive complexity 36 (threshold 15). Drivers by points: if/else 9 (25 pts), loops 3 (7 pts), match/switch 1 (3 pts), boolean chains 1 (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/servers/src/http/result/prometheus_resp.rs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f5bb0dba3ff01cf108fed57ddfc47603d9294ca0630f51863c879880d9c46fc"}},{"ruleId":"D2","level":"warning","message":{"text":"aws-ec2-runner-teardown.teardown (cognitive 36): aws-ec2-runner-teardown.teardown has cognitive complexity 36 (threshold 15). Drivers by points: if/else 9 (19 pts), boolean chains 5, error handling 2 (5 pts), ternaries 2 (4 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":".github/scripts/aws-ec2-runner-teardown.py"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcad2065e0287da821cf929bf2cb9114c6775592e5decf92d8980a478bd6e0e7"}},{"ruleId":"D2","level":"warning","message":{"text":"InformationSchemaStatisticsBuilder::make_statistics (cognitive 35): InformationSchemaStatisticsBuilder::make_statistics has cognitive complexity 35 (threshold 15). Drivers by points: if/else 5 (20 pts), loops 4 (9 pts), match/switch 1 (5 pts), boolean chains 1 (nesting depth added 24). 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/catalog/src/system_schema/information_schema/statistics.rs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec728565f553be5211af880ee894abad7ee9596cd7ff0f5c8fe3b44532f0172b"}},{"ruleId":"D2","level":"warning","message":{"text":"ParquetbenchCommand::run (cognitive 35): ParquetbenchCommand::run has cognitive complexity 35 (threshold 15). Drivers by points: if/else 19 (23 pts), boolean chains 4, loops 2 (4 pts), match/switch 3 (4 pts) (nesting depth added 7). 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/cmd/src/datanode/parquetbench.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ef4761814eb1d9faa108876951043265702624f5fd2b4686b38b9696a663356"}},{"ruleId":"D2","level":"warning","message":{"text":"common_recordbatch::adapter::convert_map_to_json_binary (cognitive 35): common_recordbatch::adapter::convert_map_to_json_binary has cognitive complexity 35 (threshold 15). Drivers by points: if/else 6 (16 pts), match/switch 4 (15 pts), loops 2 (4 pts) (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":"src/common/recordbatch/src/adapter.rs"},"region":{"startLine":831}}}],"partialFingerprints":{"codehealthFindingId/v1":"902c2129b7e1b162c4dee2c3a66d394082eacf616fb510e2b198d05a2eebdbe3"}},{"ruleId":"D2","level":"warning","message":{"text":"FlowDualEngine::check_flow_consistent (cognitive 35): FlowDualEngine::check_flow_consistent has cognitive complexity 35 (threshold 15). Drivers by points: if/else 11 (21 pts), loops 5 (14 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":"src/flow/src/adapter/flownode_impl.rs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e782c8254bb2e1dbb9d338d788b5b1aeb8c0174c86a57d216e03f12c12c7072"}},{"ruleId":"D2","level":"warning","message":{"text":"frontend::instance::grpc::fill_catalog_and_schema_from_context (cognitive 35): frontend::instance::grpc::fill_catalog_and_schema_from_context has cognitive complexity 35 (threshold 15). Drivers by points: if/else 18 (34 pts), match/switch 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":"src/frontend/src/instance/grpc.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0481277dcc37cec4dbef878bbc4381f0326966b827fd613dc673cbe01ae4f7d"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::region::opener::preload_parquet_meta_cache_for_files (cognitive 35): mito2::region::opener::preload_parquet_meta_cache_for_files has cognitive complexity 35 (threshold 15). Drivers by points: if/else 9 (22 pts), match/switch 3 (9 pts), boolean chains 3, loops 1 (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/mito2/src/region/opener.rs"},"region":{"startLine":1200}}}],"partialFingerprints":{"codehealthFindingId/v1":"0671dd27713222dc028dbc065364a6721e852819d7183da274a8944d38da3a01"}},{"ruleId":"D2","level":"warning","message":{"text":"PartitionChecker::remap_checkpoint (cognitive 35): PartitionChecker::remap_checkpoint has cognitive complexity 35 (threshold 15). Drivers by points: if/else 14 (32 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/partition/src/checker.rs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"16fcb591caba60431fe04451e63471afc2ecd6802f08a3cda05500d9fea78863"}},{"ruleId":"D2","level":"warning","message":{"text":"Predicate::eval (cognitive 34): Predicate::eval has cognitive complexity 34 (threshold 15). Drivers by points: if/else 7 (19 pts), loops 4 (8 pts), match/switch 3 (5 pts), boolean chains 2 (nesting depth added 18). 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/catalog/src/system_schema/predicate.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"aacb508e387efef7d1912bd2c342167a852110427e2b045ffe3124de478ab28c"}},{"ruleId":"D2","level":"warning","message":{"text":"Predicate::from_expr (cognitive 34): Predicate::from_expr has cognitive complexity 34 (threshold 15). Drivers by points: if/else 10 (25 pts), match/switch 3 (5 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 19). 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/catalog/src/system_schema/predicate.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"421153018770cc7bf68eaebb9fb97b8f8c9d47fe129f8b55db93edc01aacf6ce"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchingEngine::handle_mark_dirty_time_window (cognitive 34): BatchingEngine::handle_mark_dirty_time_window has cognitive complexity 34 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 8 (17 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/flow/src/batching_mode/engine.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdb3c3c28502cd1ab442f01c0d1340d990c63150ac12851d95abae237a1babff"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::pipeline::run_custom_pipeline (cognitive 34): servers::pipeline::run_custom_pipeline has cognitive complexity 34 (threshold 15). Drivers by points: loops 7 (16 pts), if/else 3 (9 pts), match/switch 4 (9 pts) (nesting depth added 20). 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/servers/src/pipeline.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"2724f932a640df40d9f8d14ac98261b69451ba92b573789f76acb63f802a0719"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchingTask::start_scheduled_loop (cognitive 33): BatchingTask::start_scheduled_loop has cognitive complexity 33 (threshold 15). Drivers by points: if/else 6 (15 pts), match/switch 7 (15 pts), loops 2 (3 pts) (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/flow/src/batching_mode/task.rs"},"region":{"startLine":1620}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ed0d5fb0e92bc4fe7b4c31756d34e51ea170775950e24de38417b61eb58218"}},{"ruleId":"D2","level":"warning","message":{"text":"Instance::ingest_trace_spans (cognitive 33): Instance::ingest_trace_spans has cognitive complexity 33 (threshold 15). Drivers by points: if/else 12 (18 pts), loops 3 (7 pts), match/switch 3 (6 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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":871}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d387ebb0a37929cbc4a54161abd0c99a42a3ede2d32da243f193c8f0d4ef22e"}},{"ruleId":"D2","level":"warning","message":{"text":"sql::statements::insert::sql_exprs_to_values (cognitive 33): sql::statements::insert::sql_exprs_to_values has cognitive complexity 33 (threshold 15). Drivers by points: if/else 8 (22 pts), match/switch 2 (8 pts), loops 2 (3 pts) (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":"src/sql/src/statements/insert.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf832916cbe04d56f31eaebe0080902fd0baca6fb44fbc940a9060061d449893"}},{"ruleId":"D2","level":"warning","message":{"text":"EntityGraphProviderImpl::enumerate (cognitive 32): EntityGraphProviderImpl::enumerate has cognitive complexity 32 (threshold 15). Drivers by points: if/else 10 (24 pts), boolean chains 4, loops 2 (3 pts), match/switch 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/frontend/src/instance/entity_graph.rs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"88de4929c47832bcacac83888ddfcb5ddb62af915ec517c12f329cccaea239b3"}},{"ruleId":"D2","level":"warning","message":{"text":"SeriesDivideStream::poll_next (cognitive 32): SeriesDivideStream::poll_next has cognitive complexity 32 (threshold 15). Drivers by points: if/else 10 (25 pts), match/switch 2 (6 pts), 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/promql/src/extension_plan/series_divide.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b7b8fc43b5c2c312f825ba23018493e66e407314e74e5b78c71028a898291de"}},{"ruleId":"D2","level":"warning","message":{"text":"PromPlanner::prom_aggr_expr_to_plan (cognitive 32): PromPlanner::prom_aggr_expr_to_plan has cognitive complexity 32 (threshold 15). Drivers by points: if/else 11 (19 pts), match/switch 4 (10 pts), boolean chains 3 (nesting depth added 14). 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/query/src/promql/planner.rs"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7703e6b73b878c7c31a9ae429d4788593bdd0b43c5ca7fc6e1bc09000decb89"}},{"ruleId":"D2","level":"warning","message":{"text":"query::dist_plan::analyzer::utils::get_alias_layer_from_node (cognitive 32): query::dist_plan::analyzer::utils::get_alias_layer_from_node has cognitive complexity 32 (threshold 15). Drivers by points: loops 5 (18 pts), if/else 7 (13 pts), match/switch 1 (nesting depth added 19). 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/query/src/dist_plan/analyzer/utils.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"24983c1301f7cb445575a37f7cbbf89214bbdedfed7d86a764eeefad6c5f8f14"}},{"ruleId":"D2","level":"warning","message":{"text":"update-compat-versions.published_release_tags (cognitive 32): update-compat-versions.published_release_tags has cognitive complexity 32 (threshold 15). Drivers by points: if/else 9 (25 pts), loops 2 (3 pts), boolean chains 2, error handling 1 (2 pts) (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":".github/scripts/update-compat-versions.py"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0842751ded75a856839de1d12af995c6896d106ee853dab20ada2c44b0b2867"}},{"ruleId":"D2","level":"warning","message":{"text":"ColumnDataTypeWrapper::try_from (cognitive 31): ColumnDataTypeWrapper::try_from has cognitive complexity 31 (threshold 15). Drivers by points: if/else 10 (17 pts), match/switch 6 (11 pts), loops 1 (3 pts) (nesting depth added 14). 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/api/src/helper.rs"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"209336e69bca7b1663fbabd5549ed1b25f91e20769536742a85447b6787ff574"}},{"ruleId":"D2","level":"warning","message":{"text":"TwcsPicker::build_output (cognitive 31): TwcsPicker::build_output has cognitive complexity 31 (threshold 15). Drivers by points: if/else 5 (20 pts), loops 4 (9 pts), boolean chains 2 (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/mito2/src/compaction/twcs.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f48d982136f670798dcf3250b878c5de83f053fe938c49b96b9f46f10fa7503"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::sst::parquet::prefilter::build_reader_filter_plan (cognitive 31): mito2::sst::parquet::prefilter::build_reader_filter_plan has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (26 pts), boolean chains 3, loops 1, match/switch 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/mito2/src/sst/parquet/prefilter.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c0cde1a725ca73a6d52e9602241ad2961ccf8a5a3650626999a057222ac78e5"}},{"ruleId":"D2","level":"warning","message":{"text":"partition::subtask::create_subtasks (cognitive 31): partition::subtask::create_subtasks has cognitive complexity 31 (threshold 15). Drivers by points: loops 6 (14 pts), if/else 4 (13 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 19). 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/partition/src/subtask.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e9229b2a2908e0a07ded92f5c9d6a32fcac1aff4cc8868f91b81111e4f35eea"}},{"ruleId":"D2","level":"warning","message":{"text":"agent-observability-summary.benchmark (cognitive 31): agent-observability-summary.benchmark has cognitive complexity 31 (threshold 15). Drivers by points: ternaries 5 (11 pts), loops 6 (10 pts), if/else 3 (7 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":".github/scripts/agent-observability-summary.py"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"e75fe13a8f0bc9535fd9aed96601940b20bab5abe1d41d2c929bfc2b498b5c22"}},{"ruleId":"D2","level":"warning","message":{"text":"Manifest::validate_layout (cognitive 30): Manifest::validate_layout has cognitive complexity 30 (threshold 15). Drivers by points: if/else 7 (19 pts), boolean chains 5, loops 2 (5 pts), match/switch 1 (nesting depth added 15). 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/src/data/export_v2/manifest.rs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"76ea17900705ca2431a3ca73af5000e422552cb1aea65dd0f34f7e6547c3360f"}},{"ruleId":"D2","level":"warning","message":{"text":"common_telemetry::metric::convert_metric_to_write_request (cognitive 30): common_telemetry::metric::convert_metric_to_write_request has cognitive complexity 30 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 4 (11 pts), match/switch 1 (3 pts), boolean chains 1 (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/common/telemetry/src/metric.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"5713de3c77a1507d92397f129794dadc5bdbcd7897c7ab4aa3ada0af9764d7ca"}},{"ruleId":"D2","level":"warning","message":{"text":"datatypes::vectors::json::builder::count_dynamic_paths (cognitive 30): datatypes::vectors::json::builder::count_dynamic_paths has cognitive complexity 30 (threshold 15). Drivers by points: if/else 11 (20 pts), boolean chains 4, match/switch 1 (4 pts), loops 1 (2 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/datatypes/src/vectors/json/builder.rs"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"45f3574a04d5f83aae95b45d32a3b3ea1d55cb41af76974864ddaac15c41defc"}},{"ruleId":"D2","level":"warning","message":{"text":"Metasrv::try_start_after_gc_check (cognitive 30): Metasrv::try_start_after_gc_check has cognitive complexity 30 (threshold 15). Drivers by points: if/else 11 (17 pts), match/switch 2 (7 pts), loops 3 (6 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/meta-srv/src/metasrv.rs"},"region":{"startLine":617}}}],"partialFingerprints":{"codehealthFindingId/v1":"7943736a07934b830204eaee9b784a34efea32ccbefcbf7cdb8fa6c5e0f8b64d"}},{"ruleId":"D2","level":"warning","message":{"text":"Pattern::from_str (cognitive 30): Pattern::from_str has cognitive complexity 30 (threshold 15). Drivers by points: if/else 10 (23 pts), loops 2 (4 pts), match/switch 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/pipeline/src/etl/processor/dissect.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"769b4cff7cd28f9d1a58e3c10395be295e1c3d02c52ec466febeb6919a49b873"}},{"ruleId":"D2","level":"warning","message":{"text":"HistogramFoldStream::evaluate_row (cognitive 30): HistogramFoldStream::evaluate_row has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (21 pts), boolean chains 4, loops 1 (3 pts), match/switch 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":"src/promql/src/extension_plan/histogram_fold.rs"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c23c2cd9f035a1e0d55a6a795dc4aa81f5530471390108b58e60d2b0797c929"}},{"ruleId":"D2","level":"warning","message":{"text":"ParserContext::parse_one_impl (cognitive 29): ParserContext::parse_one_impl has cognitive complexity 29 (threshold 15). Drivers by points: if/else 8 (22 pts), match/switch 4 (7 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/common/function/src/scalars/matches.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc3711d036c502ea305f158536b939fc16eef17e96a8ee74dae03f2f6546b528"}},{"ruleId":"D2","level":"warning","message":{"text":"CountdownTask::run (cognitive 29): CountdownTask::run has cognitive complexity 29 (threshold 15). Drivers by points: if/else 7 (22 pts), match/switch 2 (5 pts), boolean chains 1, loops 1 (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/datanode/src/alive_keeper.rs"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e7c2538c8564bc26164856cdcc7eb8f8849036966a68b72b9c037f4f6deee81"}},{"ruleId":"D2","level":"warning","message":{"text":"TraceColumnRequestSchema::incompatible_schema_batches (cognitive 29): TraceColumnRequestSchema::incompatible_schema_batches has cognitive complexity 29 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 6 (9 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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"639cae06bb49b8db12049682bf99e5ea35eed7336c5a455d632d221716520d65"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionWorkerLoop::handle_alter_region_options_fast (cognitive 29): RegionWorkerLoop::handle_alter_region_options_fast has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (26 pts), match/switch 1 (2 pts), 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/mito2/src/worker/handle_alter.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a5bdff68cba0a0c86d040415951d7bde80f1f57fb4aa48e5cdf7d8b8e9b9cea"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionWorkerLoop::process_write_requests (cognitive 29): RegionWorkerLoop::process_write_requests has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (24 pts), match/switch 1 (3 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":"src/mito2/src/worker/handle_write.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"49d2ea7b6775f87b5c350ae008dd189decc2c6506123f583394b83bcc353a10b"}},{"ruleId":"D2","level":"warning","message":{"text":"operator::statement::export_logical_tables::write_tables (cognitive 29): operator::statement::export_logical_tables::write_tables has cognitive complexity 29 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 5 (11 pts), match/switch 1 (2 pts), boolean chains 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":"src/operator/src/statement/export_logical_tables.rs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b64ee322c0ea27a9bd2355dee43e43cf6ce8bd4696ba32cb2feb8a1e3188fd1"}},{"ruleId":"D2","level":"warning","message":{"text":"PartitionChecker::run (cognitive 29): PartitionChecker::run has cognitive complexity 29 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 8 (14 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/partition/src/checker.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e78ef9a24384b98655bd62cbc51f8e2184120bc5ded1259faaf25cfb5ab806a"}},{"ruleId":"D2","level":"warning","message":{"text":"DissectProcessor::process_pattern (cognitive 29): DissectProcessor::process_pattern has cognitive complexity 29 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 4 (10 pts), match/switch 2 (4 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":"src/pipeline/src/etl/processor/dissect.rs"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"afa8f691060ece317744081c7d9238788a656c0c62c7076165d01d278b59546a"}},{"ruleId":"D2","level":"warning","message":{"text":"GreptimeTransformer::transform_mut_with_schema (cognitive 29): GreptimeTransformer::transform_mut_with_schema has cognitive complexity 29 (threshold 15). Drivers by points: if/else 4 (12 pts), match/switch 3 (12 pts), loops 2 (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/pipeline/src/etl/transform/transformer/greptime.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd7cb9595868982af5ac5ae1941f6922399c47de35a14b812b0c3b22eee6e454"}},{"ruleId":"D2","level":"warning","message":{"text":"promql::functions::native_histogram::combined_range_float (cognitive 29): promql::functions::native_histogram::combined_range_float has cognitive complexity 29 (threshold 15). Drivers by points: if/else 9 (23 pts), loops 2 (4 pts), match/switch 1 (2 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/promql/src/functions/native_histogram.rs"},"region":{"startLine":2101}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb85c218f2be9516038107b059445871b7919a18b3372ae1d29ed798f358122c"}},{"ruleId":"D2","level":"warning","message":{"text":"Categorizer::check_plan (cognitive 29): Categorizer::check_plan has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (20 pts), boolean chains 4, loops 2 (4 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/query/src/dist_plan/commutativity.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0acce809ac0aa7f4a0479b38fe001aff74432e42dc3f483edff309f935be5dc"}},{"ruleId":"D2","level":"warning","message":{"text":"FlightRecordBatchStream::verbose_metrics_stream (cognitive 29): FlightRecordBatchStream::verbose_metrics_stream has cognitive complexity 29 (threshold 15). Drivers by points: if/else 8 (21 pts), match/switch 2 (5 pts), boolean chains 2, 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":"src/servers/src/grpc/flight/stream.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"28dcbb123a565b195940841d9f7e9b85f0a41b701699c3e2dedf6e9672089746"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::otlp::metrics::encode_histogram (cognitive 29): servers::otlp::metrics::encode_histogram has cognitive complexity 29 (threshold 15). Drivers by points: if/else 12 (22 pts), loops 3 (6 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/servers/src/otlp/metrics.rs"},"region":{"startLine":1216}}}],"partialFingerprints":{"codehealthFindingId/v1":"e07569441af01d9dc610027d84643c811f6b474c88322556d0abafef4bdceeee"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::mysql::writer::write_output (cognitive 29): servers::mysql::writer::write_output has cognitive complexity 29 (threshold 15). Drivers by points: match/switch 6 (18 pts), if/else 2 (6 pts), loops 3 (5 pts) (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":"src/servers/src/mysql/writer.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"019f66505a09a993a5a04b1a51b99f53b8a111adc29fdf27e5d92e1bbda10978"}},{"ruleId":"D2","level":"warning","message":{"text":"DirtyTimeWindows::gen_filter_exprs (cognitive 28): DirtyTimeWindows::gen_filter_exprs has cognitive complexity 28 (threshold 15). Drivers by points: if/else 16 (26 pts), loops 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":"src/flow/src/batching_mode/state.rs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"92acf31738dabf7df9b3fa9c7a1777b3e6b213293ab2ce8dd12ec6cffff9eb94"}},{"ruleId":"D2","level":"warning","message":{"text":"PageRangeCache::lookup (cognitive 28): PageRangeCache::lookup has cognitive complexity 28 (threshold 15). Drivers by points: if/else 9 (21 pts), loops 4 (7 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/mito2/src/cache.rs"},"region":{"startLine":1848}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d7eb257568888c9fa5bf5e76e52c7a4b1e4f50af821f1f79b5f456b03eb282f"}},{"ruleId":"D2","level":"warning","message":{"text":"ManifestContext::set_role (cognitive 28): ManifestContext::set_role has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (21 pts), match/switch 4 (7 pts) (nesting depth added 14). 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/mito2/src/region.rs"},"region":{"startLine":1560}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f92a0c71e45e9c942a440528951bd18bf09eaa6c954b2d68e993580795ace65"}},{"ruleId":"D2","level":"warning","message":{"text":"InvertedIndexer::do_update_flat (cognitive 28): InvertedIndexer::do_update_flat has cognitive complexity 28 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 4 (9 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":"src/mito2/src/sst/index/inverted_index/creator.rs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4c587da55d0ac2b02166e3d01dfc756dcd7173316eb5d817c398633c374255f"}},{"ruleId":"D2","level":"warning","message":{"text":"ParquetReaderBuilder::build_reader_input_inner (cognitive 28): ParquetReaderBuilder::build_reader_input_inner has cognitive complexity 28 (threshold 15). Drivers by points: if/else 20 (21 pts), boolean chains 7 (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/mito2/src/sst/parquet/reader.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"b93250055bc362f413d95f6f7044d1f38cbc5d802477d89135e4ed514336d62e"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::compaction::run::find_sorted_runs (cognitive 28): mito2::compaction::run::find_sorted_runs has cognitive complexity 28 (threshold 15). Drivers by points: if/else 7 (21 pts), loops 3 (7 pts) (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/mito2/src/compaction/run.rs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"88e32adfda6e78323a7d105ca901ba693246a063565b9e04c90275a085a1563a"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::prom_remote_write::v2::decode_series_leaves (cognitive 28): servers::prom_remote_write::v2::decode_series_leaves has cognitive complexity 28 (threshold 15). Drivers by points: if/else 8 (25 pts), match/switch 1 (2 pts), loops 1 (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/servers/src/prom_remote_write/v2.rs"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"461766e84bb0bbb98fdf8cc0405da9f32e4868a802aaf033462a485a0be76e74"}},{"ruleId":"D2","level":"warning","message":{"text":"ExportCreate::run (cognitive 27): ExportCreate::run has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (23 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 13). 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/src/data/export_v2/command.rs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fe001eb068d43e45ff9dbd538936728348eb1f08bca95ea6c7c3785bfb4672d"}},{"ruleId":"D2","level":"warning","message":{"text":"HeartbeatTask::start (cognitive 27): HeartbeatTask::start has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (16 pts), match/switch 3 (10 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/datanode/src/heartbeat.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bb0017c1272a092a59f8697fce506906bdc77b087aec77b86570f9c43f180ec"}},{"ruleId":"D2","level":"warning","message":{"text":"ManifestObjectStore::delete_until (cognitive 27): ManifestObjectStore::delete_until has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14 (21 pts), loops 3 (4 pts), boolean chains 1, 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/mito2/src/manifest/storage.rs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffb7c165329cbd5e681412b07e1b34df51cb4f967a5bb7775222fb12ae35b552"}},{"ruleId":"D2","level":"warning","message":{"text":"InvertedIndexer::do_update (cognitive 27): InvertedIndexer::do_update has cognitive complexity 27 (threshold 15). Drivers by points: if/else 6 (21 pts), loops 2 (4 pts), match/switch 1 (2 pts) (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/mito2/src/sst/index/inverted_index/creator.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4c30d91f883a6eda8ede3f5a4d73701e20a59c89d112b0a85927c2658e8f588"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::compaction::run::find_overlapping_items (cognitive 27): mito2::compaction::run::find_overlapping_items has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (21 pts), loops 3 (5 pts), 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":"src/mito2/src/compaction/run.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfa4828806f5bc8ec1c3c7d0aa5eaf75c3be9638843c6b8a269a3f8ac7485dca"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::read::seq_scan::build_flat_sources (cognitive 27): mito2::read::seq_scan::build_flat_sources has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14 (20 pts), loops 4 (6 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/mito2/src/read/seq_scan.rs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bfb543dad6d14c9a3e06f160faee6a8c4bb00a69563316698388f0e2dc9636b"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementExecutor::copy_table_from (cognitive 27): StatementExecutor::copy_table_from has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (22 pts), loops 3 (4 pts), 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":"src/operator/src/statement/copy_table_from.rs"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebe91e1404f9c2dc9256802fc2c2ddddcd81dce139ed9447c3336d100065ca61"}},{"ruleId":"D2","level":"warning","message":{"text":"PromPlanner::matchers_to_expr (cognitive 27): PromPlanner::matchers_to_expr has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (21 pts), boolean chains 3, match/switch 1 (2 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":"src/query/src/promql/planner.rs"},"region":{"startLine":2524}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaf8d71db4adb08f6062820d8977c6296d158f5d38819cb9dadc35d058ef76f7"}},{"ruleId":"D2","level":"warning","message":{"text":"PutRecordBatchRequestStream::poll_next (cognitive 27): PutRecordBatchRequestStream::poll_next has cognitive complexity 27 (threshold 15). Drivers by points: match/switch 6 (21 pts), if/else 2 (5 pts), loops 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":"src/servers/src/grpc/flight.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d694da0087a243831d9f8fe99820994d683d7195f4b6f43cbbe994792d1b1f6"}},{"ruleId":"D2","level":"warning","message":{"text":"MysqlResultWriter::write_recordbatch (cognitive 27): MysqlResultWriter::write_recordbatch has cognitive complexity 27 (threshold 15). Drivers by points: if/else 5 (15 pts), match/switch 2 (7 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/servers/src/mysql/writer.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dfbeaafa773639169b5e2d3b34bb9862e906ce2c31764e67a6c1e7ba02b9672"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::http::handler::from_output (cognitive 27): servers::http::handler::from_output has cognitive complexity 27 (threshold 15). Drivers by points: match/switch 5 (18 pts), if/else 2 (8 pts), loops 1 (nesting depth added 19). 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/servers/src/http/handler.rs"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5b3b8f2929e63bf2b2c17e078f670bc491e28c8f5c0bd3e8f184607e9863038"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::http::prometheus::label_values_query (cognitive 27): servers::http::prometheus::label_values_query has cognitive complexity 27 (threshold 15). Drivers by points: if/else 16 (24 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/servers/src/http/prometheus.rs"},"region":{"startLine":1683}}}],"partialFingerprints":{"codehealthFindingId/v1":"b91475993f628857d581b51480c40e3721209b7eb83633c7633ab3bee1df2ea8"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::batcher::logical_table::pending_worker::start_worker (cognitive 27): servers::batcher::logical_table::pending_worker::start_worker has cognitive complexity 27 (threshold 15). Drivers by points: if/else 5 (17 pts), loops 2 (5 pts), match/switch 2 (5 pts) (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/servers/src/batcher/logical_table/pending_worker.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6ca73d5f42c8127b18f12ff316f3444b9d25bc8f2c91cb4dd7b9c8ec003d0fa"}},{"ruleId":"D2","level":"warning","message":{"text":"ParserContext::parse_create_flow (cognitive 27): ParserContext::parse_create_flow has cognitive complexity 27 (threshold 15). Drivers by points: if/else 18 (22 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 5). 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/sql/src/parsers/create_parser.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"bee2e15c576684d29ee652fd299963a5b8ed54487308cd42e37e747ca7d072c2"}},{"ruleId":"D2","level":"warning","message":{"text":"AlterTrigger::fmt (cognitive 27): AlterTrigger::fmt has cognitive complexity 27 (threshold 15). Drivers by points: loops 4 (13 pts), if/else 6 (8 pts), match/switch 3 (6 pts) (nesting depth added 14). 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/sql/src/statements/alter/trigger.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"b66b5da40ec6cd611c67b6b42116eb50b69d192e1ba10ab2c3135ad1b0ac6d1e"}},{"ruleId":"D2","level":"warning","message":{"text":"table::requests::validate_and_normalize_annotation (cognitive 27): table::requests::validate_and_normalize_annotation has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (22 pts), loops 1 (3 pts), boolean chains 1, match/switch 1 (nesting depth added 15). 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/table/src/requests.rs"},"region":{"startLine":562}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cd5f8a28abf3f5bdfe18a9bb90231015ed9ba78f3708ad3071e21672e826e0c"}},{"ruleId":"D2","level":"warning","message":{"text":"cli::data::export_v2::coordinator::export_data_concurrent (cognitive 26): cli::data::export_v2::coordinator::export_data_concurrent has cognitive complexity 26 (threshold 15). Drivers by points: if/else 4 (10 pts), match/switch 4 (8 pts), loops 3 (7 pts), 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":"src/cli/src/data/export_v2/coordinator.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e86320bd5e8d059a74eaf2b2b7df2db1bddc57cd51aed55244128b5a9008557"}},{"ruleId":"D2","level":"warning","message":{"text":"cmd::bin::query_regression_runner::measure::run_target (cognitive 26): cmd::bin::query_regression_runner::measure::run_target has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 5 (9 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/cmd/src/bin/query_regression_runner/measure.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff5887c6f76961d5e5c9035133e0c285fb1baf139a6f9120ccf3fc940528e144"}},{"ruleId":"D2","level":"warning","message":{"text":"PackIndex::validate (cognitive 26): PackIndex::validate has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 5, loops 4 (5 pts), match/switch 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/common/datasource/src/packed_snapshot.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"69cfc09946a859a85a63be3cf27a995fdf90b27b84a0d5eca019ac8b0da9c465"}},{"ruleId":"D2","level":"warning","message":{"text":"metric_engine::batch_modifier::compute_tsid_array (cognitive 26): metric_engine::batch_modifier::compute_tsid_array has cognitive complexity 26 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 5 (11 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/metric-engine/src/batch_modifier.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c0f10392b936e40440f4f8b9c2543e016996d95a5656823d378148460f0e880"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionWorkerLoop::process_bulk_requests (cognitive 26): RegionWorkerLoop::process_bulk_requests has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (21 pts), match/switch 1 (3 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/mito2/src/worker/handle_write.rs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7be15e4780daba63cac65fc43b4ad112be43313de9a3295a3571aba8e934d50"}},{"ruleId":"D2","level":"warning","message":{"text":"operator::statement::copy_table_to::stream_to_managed_parquet_with_packed (cognitive 26): operator::statement::copy_table_to::stream_to_managed_parquet_with_packed has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 3, loops 2 (3 pts), match/switch 1 (2 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/operator/src/statement/copy_table_to.rs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbee2cb9b8febb0bfc6370ec818b6eda25a9d91a9bd0a22f04792b73d5c951e5"}},{"ruleId":"D2","level":"warning","message":{"text":"PromPlanner::agg_modifier_to_col (cognitive 26): PromPlanner::agg_modifier_to_col has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (18 pts), loops 3 (6 pts), boolean chains 1, match/switch 1 (nesting depth added 14). 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/query/src/promql/planner.rs"},"region":{"startLine":2419}}}],"partialFingerprints":{"codehealthFindingId/v1":"f478c70ca4419906aa1f3cb700d1fd5984c043377c501b3268955efe83ad79c2"}},{"ruleId":"D2","level":"warning","message":{"text":"query::window_sort::compute_all_working_ranges (cognitive 26): query::window_sort::compute_all_working_ranges has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (22 pts), match/switch 1 (2 pts), boolean chains 1, 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":"src/query/src/window_sort.rs"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3821bc9ad74a146e416f7ec9b2c474af0507d6ce464121bb9fd1b858112e887"}},{"ruleId":"D2","level":"warning","message":{"text":"TableMeta::set_table_options (cognitive 26): TableMeta::set_table_options has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (23 pts), match/switch 1 (2 pts), 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/table/src/metadata.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"65b3f50f00e73193c02390f41f986ed7f1a56fb17199b5d2ccc61051a838ae10"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchingTask::execute_plan_unlocked (cognitive 25): BatchingTask::execute_plan_unlocked has cognitive complexity 25 (threshold 15). Drivers by points: if/else 15 (18 pts), match/switch 3 (5 pts), boolean chains 2 (nesting depth added 5). 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/flow/src/batching_mode/task.rs"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff7c3ee7da9d7e46be6b69f6e8e27a59a9db3573b35edd5e831659f607ab862e"}},{"ruleId":"D2","level":"warning","message":{"text":"Instance::prevalidate_trace_v1_fixed_columns (cognitive 25): Instance::prevalidate_trace_v1_fixed_columns has cognitive complexity 25 (threshold 15). Drivers by points: if/else 5 (18 pts), loops 3 (6 pts), boolean chains 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":"src/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":1568}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b6739a6c4c8d61c87aa2dd7d9b101687c2fca14dd646250e78099e6687ec8a0"}},{"ruleId":"D2","level":"warning","message":{"text":"LocalGcWorker::do_region_gc (cognitive 25): LocalGcWorker::do_region_gc has cognitive complexity 25 (threshold 15). Drivers by points: if/else 18 (20 pts), boolean chains 5 (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/mito2/src/gc.rs"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d32e46d966de221836f2e3596e000c32851945373862c93253d6adc3de99096"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::series_index::maintenance::build_index_version (cognitive 25): mito2::series_index::maintenance::build_index_version has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 4 (6 pts), boolean chains 3, 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/mito2/src/series_index/maintenance.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed583b1c9b20f2da6ee64c9cbcd5b0dbba9e931e2ad98c7dd0b1543d3ce27bca"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::sst::parquet::format::column_values_by_type (cognitive 25): mito2::sst::parquet::format::column_values_by_type has cognitive complexity 25 (threshold 15). Drivers by points: if/else 16 (24 pts), match/switch 1 (nesting depth added 8). 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/mito2/src/sst/parquet/format.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"b09205a1a3c1683e85b25ece47212062b1967dafa161673ad397e312002f5246"}},{"ruleId":"D2","level":"warning","message":{"text":"Inserter::handle_bulk_insert (cognitive 25): Inserter::handle_bulk_insert has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (19 pts), loops 5 (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/operator/src/bulk_insert.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb4bb506c5c06024a53bd4ac6bca6f3265e058e99ddb057da7c3794c9ff6f08d"}},{"ruleId":"D2","level":"warning","message":{"text":"promql::functions::native_histogram::native_idelta (cognitive 25): promql::functions::native_histogram::native_idelta has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (22 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/promql/src/functions/native_histogram.rs"},"region":{"startLine":2744}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8f62e57b3a61363b197f6d3242541707adf77d81aaa7ed84975de27adafc5d2"}},{"ruleId":"D2","level":"warning","message":{"text":"RangePlanRewriter::get_index_by (cognitive 25): RangePlanRewriter::get_index_by has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (18 pts), boolean chains 3, match/switch 1 (3 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":"src/query/src/range_select/plan_rewrite.rs"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"58c75d67d5edc2806b1a8d17d2c0d0b665efc4d385079c7febcc2a78255185f1"}},{"ruleId":"D2","level":"warning","message":{"text":"PostgresServerHandlerInner::authenticate_password_message (cognitive 25): PostgresServerHandlerInner::authenticate_password_message has cognitive complexity 25 (threshold 15). Drivers by points: if/else 11 (22 pts), match/switch 2 (3 pts) (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":"src/servers/src/postgres/auth_handler.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"236da20722c7314b60622d789f002659b179fd4187737585a7aac0e64b4e239d"}},{"ruleId":"D2","level":"warning","message":{"text":"query-regression-run.run_direct_case (cognitive 25): query-regression-run.run_direct_case has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 7 (9 pts), ternaries 1 (3 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":".github/scripts/query-regression-run.py"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"d31e2f42527fa99b5bb22c80cec305dc30f298bdc398fd03e36a363b9c5d0011"}},{"ruleId":"D2","level":"warning","message":{"text":"Import::run (cognitive 24): Import::run has cognitive complexity 24 (threshold 15). Drivers by points: if/else 14 (16 pts), loops 2 (5 pts), boolean chains 2, match/switch 1 (nesting depth added 5). 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/src/data/import_v2/command.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb4bc6d7e22531059f13f33bc1a24dc132a25741c3e326d4e428433a0f39a5ed"}},{"ruleId":"D2","level":"warning","message":{"text":"cmd::datanode::parquet_rewrite::build_writer_properties (cognitive 24): cmd::datanode::parquet_rewrite::build_writer_properties has cognitive complexity 24 (threshold 15). Drivers by points: if/else 14 (21 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":"src/cmd/src/datanode/parquet_rewrite.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"df1d6b980f55369c020af2cf5e520fa6766a80d0265b3d7f3b288a43a71a8fa1"}},{"ruleId":"D2","level":"warning","message":{"text":"MetasrvBuilder::build (cognitive 24): MetasrvBuilder::build has cognitive complexity 24 (threshold 15). Drivers by points: if/else 18 (19 pts), match/switch 3, boolean chains 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":"src/meta-srv/src/metasrv/builder.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"630467d5ecb3d6f8c87b31554eef0970ca5377b736c1fa89ff1690de68d2cc84"}},{"ruleId":"D2","level":"warning","message":{"text":"AccessLayer::write_sst (cognitive 24): AccessLayer::write_sst has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (13 pts), match/switch 3 (8 pts), loops 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":"src/mito2/src/access_layer.rs"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fdcf1d5c7f0db856939583d5e9220c9d2d37253731c913359ef7b7319bb69df"}},{"ruleId":"D2","level":"warning","message":{"text":"ManifestCache::remove_empty_dirs_recursive_sync (cognitive 24): ManifestCache::remove_empty_dirs_recursive_sync has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (21 pts), boolean chains 1, loops 1, match/switch 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":"src/mito2/src/cache/manifest_cache.rs"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a0190b6384d3eb47bcafc9e5bd073073f2b70252590ab7dc1cfd8e4b9ae4bc3"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::flush::memtable_flat_sources (cognitive 24): mito2::flush::memtable_flat_sources has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (20 pts), boolean chains 2, loops 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/mito2/src/flush.rs"},"region":{"startLine":910}}}],"partialFingerprints":{"codehealthFindingId/v1":"7843abbe2c56ef1003bb3e2435226ce2a68059af39663b45936ab4d2cc4efecd"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementExecutor::determine_flow_type (cognitive 24): StatementExecutor::determine_flow_type has cognitive complexity 24 (threshold 15). Drivers by points: if/else 14 (20 pts), match/switch 2, boolean chains 1, 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/operator/src/statement/ddl.rs"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"935dcbfc3da37711b4508291c55ca95056500eadb0c1d5bf237e2e8b1988af35"}},{"ruleId":"D2","level":"warning","message":{"text":"PartSortStream::poll_next_inner (cognitive 24): PartSortStream::poll_next_inner has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (20 pts), match/switch 1 (2 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/query/src/part_sort.rs"},"region":{"startLine":1168}}}],"partialFingerprints":{"codehealthFindingId/v1":"91db329f1cf33e77e0f8838383f0934fd663603b9dcd121520d3fe4fd3cc569f"}},{"ruleId":"D2","level":"warning","message":{"text":"agent-observability-summary.lifecycle (cognitive 24): agent-observability-summary.lifecycle has cognitive complexity 24 (threshold 15). Drivers by points: ternaries 6 (13 pts), loops 4 (5 pts), boolean chains 4, if/else 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":".github/scripts/agent-observability-summary.py"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"59e050a7b052b5919b7492bb3c463c96855206bdf9c3db122a2f3edced86a0b7"}},{"ruleId":"D2","level":"warning","message":{"text":"RepairPartitionColumnTool::do_work (cognitive 23): RepairPartitionColumnTool::do_work has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (20 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/cli/src/metadata/repair/partition_column.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"f04b5016af826328b971e96710e55a3c20ac1cbaba27de9ccecdd36133d5bb0f"}},{"ruleId":"D2","level":"warning","message":{"text":"cli::data::export_v2::command::build_verify_plan (cognitive 23): cli::data::export_v2::command::build_verify_plan has cognitive complexity 23 (threshold 15). Drivers by points: if/else 4 (11 pts), loops 3 (6 pts), match/switch 2 (6 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/cli/src/data/export_v2/command.rs"},"region":{"startLine":1312}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee18e7125150482b368c3294103bf76ba32d61f11e3c3e3e63abf8870ec3392c"}},{"ruleId":"D2","level":"warning","message":{"text":"common_config::file_watcher::resolve_one (cognitive 23): common_config::file_watcher::resolve_one has cognitive complexity 23 (threshold 15). Drivers by points: if/else 4 (13 pts), loops 2 (5 pts), match/switch 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/common/config/src/file_watcher.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2bd1d7fb957434573cc63a4d76fd77224c39cd3c3c25c1ab70289a5905ba88c"}},{"ruleId":"D2","level":"warning","message":{"text":"Ipv4ToCidr::invoke_with_args (cognitive 23): Ipv4ToCidr::invoke_with_args has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (16 pts), match/switch 2 (5 pts), boolean chains 1, 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":"src/common/function/src/scalars/ip/cidr.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"78513af7ee4e3be186ea6e813974b10f9d77e19272f0966f7733b5bdbd590cdf"}},{"ruleId":"D2","level":"warning","message":{"text":"RegexpExtractFunction::invoke_with_args (cognitive 23): RegexpExtractFunction::invoke_with_args has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (19 pts), boolean chains 2, loops 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/common/function/src/scalars/string/regexp_extract.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c592866707825402df86a19497bc37d6e3eac56a954ebf3543725d535c18e8e"}},{"ruleId":"D2","level":"warning","message":{"text":"KafkaLogStore::read (cognitive 23): KafkaLogStore::read has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (22 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":"src/log-store/src/kafka/log_store.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f33052eed263bc29f04546c45ea867a225ef88920f6896bbff5eafe1ca64748"}},{"ruleId":"D2","level":"warning","message":{"text":"CompactionScheduler::submit_prepared_compaction (cognitive 23): CompactionScheduler::submit_prepared_compaction has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (17 pts), match/switch 2 (4 pts), loops 1 (2 pts) (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":"src/mito2/src/compaction/scheduler/planning.rs"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"39925066b6eddb2d2a1530aae007142986813141a327ababc2ab56d6db4fac43"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionWorkerLoop::handle_write_requests (cognitive 23): RegionWorkerLoop::handle_write_requests has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (12 pts), boolean chains 4, loops 2 (4 pts), match/switch 1 (3 pts) (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/mito2/src/worker/handle_write.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc511fa56fcf8392cf64a1ed2814888732258d1f497b81f1b0653c2cae2ed29"}},{"ruleId":"D2","level":"warning","message":{"text":"operator::expr_helper::expr_to_create (cognitive 23): operator::expr_helper::expr_to_create has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (17 pts), match/switch 1 (3 pts), loops 2, 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/operator/src/expr_helper.rs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"d30fdb174e69e0db39f24198d6326e63c06c1c46db91238f30b29b3e6b9dfc50"}},{"ruleId":"D2","level":"warning","message":{"text":"partition::utils::split::is_empty_and_conjunction (cognitive 23): partition::utils::split::is_empty_and_conjunction has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (15 pts), match/switch 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/partition/src/utils/split.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"8132d485d2230b32330cf543ff4b51784003b345fbaaa5d34ed6a31ef0d9311c"}},{"ruleId":"D2","level":"warning","message":{"text":"partition::overlap::atomic_exprs_overlap (cognitive 23): partition::overlap::atomic_exprs_overlap has cognitive complexity 23 (threshold 15). Drivers by points: loops 5 (13 pts), boolean chains 5, if/else 1 (3 pts), match/switch 1 (2 pts) (nesting depth added 11). 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/partition/src/overlap.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"6733fb35f70c24dbaae4c797b40c58eebe3875b06f3fa7d9ab6c4370635ee998"}},{"ruleId":"D2","level":"warning","message":{"text":"promql::functions::native_histogram::select_mixed_range_lanes (cognitive 23): promql::functions::native_histogram::select_mixed_range_lanes has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 3, match/switch 2 (3 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":"src/promql/src/functions/native_histogram.rs"},"region":{"startLine":1937}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca417853a96c80b27af549cb8f1f14a2131a37b102a3a90d32b2daf8c51c237a"}},{"ruleId":"D2","level":"warning","message":{"text":"PlanRewriter::should_expand (cognitive 23): PlanRewriter::should_expand has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (17 pts), boolean chains 3, 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":"src/query/src/dist_plan/analyzer.rs"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbdb25688108c5ab6b7ac15ce5081ffef4068ddb196010c8bdf702ef0539701a"}},{"ruleId":"D2","level":"warning","message":{"text":"query::promql::planner::matching_filters::try_propagate (cognitive 23): query::promql::planner::matching_filters::try_propagate has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (10 pts), boolean chains 7, loops 2 (3 pts), 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":"src/query/src/promql/planner/matching_filters.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0b2f7fa74eb95e79f2bfbfe9af6621b19d88ba06f309f8278ed5b3e05bac3fa"}},{"ruleId":"D2","level":"warning","message":{"text":"MysqlInstanceShim::authenticate_with_database (cognitive 23): MysqlInstanceShim::authenticate_with_database has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (18 pts), match/switch 2 (5 pts) (nesting depth added 13). 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/servers/src/mysql/handler.rs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cad494ff99f5d7e64506719295734ec4734b329053d47dc61b85d4d81c71149"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::http::handler::sql_analyze_stream (cognitive 23): servers::http::handler::sql_analyze_stream has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (15 pts), match/switch 4 (7 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/servers/src/http/handler.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0220320ccc2027ab22fd6045b1fd2c46d9d21d83f12758facb86807499816ae"}},{"ruleId":"D2","level":"warning","message":{"text":"ExportCreateCommand::build (cognitive 22): ExportCreateCommand::build has cognitive complexity 22 (threshold 15). Drivers by points: if/else 16 (19 pts), boolean chains 3 (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/src/data/export_v2/command.rs"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa92385cee4e55384d1ecf47a7083276b48e3c5a16ed3df5bb956df4f764ae1"}},{"ruleId":"D2","level":"warning","message":{"text":"common_datasource::file_format::csv::tolerant_csv_stream_from_reader (cognitive 22): common_datasource::file_format::csv::tolerant_csv_stream_from_reader has cognitive complexity 22 (threshold 15). Drivers by points: if/else 4 (12 pts), match/switch 2 (6 pts), loops 2 (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":"src/common/datasource/src/file_format/csv.rs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"f448854882dbb4d5ec6e66d8923655293690b7757d36e2e20238f89c04597bc0"}},{"ruleId":"D2","level":"warning","message":{"text":"ParserContext::to_rpn (cognitive 22): ParserContext::to_rpn has cognitive complexity 22 (threshold 15). Drivers by points: if/else 3 (9 pts), loops 4 (8 pts), boolean chains 3, 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/common/function/src/scalars/matches.rs"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e88ae6246aff99f8e2a5a8a0f7768e7a973c608356c90f89adcadb296e074b8"}},{"ruleId":"D2","level":"warning","message":{"text":"StreamingEngine::handle_inserts_inner (cognitive 22): StreamingEngine::handle_inserts_inner has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (15 pts), match/switch 2 (3 pts), boolean chains 2, loops 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":"src/flow/src/adapter.rs"},"region":{"startLine":1052}}}],"partialFingerprints":{"codehealthFindingId/v1":"984327942017a3f78b96e5a769a34e6b3631814139b062a44ddc377881ad871a"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchingEngine::handle_inserts_inner (cognitive 22): BatchingEngine::handle_inserts_inner has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 4 (5 pts), match/switch 1 (2 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/flow/src/batching_mode/engine.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8bb128d3bda3280ed3da86c73c1b758a7620b80740def2c09cbbae2839a3c36"}},{"ruleId":"D2","level":"warning","message":{"text":"FindGroupByFinalName::f_up (cognitive 22): FindGroupByFinalName::f_up has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (16 pts), loops 2 (6 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/flow/src/batching_mode/utils.rs"},"region":{"startLine":1234}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0d99d690c10e9933c37941d13ee4916217d533e92cc7b663e086402be299c2d"}},{"ruleId":"D2","level":"warning","message":{"text":"flow::batching_mode::time_window::find_time_window_expr (cognitive 22): flow::batching_mode::time_window::find_time_window_expr has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (20 pts), loops 1 (2 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/flow/src/batching_mode/time_window.rs"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"f530271aba9de70c9c67a95b0b0dcafe62709b221485dcc21e85293a8d2aaa26"}},{"ruleId":"D2","level":"warning","message":{"text":"flow::batching_mode::table_creator::create_table_with_expr (cognitive 22): flow::batching_mode::table_creator::create_table_with_expr has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (17 pts), match/switch 2 (3 pts), boolean chains 1, 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/flow/src/batching_mode/table_creator.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a25839d662a71e934c5aad822f3901f586fa108fe3feea8529ed197f30a044b"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionSupervisor::handle_region_failures (cognitive 22): RegionSupervisor::handle_region_failures has cognitive complexity 22 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 5 (9 pts), match/switch 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/meta-srv/src/region/supervisor.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"d813e74357919ea000c5b48caa1e7dc424d9f43ede5f404ee829d1cbdf2b31f3"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionWorkerLoop::run (cognitive 22): RegionWorkerLoop::run has cognitive complexity 22 (threshold 15). Drivers by points: match/switch 5 (13 pts), if/else 3 (6 pts), loops 2 (3 pts) (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/mito2/src/worker.rs"},"region":{"startLine":1014}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cc565a647703c98263a1d4d965d19881407bd4bcd0a39ba084b1c67e959f5eb"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::read::scan_util::build_flat_file_range_scan_stream (cognitive 22): mito2::read::scan_util::build_flat_file_range_scan_stream has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (17 pts), loops 2 (3 pts), match/switch 1 (2 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/mito2/src/read/scan_util.rs"},"region":{"startLine":1518}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3742451b4e23ae3a4877b967ecef31cc975c10dc6b3bb779c45d533cc1e63f4"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::read::series_reader::scan_series_file_ranges (cognitive 22): mito2::read::series_reader::scan_series_file_ranges has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (19 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/mito2/src/read/series_reader.rs"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"6203573b9b12cd26ed19a1f09ba9dda8e5e774493d46fe18ebec038dbae4fc6e"}},{"ruleId":"D2","level":"warning","message":{"text":"operator::expr_helper::to_alter_table_expr (cognitive 22): operator::expr_helper::to_alter_table_expr has cognitive complexity 22 (threshold 15). Drivers by points: match/switch 7 (16 pts), if/else 3 (6 pts) (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/operator/src/expr_helper.rs"},"region":{"startLine":811}}}],"partialFingerprints":{"codehealthFindingId/v1":"4679ddcd5afa2862733b0f11ca147372860c17f1e1bdf3fc3699cabb14858269"}},{"ruleId":"D2","level":"warning","message":{"text":"HistogramFoldStream::finalize_safe_group (cognitive 22): HistogramFoldStream::finalize_safe_group has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (15 pts), loops 2 (4 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":"src/promql/src/extension_plan/histogram_fold.rs"},"region":{"startLine":1052}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e68a3c96dc8d6f7bc95c67cffc0c05686e8cf626a9fa34e7c48e40f50d15480"}},{"ruleId":"D2","level":"warning","message":{"text":"InstantManipulateStream::manipulate (cognitive 22): InstantManipulateStream::manipulate has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 4, loops 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":"src/promql/src/extension_plan/instant_manipulate.rs"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e72c8060574a6fb73821335a5c6a3ed8b6a762ca159edfb62af62bd516af467"}},{"ruleId":"D2","level":"warning","message":{"text":"promql::functions::native_histogram::native_histogram_range_float (cognitive 22): promql::functions::native_histogram::native_histogram_range_float has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (15 pts), match/switch 2 (5 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/promql/src/functions/native_histogram.rs"},"region":{"startLine":1191}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeaf13f9ce6bb3309c460ca3d15c3cb6089fa3dbd147b5625c62b5e175f317e9"}},{"ruleId":"D2","level":"warning","message":{"text":"RangePlanRewriter::rewrite_logical_plan (cognitive 22): RangePlanRewriter::rewrite_logical_plan has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (14 pts), match/switch 3 (7 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":"src/query/src/range_select/plan_rewrite.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e06a02fba87b81eb087a3e32441ac3372d90d895db39414255e23d2fabe4fa3"}},{"ruleId":"D2","level":"warning","message":{"text":"PostgresServerHandlerInner::on_startup (cognitive 22): PostgresServerHandlerInner::on_startup has cognitive complexity 22 (threshold 15). Drivers by points: match/switch 6 (14 pts), if/else 4 (7 pts), boolean chains 1 (nesting depth added 11). 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/servers/src/postgres/auth_handler.rs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2ce5dbb0c0615287203e82b7d0b47570be5d663549cec4e0c38d3ee23611488"}},{"ruleId":"D2","level":"warning","message":{"text":"PromWriteRequest::decode (cognitive 22): PromWriteRequest::decode has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 2 (4 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":"src/servers/src/prom_remote_write/decode.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f33352732e0535634a70470ab7226f085647b57ca231ea8baabdba141909772"}},{"ruleId":"D2","level":"warning","message":{"text":"build-ecs-image.main (cognitive 22): build-ecs-image.main has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (13 pts), error handling 2 (3 pts), loops 3, ternaries 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":".github/runner-scale-sets/query-regression/ecs-image/build-ecs-image.py"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"e478668f619083b9a34f258dc3a3c668d8e6a14965d4652da7926802f45ca410"}},{"ruleId":"D2","level":"warning","message":{"text":"StartCommand::merge_with_cli_options (cognitive 21): StartCommand::merge_with_cli_options has cognitive complexity 21 (threshold 15). Drivers by points: if/else 19 (21 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":"src/cmd/src/frontend.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"acaa4d5952c9915e5797057bfc0186f969f438b3d1eb0067caa162df4f981447"}},{"ruleId":"D2","level":"warning","message":{"text":"Ipv6NumToString::invoke_with_args (cognitive 21): Ipv6NumToString::invoke_with_args has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 2 (5 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":"src/common/function/src/scalars/ip/ipv6.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"83eca86915140e98659bfc2aacf89f6b98eea4b1f893068d97de5fed6a87f777"}},{"ruleId":"D2","level":"warning","message":{"text":"NativeHistogram::detect_reset (cognitive 21): NativeHistogram::detect_reset has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (15 pts), boolean chains 4, match/switch 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/common/query/src/native_histogram.rs"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"424f1fbf5830a79a782ccbf20e21802c6774ab36cd0995ecd0f84b0cc134d41f"}},{"ruleId":"D2","level":"warning","message":{"text":"common_telemetry::logging::init_global_logging (cognitive 21): common_telemetry::logging::init_global_logging has cognitive complexity 21 (threshold 15). Drivers by points: if/else 17 (20 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":"src/common/telemetry/src/logging.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"742e9ad38d184cbce162b6e2efdba297b52db9d4e6e56c94c3fd637c5ea5362d"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionServerInner::get_engine (cognitive 21): RegionServerInner::get_engine has cognitive complexity 21 (threshold 15). Drivers by points: match/switch 9 (21 pts) (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/datanode/src/region_server.rs"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b7dad9f68794433de11de8fa8eb02a5a6f17dfeb4d98f78e6a8bc2517dd6215"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionServerInner::handle_batch_open_requests_inner (cognitive 21): RegionServerInner::handle_batch_open_requests_inner has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 3 (5 pts), match/switch 2 (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/datanode/src/region_server.rs"},"region":{"startLine":1282}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fc4012b65b6112f35844cb5b1c0b3fa06359373061e8d3b17b6f8ce5482de67"}},{"ruleId":"D2","level":"warning","message":{"text":"ConcreteDataType::from (cognitive 21): ConcreteDataType::from has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (18 pts), match/switch 2 (3 pts) (nesting depth added 7). 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/api/src/helper.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"37aec09fa9f0db2d89c7c8ecddd9625e4324c0b267e85417cd15d4e7bba59d05"}},{"ruleId":"D2","level":"warning","message":{"text":"TimePartitions::find_partitions_by_time_range (cognitive 21): TimePartitions::find_partitions_by_time_range has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (14 pts), match/switch 2 (5 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/mito2/src/memtable/time_partition.rs"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f973239d41e1a7688be55ec7144a5f82ea8b68f873f46a0a85ceb34e9102b33"}},{"ruleId":"D2","level":"warning","message":{"text":"ScanRegion::build_read_col_ids (cognitive 21): ScanRegion::build_read_col_ids has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 3 (5 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/mito2/src/read/scan_region.rs"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecd2c2f2ba4a18b99d39f6ed123e8bdc205374798b85a4bed57a0b73acb1bd3a"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionLoadCacheTask::fill_cache (cognitive 21): RegionLoadCacheTask::fill_cache has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 3 (4 pts), match/switch 1 (2 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/mito2/src/region/opener.rs"},"region":{"startLine":1048}}}],"partialFingerprints":{"codehealthFindingId/v1":"fafcb6c93578e6b0638f43a37a2118d9665eef49f71a56ef320d1d368ad9e210"}},{"ruleId":"D2","level":"warning","message":{"text":"ParquetWriter::write_all_flat_inner (cognitive 21): ParquetWriter::write_all_flat_inner has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (11 pts), match/switch 3 (8 pts), boolean chains 1, 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":"src/mito2/src/sst/parquet/writer.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"25372a260a64742c61d7fac1ad7f18833bcfe4ad206f5abc4d8c9772183a667e"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::read::scan_region::exact_sequence_range (cognitive 21): mito2::read::scan_region::exact_sequence_range has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (11 pts), boolean chains 6, match/switch 2 (3 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/mito2/src/read/scan_region.rs"},"region":{"startLine":1868}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d33c0902ee0d586d855e1b692ef19812471ece55dce9aad04c1d552e26cacf0"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::read::scan_util::should_split_flat_batches_for_merge (cognitive 21): mito2::read::scan_util::should_split_flat_batches_for_merge has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 3, 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":"src/mito2/src/read/scan_util.rs"},"region":{"startLine":1210}}}],"partialFingerprints":{"codehealthFindingId/v1":"b62b1eeafee02a7e63848030ae020acff3c5a5299b424b94e899515f9fb86a2d"}},{"ruleId":"D2","level":"warning","message":{"text":"operator::statement::export_database::run_database_export_jobs (cognitive 21): operator::statement::export_database::run_database_export_jobs has cognitive complexity 21 (threshold 15). Drivers by points: if/else 4 (10 pts), match/switch 3 (5 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":"src/operator/src/statement/export_database.rs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dc8b65ebd2d9a33287dc79c25b1baf895c9cab13da7b70ff6e8660eb204b174"}},{"ruleId":"D2","level":"warning","message":{"text":"Pattern::check (cognitive 21): Pattern::check has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (15 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":"src/pipeline/src/etl/processor/dissect.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f2ac6072cf4a4ba9057d1d2d375fe311bd1ef7ad00a6cedd8b278d92c0a597"}},{"ruleId":"D2","level":"warning","message":{"text":"promql::extension_plan::local_offset (cognitive 21): promql::extension_plan::local_offset has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (15 pts), match/switch 2 (5 pts), 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/promql/src/extension_plan.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c9512a79133cce7c1fdf8f652687677546838f1c922a0695d8071fb798d072f"}},{"ruleId":"D2","level":"warning","message":{"text":"ScanHintRewriter::extract_last_value_selector (cognitive 21): ScanHintRewriter::extract_last_value_selector has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (16 pts), boolean chains 3, 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/query/src/optimizer/scan_hint.rs"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"39cd6a7cd86dcf5bf8531fb7f9b62f16c6fc952c1188a91fd8055eb08869174e"}},{"ruleId":"D2","level":"warning","message":{"text":"PromPlanner::build_binary_island_field_exprs (cognitive 21): PromPlanner::build_binary_island_field_exprs has cognitive complexity 21 (threshold 15). Drivers by points: loops 4 (11 pts), match/switch 3 (5 pts), if/else 1 (4 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":"src/query/src/promql/planner/island.rs"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"17ac907c95a5cec92bc4f43bbdef4c2d179afd131242036345e45cc12802a57e"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::otlp::metrics::to_grpc_insert_requests (cognitive 21): servers::otlp::metrics::to_grpc_insert_requests has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 3 (6 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/servers/src/otlp/metrics.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"2795fddee4ed5b64e17e9f1942bfb0f76260097650d0ace66c179a7328ee420b"}},{"ruleId":"D2","level":"warning","message":{"text":"collect_context.collect_report (cognitive 21): collect_context.collect_report has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (8 pts), ternaries 6, boolean chains 5, error handling 1 (2 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".agents/skills/greptimedb-development-docker-image/scripts/collect_context.py"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"9de89339c0cf5b0416e171aec1c1e272e6afd6f3dc52547f754c1fe3e115c1e1"}},{"ruleId":"D2","level":"warning","message":{"text":"OpenDalStorage::prepare_export_chunk (cognitive 20): OpenDalStorage::prepare_export_chunk has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 3 (4 pts), match/switch 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/cli/src/data/snapshot_storage.rs"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"041da6064f7f950dab6c61589979d119a4d9d88b275d46f9c346e4594fa3a720"}},{"ruleId":"D2","level":"warning","message":{"text":"RepairPartitionColumnTool::do_repair (cognitive 20): RepairPartitionColumnTool::do_repair has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 3 (5 pts), match/switch 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/cli/src/metadata/repair/partition_column.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab3183fa3a1b5a5410c4a2ddaf5308b1d48ac88a25d58fd888cadb9a80384a3a"}},{"ruleId":"D2","level":"warning","message":{"text":"TombstoneManager::move_values_inner (cognitive 20): TombstoneManager::move_values_inner has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 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/common/meta/src/key/tombstone.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0e8723b18fa6a70f2870967313d694374727b08e8ddd070a19fbf24522b3ab7"}},{"ruleId":"D2","level":"warning","message":{"text":"TombstoneManager::move_values_with_extra (cognitive 20): TombstoneManager::move_values_with_extra has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 3, loops 1 (2 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":"src/common/meta/src/key/tombstone.rs"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"e20c8038b82b1f4a4c97ac8521b3252be6bd34dfa77bdd117823dea32e5e6b25"}},{"ruleId":"D2","level":"warning","message":{"text":"common_meta::ddl::alter_database::build_new_schema_value (cognitive 20): common_meta::ddl::alter_database::build_new_schema_value has cognitive complexity 20 (threshold 15). Drivers by points: if/else 3 (9 pts), match/switch 3 (7 pts), loops 2 (4 pts) (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":"src/common/meta/src/ddl/alter_database.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9864527e352ec8c4ad3dcdf11a4ab62140df663745f36ef1f367b6cdb395ce0"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchGcProcedure::send_gc_instructions (cognitive 20): BatchGcProcedure::send_gc_instructions has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (13 pts), match/switch 2 (4 pts), 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":"src/meta-srv/src/gc/procedure.rs"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"441e11867af57f8d08d4245fbd0d5398105576d327a70645c0e3a372b098fcff"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionWorkerLoop::handle_alter_request (cognitive 20): RegionWorkerLoop::handle_alter_request has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (14 pts), match/switch 4 (6 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/mito2/src/worker/handle_alter.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"24dcf2dba67d4fbcf72a9169f82b92114d914f78f7389941d1f411c018292205"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementExecutor::repartition_table (cognitive 20): StatementExecutor::repartition_table has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (8 pts), match/switch 5 (7 pts), loops 3 (4 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/operator/src/statement/ddl.rs"},"region":{"startLine":1692}}}],"partialFingerprints":{"codehealthFindingId/v1":"461c30c6e69270fce7c574b22d75b31ee6f578440f3dfe0ce4548bf711f4a4bf"}},{"ruleId":"D2","level":"warning","message":{"text":"AbsentStream::poll_next (cognitive 20): AbsentStream::poll_next has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (13 pts), match/switch 3 (6 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":"src/promql/src/extension_plan/absent.rs"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"73fbe52d6de476f4810603846e970a99a45ec463a148d33212117a5dbb9d92df"}},{"ruleId":"D2","level":"warning","message":{"text":"MergeScanExec::fmt_as (cognitive 20): MergeScanExec::fmt_as has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 3 (8 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/query/src/dist_plan/merge_scan.rs"},"region":{"startLine":1287}}}],"partialFingerprints":{"codehealthFindingId/v1":"04a9643917f988468a053af31a68009a7a9075b306407fb9da2af2caa95fd4c5"}},{"ruleId":"D2","level":"warning","message":{"text":"Export::get_table_list (cognitive 19): Export::get_table_list has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 4 (6 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/src/data/export.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"44d0db71790d08e693efc1c322ac8e01d5228fff6b1b0a5f2a039a013b19cd11"}},{"ruleId":"D2","level":"warning","message":{"text":"StartCommand::merge_with_cli_options (cognitive 19): StartCommand::merge_with_cli_options has cognitive complexity 19 (threshold 15). Drivers by points: if/else 17 (18 pts), boolean chains 1 (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/cmd/src/datanode.rs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"f282e06c0320d2afb665493eb9ed2477902c1ded78677887ac582b3c10c4a450"}},{"ruleId":"D2","level":"warning","message":{"text":"cmd::bin::query_regression_runner::sql::extract_rows::visit (cognitive 19): cmd::bin::query_regression_runner::sql::extract_rows::visit has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 2 (5 pts), boolean chains 3, match/switch 1 (nesting depth added 8). 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/cmd/src/bin/query_regression_runner/sql.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae8163ab9419d617a0bfc521a4615615585da7f7f0fda5f6b973e1e1b4e2c048"}},{"ruleId":"D2","level":"warning","message":{"text":"CountHashGroupAccumulator::update_batch (cognitive 19): CountHashGroupAccumulator::update_batch has cognitive complexity 19 (threshold 15). Drivers by points: if/else 3 (9 pts), loops 4 (8 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":"src/common/function/src/aggrs/count_hash.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bf8768030393dc25037de15ff3c180c928b385c88f1b2f636d47ee3335c59c8"}},{"ruleId":"D2","level":"warning","message":{"text":"common_sql::convert::parse_string_to_value (cognitive 19): common_sql::convert::parse_string_to_value has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (15 pts), match/switch 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/common/sql/src/convert.rs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b50f95c1764a647193ce48221fce105cac6228ee43a23e7259e73d22a4b18d1"}},{"ruleId":"D2","level":"warning","message":{"text":"TraceChunkRetry::try_new (cognitive 19): TraceChunkRetry::try_new has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 4 (6 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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8d865434cda9b8da13d01f824d1147aadc0e782b3defb028155e0d17dd6d8ce"}},{"ruleId":"D2","level":"warning","message":{"text":"Instance::prepare_trace_v1_request_schema (cognitive 19): Instance::prepare_trace_v1_request_schema has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 2 (5 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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":1488}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cc561ede063ef0fc666b3b7c7fd7d5611099f41064943fa2a57bd6fb80269fe"}},{"ruleId":"D2","level":"warning","message":{"text":"log_store::kafka::util::record::maybe_emit_entry (cognitive 19): log_store::kafka::util::record::maybe_emit_entry has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 2 (4 pts), boolean chains 2 (nesting depth added 9). 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/log-store/src/kafka/util/record.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"fca0ddccb0c27884face1171fe21520aa1e5db564ef5508925606c25c7a2d4d9"}},{"ruleId":"D2","level":"warning","message":{"text":"EngineInner::scan_region (cognitive 19): EngineInner::scan_region has cognitive complexity 19 (threshold 15). Drivers by points: if/else 15, boolean chains 2, match/switch 1 (2 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/mito2/src/engine.rs"},"region":{"startLine":1054}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b0cebb9974b186fa64fdb1d8871e39d837fa7a0d7f8ddee0290f168d884b7f3"}},{"ruleId":"D2","level":"warning","message":{"text":"MitoRegion::set_role_state_gracefully (cognitive 19): MitoRegion::set_role_state_gracefully has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 7 (13 pts), if/else 4 (5 pts), boolean chains 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":"src/mito2/src/region.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"41d0787ffe4e965e019bc8f81cd3fcd66efa49af681643877bdd660c21be6656"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionWorkerLoop::handle_truncate_request (cognitive 19): RegionWorkerLoop::handle_truncate_request has cognitive complexity 19 (threshold 15). Drivers by points: if/else 3 (8 pts), loops 2 (5 pts), match/switch 4, boolean chains 2 (nesting depth added 8). 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/mito2/src/worker/handle_truncate.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"c309d5b895a62fcb1b6ebf9231225ea47742a0dbeca69ff94aeb2e4224a51ba0"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::compaction::find_dynamic_options (cognitive 19): mito2::compaction::find_dynamic_options has cognitive complexity 19 (threshold 15). Drivers by points: if/else 12 (19 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/mito2/src/compaction.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"31d3b791324080942c00e77fb82f717bc726dc9498d0df77f1d72866e236cd55"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::read::series_reader::build_series_partition_range (cognitive 19): mito2::read::series_reader::build_series_partition_range has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 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":"src/mito2/src/read/series_reader.rs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"69ccdfd01dae764dca0b72d86cea6df700ef5d1de988fd1839dbb835e0c3fb68"}},{"ruleId":"D2","level":"warning","message":{"text":"pipeline::etl::transform::transformer::greptime::coerce::coerce_u64_value (cognitive 19): pipeline::etl::transform::transformer::greptime::coerce::coerce_u64_value has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 12 (19 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":"src/pipeline/src/etl/transform/transformer/greptime/coerce.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"e266895d80cd3512e55d4be38e0c05ee449cf396df8eeb51c324fad1e1be9f34"}},{"ruleId":"D2","level":"warning","message":{"text":"pipeline::etl::parse (cognitive 19): pipeline::etl::parse has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (15 pts), match/switch 2 (4 pts) (nesting depth added 7). 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/pipeline/src/etl.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"71fe730bb7b360de0313bb76c214e4ecf41a5466fee58baf1f0682ff70bcbad1"}},{"ruleId":"D2","level":"warning","message":{"text":"HistogramFoldStream::process_safe_mode_buffer (cognitive 19): HistogramFoldStream::process_safe_mode_buffer has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (16 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/promql/src/extension_plan/histogram_fold.rs"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ab47ae50657b799a66f5556247bfcf4a3126fc3e8fa9d5c15d9b864e05f8ad7"}},{"ruleId":"D2","level":"warning","message":{"text":"SeriesNormalizeStream::normalize (cognitive 19): SeriesNormalizeStream::normalize has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 3 (5 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/promql/src/extension_plan/normalize.rs"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"c62618a36630eb26125a118ae002b584ff97974f4c0050c091ebee52f54d49f0"}},{"ruleId":"D2","level":"warning","message":{"text":"FallbackPlanRewriter::f_down (cognitive 19): FallbackPlanRewriter::f_down has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (19 pts) (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/query/src/dist_plan/analyzer/fallback.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e8162344bee3b11f12e208d66ce4128695771d127115fd275491e99a3088895"}},{"ruleId":"D2","level":"warning","message":{"text":"query::dist_plan::remote_dyn_filter_registry::run_entry_fanout (cognitive 19): query::dist_plan::remote_dyn_filter_registry::run_entry_fanout has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (13 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":"src/query/src/dist_plan/remote_dyn_filter_registry.rs"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5cbfe8d530c7c198bc4ffff65518d64f71b814bc47bac5b575433d752e10b14"}},{"ruleId":"D2","level":"warning","message":{"text":"InfluxdbV1Response::from_output (cognitive 19): InfluxdbV1Response::from_output has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 5 (18 pts), loops 1 (nesting depth added 13). 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/servers/src/http/result/influxdb_result_v1.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"262d528e8e5178c8471b014a032a30fe714a29159b781afae4b146a9f45ff512"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::otlp::metrics::convert_bucket_range (cognitive 19): servers::otlp::metrics::convert_bucket_range has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (12 pts), match/switch 2 (5 pts), loops 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/servers/src/otlp/metrics.rs"},"region":{"startLine":838}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b127e9131dde751f6e911c00476b08b57396b42b7d057e9d2caa5cf1a2889ad"}},{"ruleId":"D2","level":"warning","message":{"text":"TableMeta::add_columns (cognitive 19): TableMeta::add_columns has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 3, 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/table/src/metadata.rs"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6e53507539ab1831901c87a2070d1c467136e0d3d72fb13568777fb4056c0e4"}},{"ruleId":"D2","level":"warning","message":{"text":"update-compat-versions.main (cognitive 19): update-compat-versions.main has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (12 pts), error handling 2 (3 pts), boolean chains 2, ternaries 1 (2 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":".github/scripts/update-compat-versions.py"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c2719e9c171bfcabd97ea1d3ca2d68585b8318f7659249b8ab866c33e2ece8f"}},{"ruleId":"D2","level":"warning","message":{"text":"cli::data::export_v2::command::verify_snapshot (cognitive 18): cli::data::export_v2::command::verify_snapshot has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (14 pts), match/switch 1 (2 pts), boolean chains 1, 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":"src/cli/src/data/export_v2/command.rs"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad57eb25800be01af9b7554df7cb195e26b1e8ee13f7f8808f2f7e0a9b458f8d"}},{"ruleId":"D2","level":"warning","message":{"text":"cmd::bin::query_regression_runner::remote::storage::enforce_storage_thresholds (cognitive 18): cmd::bin::query_regression_runner::remote::storage::enforce_storage_thresholds has cognitive complexity 18 (threshold 15). Drivers by points: loops 8 (12 pts), if/else 3 (6 pts) (nesting depth added 7). 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/cmd/src/bin/query_regression_runner/remote/storage.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"62a324bc58f86eed40f3f7a3b989c50df0040937621be596338feca11ddc3514"}},{"ruleId":"D2","level":"warning","message":{"text":"VectorSum::update_batch (cognitive 18): VectorSum::update_batch has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 3 (6 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":"src/common/function/src/aggrs/vector/sum.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d978e2ed627b14f6752a0d16a90efb66bc137ee207928915878cd8d732298cc"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVariant::from_enum_variant (cognitive 18): ErrorVariant::from_enum_variant has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (16 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/common/macro/src/stack_trace_debug.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"0da51aa0a73528e000f6c93a97f4b204fdd36554769c4c7dba07b7d7d7ce2043"}},{"ruleId":"D2","level":"warning","message":{"text":"ProcedureStore::load_messages (cognitive 18): ProcedureStore::load_messages has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 2, match/switch 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/common/procedure/src/store.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac2dab2e86981c36df20c3c9b67df96c152fec6c0e80089013c33a27b10a893a"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleFilterEvaluator::cast_timestamp_unit (cognitive 18): SimpleFilterEvaluator::cast_timestamp_unit has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 1 (2 pts), match/switch 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/common/recordbatch/src/filter.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"1822c27c9c76a8ca20ba7ad70def09c4f23838a528f0c4c061c8bb2697a956c1"}},{"ruleId":"D2","level":"warning","message":{"text":"FulltextOptions::try_from (cognitive 18): FulltextOptions::try_from has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 6 (12 pts), if/else 5, 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":"src/datatypes/src/schema/column_schema.rs"},"region":{"startLine":742}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0690ae98038c1583fff5f851753b482667d4351816756d25f5ca2ba93af97ea"}},{"ruleId":"D2","level":"warning","message":{"text":"HeartbeatRunner::report_heartbeats (cognitive 18): HeartbeatRunner::report_heartbeats has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (12 pts), match/switch 2 (5 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":"src/frontend/src/heartbeat.rs"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f4512d9c3b450a192dfd77f9594c3717183b199398b6390aa762e5ad30eb84b"}},{"ruleId":"D2","level":"warning","message":{"text":"InfluxdbLineTimestampAligner::align_timestamps (cognitive 18): InfluxdbLineTimestampAligner::align_timestamps has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (3 pts), match/switch 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":"src/frontend/src/instance/influxdb.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a32a1b86494336b2663b1367b2805610b165bd90d81c213d6cdbbb3d90edfd3"}},{"ruleId":"D2","level":"warning","message":{"text":"Instance::do_query_inner (cognitive 18): Instance::do_query_inner has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (11 pts), match/switch 3 (5 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/frontend/src/instance.rs"},"region":{"startLine":786}}}],"partialFingerprints":{"codehealthFindingId/v1":"619892455c51a879a8b101a56eb54e1fe2cd8cb30b0310ff994fd7c5a5ee08a3"}},{"ruleId":"D2","level":"warning","message":{"text":"Actor::start_creates (cognitive 18): Actor::start_creates has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (14 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/log-store/src/object_store_wal/store.rs"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"99ede81d6929eb1020795769c3919a2599f1634de01367bda2f7ee523b47f3b2"}},{"ruleId":"D2","level":"warning","message":{"text":"GcScheduler::select_gc_candidates (cognitive 18): GcScheduler::select_gc_candidates has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 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/meta-srv/src/gc/candidate.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"16b008990098d8da5f366a183b5566a393cc1afdf76f567ecdfd4a5499646a34"}},{"ruleId":"D2","level":"warning","message":{"text":"RowModifier::fill_internal_columns (cognitive 18): RowModifier::fill_internal_columns has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 3 (6 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/metric-engine/src/row_modifier.rs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"4966db49d0a877859ff539474d7e03c27c8d323cb92444bcd1ceaef7f7ed89b8"}},{"ruleId":"D2","level":"warning","message":{"text":"CacheManager::get_sst_meta_data (cognitive 18): CacheManager::get_sst_meta_data has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (12 pts), match/switch 2 (6 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/mito2/src/cache.rs"},"region":{"startLine":1061}}}],"partialFingerprints":{"codehealthFindingId/v1":"f54a7c560705238c177af1ffb13276ec5c615cd1bfc023fa860f0b9ae5eda5b2"}},{"ruleId":"D2","level":"warning","message":{"text":"ValueBuilder::extend (cognitive 18): ValueBuilder::extend has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 2 (5 pts), 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":"src/mito2/src/memtable/time_series.rs"},"region":{"startLine":1038}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8f70b67d030f7262c127374dcd4d1928ba41d83828dc83239a7d93602e2671a"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionOpener::maybe_open (cognitive 18): RegionOpener::maybe_open has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (15 pts), boolean chains 2, match/switch 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/mito2/src/region/opener.rs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e700df81c63432b42076bb40f0b370cd88ae2bf2e091afd4a085d5a1c4b125e"}},{"ruleId":"D2","level":"warning","message":{"text":"BloomFilterIndexer::do_update_flat (cognitive 18): BloomFilterIndexer::do_update_flat has cognitive complexity 18 (threshold 15). Drivers by points: loops 4 (9 pts), if/else 5 (8 pts), boolean chains 1 (nesting depth added 8). 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/mito2/src/sst/index/bloom_filter/creator.rs"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"544c985ac7bf70be64643a55e05c0e4e2a6987047385010b2fedd8c532166109"}},{"ruleId":"D2","level":"warning","message":{"text":"RangeBase::compute_filter_mask_flat (cognitive 18): RangeBase::compute_filter_mask_flat has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 3, match/switch 1 (2 pts), 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/mito2/src/sst/parquet/file_range.rs"},"region":{"startLine":717}}}],"partialFingerprints":{"codehealthFindingId/v1":"7132045b9ec6fbc24c4e9d434cbd8f5b0d7975c45284517c86df8c1053345d78"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionWorkerLoop::handle_region_edit_result (cognitive 18): RegionWorkerLoop::handle_region_edit_result has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (15 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/mito2/src/worker/handle_manifest.rs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"bddbfd9d12c0b7ef0d395d4529dc2e16ed895f4a24808859d5705bb847b12bff"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::worker::handle_write::write_wal (cognitive 18): mito2::worker::handle_write::write_wal has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 3 (5 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/mito2/src/worker/handle_write.rs"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"c99f78af430c2b944081a44a1f599058f4ed287315b8abe6e47e11c61a44d1eb"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::worker::handle_manifest::edit_region (cognitive 18): mito2::worker::handle_manifest::edit_region has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 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":"src/mito2/src/worker/handle_manifest.rs"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d044860e02e6cfa1861a42e101d1c0a68b41b2da78fc4f935bf08fdf19aafa6"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::series_index::builder::build_series_index (cognitive 18): mito2::series_index::builder::build_series_index has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (7 pts), loops 4 (7 pts), match/switch 1 (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/mito2/src/series_index/builder.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"13072bd0ef0d1ee5371a3cfd66144cfe46d7d6adcbe773ccd1f25302ad4f61b7"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::compaction::window::filter_time_windows (cognitive 18): mito2::compaction::window::filter_time_windows has cognitive complexity 18 (threshold 15). Drivers by points: loops 5 (9 pts), if/else 3 (8 pts), boolean chains 1 (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":"src/mito2/src/compaction/window.rs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"a17dabf797b3d46de5eeb3696c6957759be3f574b8231217b186a212b87cb681"}},{"ruleId":"D2","level":"warning","message":{"text":"operator::req_convert::common::prepare_rows (cognitive 18): operator::req_convert::common::prepare_rows has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (8 pts), loops 3 (7 pts), match/switch 1 (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/operator/src/req_convert/common.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e73fd559072f8cfcdc27af14cdb47083e923232af3a76bc8a2aaabe5b5ef378"}},{"ruleId":"D2","level":"warning","message":{"text":"operator::insert::fill_table_options_for_create (cognitive 18): operator::insert::fill_table_options_for_create has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 2, boolean chains 1, 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/operator/src/insert.rs"},"region":{"startLine":1860}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b1637bacb2cd5d73fca79b95afbbbec8923c7ff254c09c4bbaad412618066ad"}},{"ruleId":"D2","level":"warning","message":{"text":"BoundedStager::recover (cognitive 18): BoundedStager::recover has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (12 pts), match/switch 1 (3 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/puffin/src/puffin_manager/stager/bounded_stager.rs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"29835d1e6bb9e4397e5ae00891b8a5b4682aef2bea558bea0659045469df4cd7"}},{"ruleId":"D2","level":"warning","message":{"text":"PlanRewriter::maybe_set_partitions (cognitive 18): PlanRewriter::maybe_set_partitions has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 2, 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/query/src/dist_plan/analyzer.rs"},"region":{"startLine":647}}}],"partialFingerprints":{"codehealthFindingId/v1":"817261af8886dd8dc6d6942e349ccfef8b2bbef9637b4448e57cd7b02b826621"}},{"ruleId":"D2","level":"warning","message":{"text":"EnforceDistRequirementRewriter::get_current_applicable_column_requirements (cognitive 18): EnforceDistRequirementRewriter::get_current_applicable_column_requirements has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 2 (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/query/src/dist_plan/analyzer.rs"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"64d21c3de4d538d4cae556d8d66cfac5e2c0d327c517a115bc51b4a9e50a0f1b"}},{"ruleId":"D2","level":"warning","message":{"text":"DataFusionExprConverter::convert (cognitive 18): DataFusionExprConverter::convert has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 2 (4 pts), match/switch 2 (3 pts) (nesting depth added 7). 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/query/src/dist_plan/predicate_extractor.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"89759d969854d5c32dd4aad8583c3d45decc01f334a370d59488a259155cc108"}},{"ruleId":"D2","level":"warning","message":{"text":"CountNestAggrRule::try_rewrite_sort (cognitive 18): CountNestAggrRule::try_rewrite_sort has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, boolean chains 2, match/switch 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/query/src/optimizer/count_nest_aggr.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"935fc735ecd338fdf1964d5df5cb3b91d6b61224e3234171e1b0658bbfbc6fe1"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpandIntervalTransformRule::visit_expr (cognitive 18): ExpandIntervalTransformRule::visit_expr has cognitive complexity 18 (threshold 15). Drivers by points: if/else 3 (9 pts), match/switch 4 (9 pts) (nesting depth added 11). 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/sql/src/statements/transform/expand_interval.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"369045c5528eeb8799fe8f6b2e61051c2b88acbe7c1564ef7d65cefa0e513eff"}},{"ruleId":"D2","level":"warning","message":{"text":"ExportCreate::get_schema_objects (cognitive 17): ExportCreate::get_schema_objects has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (9 pts), match/switch 2 (6 pts), loops 1 (2 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/cli/src/data/export_v2/command.rs"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"7827c1477e70b06a6a55d0b10d8952a158cf5ea7888b855f19ab89f66d420623"}},{"ruleId":"D2","level":"warning","message":{"text":"cli::data::import_v2::coordinator::import_tasks_concurrent (cognitive 17): cli::data::import_v2::coordinator::import_tasks_concurrent has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 2 (3 pts), match/switch 2 (3 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/cli/src/data/import_v2/coordinator.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"fceca876b34129b027074dd8a7e4cf34c48b96c3223534b9d7ed9d42e4630110"}},{"ruleId":"D2","level":"warning","message":{"text":"PatternAst::eliminate_optional_fn (cognitive 17): PatternAst::eliminate_optional_fn has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (7 pts), match/switch 2 (7 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":"src/common/function/src/scalars/matches.rs"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4922039c5f0b097bcbe32e4072dad01180ae6a70e7e20e684f45ea7b25041b6"}},{"ruleId":"D2","level":"warning","message":{"text":"ParserContext::accomplish_optional_unary_op (cognitive 17): ParserContext::accomplish_optional_unary_op 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/common/function/src/scalars/matches.rs"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"75143d53862acc18b031bcc30b63c1d3b2a20b1a1db6ef753b69b94695724392"}},{"ruleId":"D2","level":"warning","message":{"text":"Tokenizer::tokenize (cognitive 17): Tokenizer::tokenize has cognitive complexity 17 (threshold 15). Drivers by points: match/switch 3 (9 pts), if/else 2 (6 pts), boolean chains 1, loops 1 (nesting depth added 10). 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/common/function/src/scalars/matches.rs"},"region":{"startLine":722}}}],"partialFingerprints":{"codehealthFindingId/v1":"9279bcac47b821a6f152616622dce6aaade4864a6081629b35dd9d086f011d00"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleFilterEvaluator::try_new (cognitive 17): SimpleFilterEvaluator::try_new has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (11 pts), match/switch 3 (5 pts), boolean chains 1 (nesting depth added 8). 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/common/recordbatch/src/filter.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad4b604ca1bc716ed400df7d4bd4d426022ff8e1b315aa07399e6d679a8a22cd"}},{"ruleId":"D2","level":"warning","message":{"text":"common_recordbatch::map_json_type_to_string (cognitive 17): common_recordbatch::map_json_type_to_string has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 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":"src/common/recordbatch/src/lib.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa0007ce8afac896012a7baae7d4205e17f47cd61ac9f24541e5ba68657100a4"}},{"ruleId":"D2","level":"warning","message":{"text":"HeartbeatTask::create_streams (cognitive 17): HeartbeatTask::create_streams has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (9 pts), loops 2 (4 pts), match/switch 1 (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/datanode/src/heartbeat.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"e177e6d91945b17f794061b99a192e2bd6c87eadd15928aa2a5e5d7d59833cde"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionServerInner::handle_read (cognitive 17): RegionServerInner::handle_read has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 2 (4 pts), match/switch 1 (3 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":"src/datanode/src/region_server.rs"},"region":{"startLine":1842}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4a75d7d48eb9e3bebd78926f3685b90ee5b07d728269a89b88931f2f4313c25"}},{"ruleId":"D2","level":"warning","message":{"text":"datatypes::json::coerce_json_value_to_type (cognitive 17): datatypes::json::coerce_json_value_to_type has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (14 pts), match/switch 2 (3 pts) (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/datatypes/src/json.rs"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd3173bc6bab62e753ccafbe3df4dd585e8cf3b028ec800fa41308fc3ebf4647"}},{"ruleId":"D2","level":"warning","message":{"text":"ColumnMatcherRewriter::modify_project_exprs (cognitive 17): ColumnMatcherRewriter::modify_project_exprs has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12 (15 pts), 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, 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/flow/src/batching_mode/utils.rs"},"region":{"startLine":1395}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b515549c6fc0b1704d95f0ca7e127e97d2cb756c85243bc162b960486581a27"}},{"ruleId":"D2","level":"warning","message":{"text":"Instance::metrics (cognitive 17): Instance::metrics has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10, match/switch 2 (4 pts), boolean chains 3 (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/frontend/src/instance/otlp.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"90cc4b5c43237b488c5544b21aada09f49b67bbdb77efb443ae3dfc3eeabbff4"}},{"ruleId":"D2","level":"warning","message":{"text":"Consumer::poll_next (cognitive 17): Consumer::poll_next has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (11 pts), match/switch 2 (5 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/log-store/src/kafka/consumer.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"203e5f48a80d33fe487797ba9bb91392399177796c8b664901cbab0f3bf76d94"}},{"ruleId":"D2","level":"warning","message":{"text":"Inner::with_retry (cognitive 17): Inner::with_retry has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 1 (3 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/meta-client/src/client/cluster.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"d60284ebce7b7bac1b0c44dcd784510f90c91da8ae93caf420a8989ed274b3a0"}},{"ruleId":"D2","level":"warning","message":{"text":"Inner::with_retry (cognitive 17): Inner::with_retry has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 1 (3 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/meta-client/src/client/procedure.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f06f0a1254586dcf60176bbdc6d0ee9a8f318427985b72ac3fb912ad9bd2591"}},{"ruleId":"D2","level":"warning","message":{"text":"meta_srv::procedure::utils::handle_flush_region_reply (cognitive 17): meta_srv::procedure::utils::handle_flush_region_reply has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (11 pts), loops 1 (3 pts), match/switch 2 (3 pts) (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/meta-srv/src/procedure/utils.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"e359e329d7452c8d0a6a4e80e7e1c1df4fe1f2c980a69ce9c4c47d64e6f06dbb"}},{"ruleId":"D2","level":"warning","message":{"text":"CheckpointStorage::load_checkpoint (cognitive 17): CheckpointStorage::load_checkpoint has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), match/switch 2 (5 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/mito2/src/manifest/storage/checkpoint.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d6aa04744468897334a7a312c2d53554b36a844ca83de9f3a8d6a49c2d84495"}},{"ruleId":"D2","level":"warning","message":{"text":"FlatProjectionMapper::convert (cognitive 17): FlatProjectionMapper::convert has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 2, 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/mito2/src/read/flat_projection.rs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a95b5a684ecef7915ac916b71d90bd5203eb693859846bc8eaf9b146b308a77"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionWorkerLoop::handle_flush_finished (cognitive 17): RegionWorkerLoop::handle_flush_finished has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (10 pts), loops 2 (6 pts), match/switch 1 (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/mito2/src/worker/handle_flush.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd7e7fe50f4787f178829c5f64db0cc411b79191e3c0db63f0cd1938e36dadef"}},{"ruleId":"D2","level":"warning","message":{"text":"operator::statement::semantic_graph::relationships::co_declared_branch (cognitive 17): operator::statement::semantic_graph::relationships::co_declared_branch has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (11 pts), loops 3 (6 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/operator/src/statement/semantic_graph/relationships.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"a801cbd0684e04e8333604f82d2a2cfce762feada4c3a6c88de7ad74ee2987b8"}},{"ruleId":"D2","level":"warning","message":{"text":"SeriesDivideStream::find_first_diff_row (cognitive 17): SeriesDivideStream::find_first_diff_row has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (14 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/promql/src/extension_plan/series_divide.rs"},"region":{"startLine":668}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a71261ffaab102dc8b77d752461572fd31dfc471e18d04c19bde98520c5a328"}},{"ruleId":"D2","level":"warning","message":{"text":"LogQueryPlanner::build_content_filter_with_expr (cognitive 17): LogQueryPlanner::build_content_filter_with_expr has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (14 pts), match/switch 2 (3 pts) (nesting depth added 6). 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/query/src/log_query/planner.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cba74fb39cc9ace012d17cec9bed31ffad83f4db61ae489f5bef17ff72bd4d8"}},{"ruleId":"D2","level":"warning","message":{"text":"PromPlanner::set_op_on_non_field_columns (cognitive 17): PromPlanner::set_op_on_non_field_columns has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (11 pts), loops 1 (3 pts), match/switch 2 (3 pts) (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":"src/query/src/promql/planner/set_operator.rs"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"9303eb991a2d72f787010674265336968fb138a5f1d970a7225d32c33255a329"}},{"ruleId":"D2","level":"warning","message":{"text":"RangeSelectStream::poll_next (cognitive 17): RangeSelectStream::poll_next has cognitive complexity 17 (threshold 15). Drivers by points: if/else 2 (8 pts), match/switch 3 (8 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":"src/query/src/range_select/plan.rs"},"region":{"startLine":1242}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f20f1090c4e1058a451e271f737bc227bcbf69da2c182abd84fb6f3c835d859"}},{"ruleId":"D2","level":"warning","message":{"text":"LogicalTablePendingRowsBatcher::accepts_bulk_destinations (cognitive 17): LogicalTablePendingRowsBatcher::accepts_bulk_destinations has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (13 pts), loops 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/servers/src/batcher/logical_table.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d510eef9ce4e85d7315d4f9f87c8c2dcd6212432e26c4e7098129cce42c9037"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::mysql::federated::has_trailing_statement (cognitive 17): servers::mysql::federated::has_trailing_statement has cognitive complexity 17 (threshold 15). Drivers by points: if/else 3 (9 pts), match/switch 2 (5 pts), boolean chains 2, 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/servers/src/mysql/federated.rs"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"fedda521ed08dcb6e6a66edc37087c079d249c82b4976e6d50675192f8bf07f8"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::http::authorize::inner_auth (cognitive 17): servers::http::authorize::inner_auth has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (10 pts), match/switch 4 (7 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/servers/src/http/authorize.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"41834083eaaea464911bdd395593c328040434bd2f76274aae88e31e4d98bd4f"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::http::prometheus::update_metric_name_matcher (cognitive 17): servers::http::prometheus::update_metric_name_matcher has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 2 (4 pts), boolean chains 2, match/switch 1 (nesting depth added 8). 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/servers/src/http/prometheus.rs"},"region":{"startLine":1619}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6e097b7ad4e97ff743432829097425ac7e2422d5728e105a97317e9483792c9"}},{"ruleId":"D2","level":"warning","message":{"text":"ParserContext::parse_alter_trigger (cognitive 17): ParserContext::parse_alter_trigger has cognitive complexity 17 (threshold 15). Drivers by points: match/switch 5 (14 pts), boolean chains 1, if/else 1, loops 1 (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":"src/sql/src/parsers/alter_parser/trigger.rs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"c63cd4a2379743540efe47409b8106e0792f898b0b6c070914fb5bfbb5e4173e"}},{"ruleId":"D2","level":"warning","message":{"text":"image_config.update_env (cognitive 17): image_config.update_env has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (10 pts), ternaries 4 (6 pts), 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":".agents/skills/greptimedb-development-docker-image/scripts/image_config.py"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"485b8a7b253cd0fcb2cdfe0fe63742756d7254f63beafba1a6a1869322974927"}},{"ruleId":"D2","level":"warning","message":{"text":"jsonbench-summary.parse_query_rows (cognitive 17): jsonbench-summary.parse_query_rows has cognitive complexity 17 (threshold 15). Drivers by points: if/else 3 (7 pts), ternaries 2 (4 pts), loops 2 (3 pts), error handling 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":".github/scripts/jsonbench-summary.py"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"c37cf520e61a5fc0123fde2aee1bf3720a5d6415cc5b3df2b8e18bba2511647d"}},{"ruleId":"D2","level":"warning","message":{"text":"query-regression-summary.build_markdown (cognitive 17): query-regression-summary.build_markdown has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8, boolean chains 7, loops 1 (2 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":".github/scripts/query-regression-summary.py"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"6124b30a7aa560c88dc8590ea8a01414fef83ed91040b5b1dc497bac8877d070"}},{"ruleId":"D2","level":"warning","message":{"text":"client::database::output_from_flight_message_stream (cognitive 16): client::database::output_from_flight_message_stream has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 4 (11 pts), if/else 2 (3 pts), loops 1 (2 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":"src/client/src/database.rs"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6edb09a177fe42c7395aa07fce7a64b6ebc65b5a55a79c4f08f74fbd297cfe3"}},{"ruleId":"D2","level":"warning","message":{"text":"StartCommand::merge_with_cli_options (cognitive 16): StartCommand::merge_with_cli_options has cognitive complexity 16 (threshold 15). Drivers by points: if/else 16. 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/cmd/src/metasrv.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4d4e41c0cd81739c2f86c3d45edd8581aece3b05d43adf0499cb42c159e3a45"}},{"ruleId":"D2","level":"warning","message":{"text":"MatchesTermFunction::invoke_with_args (cognitive 16): MatchesTermFunction::invoke_with_args has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (9 pts), match/switch 4 (5 pts), loops 1 (2 pts) (nesting depth added 5). Of this number, 15 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/common/function/src/scalars/matches_term.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7b0a25c3a353fc217d558920494b49511bff6d26419c7e0ca81696bf3dd9d96"}},{"ruleId":"D2","level":"warning","message":{"text":"MatchesTermFinder::find (cognitive 16): MatchesTermFinder::find has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 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/common/function/src/scalars/matches_term.rs"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"de90d98a3e2ce9deb5ef8085180cd74924094f6ee69a7118faec7a8128035d2d"}},{"ruleId":"D2","level":"warning","message":{"text":"LocateFunction::invoke_with_args (cognitive 16): LocateFunction::invoke_with_args has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 1, 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/common/function/src/scalars/string/locate.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"34e1207041fa387b68a5e8c3da4c27e39e70d7cf95bdfdfe4b5661b62345c91e"}},{"ruleId":"D2","level":"warning","message":{"text":"common_meta::kv_backend::util::skip_value (cognitive 16): common_meta::kv_backend::util::skip_value has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 1, 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/common/meta/src/kv_backend/util.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebd2ff96a88eb39f5018644c811c06ea532cc84b267b76ddb52cccf5b3722ba5"}},{"ruleId":"D2","level":"warning","message":{"text":"common_meta::ddl::utils::handle_multiple_results (cognitive 16): common_meta::ddl::utils::handle_multiple_results has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (9 pts), loops 3 (4 pts), match/switch 1 (2 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":"src/common/meta/src/ddl/utils.rs"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c90e5c000d30a7f53a1f32a734a180b75a7c239aea788190923421875c20b89"}},{"ruleId":"D2","level":"warning","message":{"text":"datanode::datanode::open_all_regions (cognitive 16): datanode::datanode::open_all_regions has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (12 pts), match/switch 1 (3 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/datanode/src/datanode.rs"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b37d242460f4823810313afea2ce22e8702c82e60d52b33e027bffc4ca0fdb7"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchingEngine::create_flow_inner (cognitive 16): BatchingEngine::create_flow_inner has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, match/switch 3, boolean chains 1, 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/flow/src/batching_mode/engine.rs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"521b859bca6c88fa994c49a29ff1d6c66c5841194321fb406b18606f5846cb8c"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchingTask::capture_recovery_windows_since (cognitive 16): BatchingTask::capture_recovery_windows_since has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, loops 2 (4 pts), boolean chains 1, match/switch 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/flow/src/batching_mode/task.rs"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"a13803ba343e9b333a7ec85b8f86ea1ac81e4fefadc80444b68da95dcf2b83db"}},{"ruleId":"D2","level":"warning","message":{"text":"ColumnMatcherRewriter::modify_project_exprs_with_partial (cognitive 16): ColumnMatcherRewriter::modify_project_exprs_with_partial has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (13 pts), boolean chains 2, 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":"src/flow/src/batching_mode/utils.rs"},"region":{"startLine":1578}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fe6c494b1a5bc632c39dc11d889579f3a45941aace6e1245a710039de764382"}},{"ruleId":"D2","level":"warning","message":{"text":"TraceRequestSchema::resolve_table_schema (cognitive 16): TraceRequestSchema::resolve_table_schema has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), match/switch 1 (3 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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d4efb5846fad0ea15c0e3dec1104d50b0e212fc17b515cee5876a49fa7ca18a"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchGcProcedure::cleanup_region_repartition (cognitive 16): BatchGcProcedure::cleanup_region_repartition has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 4 (5 pts), 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/meta-srv/src/gc/procedure.rs"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"53af2359e60f50fa46e8af70878ea3650d29d4d926fe76a781a3eaaab8265c39"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionSupervisorTicker::start (cognitive 16): RegionSupervisorTicker::start has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 2 (4 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/meta-srv/src/region/supervisor.rs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e355654c66cc6e2d1e8d49837fb2bc1f628d417493743a8c6cf412965cf70ec"}},{"ruleId":"D2","level":"warning","message":{"text":"MetricEngine::handle_request (cognitive 16): MetricEngine::handle_request has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (15 pts), match/switch 1 (nesting depth added 5). 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/metric-engine/src/engine.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"bffe7232e265b426d716bd1c98aed9029acf6431b7d8881bc2f7c7862c287041"}},{"ruleId":"D2","level":"warning","message":{"text":"MetricEngineInner::verify_rows (cognitive 16): MetricEngineInner::verify_rows has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 4 (6 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/metric-engine/src/engine/put.rs"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d060d14856456e4986e1257ae5d6afe218810588bcca290875733d25337f7b4"}},{"ruleId":"D2","level":"warning","message":{"text":"RegionFlushTask::do_flush_memtables (cognitive 16): RegionFlushTask::do_flush_memtables has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 3 (6 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/mito2/src/flush.rs"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c5758b8bd7d30557b2b99734932fb6a277a03c4a0816b8b9b23d7bee562ed79"}},{"ruleId":"D2","level":"warning","message":{"text":"ScanRegion::scan_input (cognitive 16): ScanRegion::scan_input has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 2, 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/mito2/src/read/scan_region.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"928b538e4b3e7f3db4fe778053af1009af744384d4196ca990941d45655ba93a"}},{"ruleId":"D2","level":"warning","message":{"text":"SeriesIndexSearcher::search (cognitive 16): SeriesIndexSearcher::search has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (11 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":"src/mito2/src/series_index/searcher.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"b247b09e219dae8edf2937399dd81eba57b32363836ece3829f8c6b9c4504480"}},{"ruleId":"D2","level":"warning","message":{"text":"BloomFilterIndexApplier::apply (cognitive 16): BloomFilterIndexApplier::apply has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 4 (5 pts), 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/mito2/src/sst/index/bloom_filter/applier.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"920975a533f6c41cc32663da40eadf196e824a1c24bdad3264729b9a79e24e50"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::memtable::bulk::part::convert_bulk_part (cognitive 16): mito2::memtable::bulk::part::convert_bulk_part has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (10 pts), loops 3 (5 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":"src/mito2/src/memtable/bulk/part.rs"},"region":{"startLine":991}}}],"partialFingerprints":{"codehealthFindingId/v1":"26de2390bf19f6e4485361629d99e2524b15acc95bf7528a847ddbbcaa389e38"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::sst::parquet::row_selection::intersect_row_selections (cognitive 16): mito2::sst::parquet::row_selection::intersect_row_selections has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (10 pts), match/switch 2 (5 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/mito2/src/sst/parquet/row_selection.rs"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"3afe2e49ba94b42282a079db715d8840f8c6263cbdcf4832806eaeb9ab5b8c43"}},{"ruleId":"D2","level":"warning","message":{"text":"mito2::worker::handle_alter::log_time_index_widening_overflow (cognitive 16): mito2::worker::handle_alter::log_time_index_widening_overflow has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 3 (6 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/mito2/src/worker/handle_alter.rs"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"dea7d2a8f660a48aae385dee72c8d041049593e33cfadf773358af528b2ebcb9"}},{"ruleId":"D2","level":"warning","message":{"text":"partition::utils::split::collect_conjunction_bounds (cognitive 16): partition::utils::split::collect_conjunction_bounds has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (12 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/partition/src/utils/split.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"101e4a6deb2ff4c0bd3e1daf8b7e7597dbfab0b108d4f4a37dc79dfc5cb12b57"}},{"ruleId":"D2","level":"warning","message":{"text":"pipeline::etl::transform::transformer::greptime::values_to_rows (cognitive 16): pipeline::etl::transform::transformer::greptime::values_to_rows has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), match/switch 2 (4 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/pipeline/src/etl/transform/transformer/greptime.rs"},"region":{"startLine":574}}}],"partialFingerprints":{"codehealthFindingId/v1":"50efa89936b224db7c8ab2f91f46e0966bc84ddd4abd6ad1bd49e85f92cc5574"}},{"ruleId":"D2","level":"warning","message":{"text":"QuantileOverTime::quantile_over_time (cognitive 16): QuantileOverTime::quantile_over_time has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (7 pts), match/switch 3 (5 pts), loops 2 (4 pts) (nesting depth added 7). 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/promql/src/functions/quantile.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"674248ea07ae3273e7e73e701b56cb1e23199d76b59997846e1e197874b59dc0"}},{"ruleId":"D2","level":"warning","message":{"text":"MatchesConstantTermOptimizer::optimize (cognitive 16): MatchesConstantTermOptimizer::optimize has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (14 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/query/src/optimizer/constant_term.rs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa7e044e4f4522f78c99c4760e4a1c0ea53aa7b6bc249ecad3b9abb0a6d22d7"}},{"ruleId":"D2","level":"warning","message":{"text":"WindowedSortPhysicalRule::do_optimize (cognitive 16): WindowedSortPhysicalRule::do_optimize has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (14 pts), 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/query/src/optimizer/windowed_sort.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"a51e707c2ce747256ea75e8b6991a935b683266acb986442d11876343103c049"}},{"ruleId":"D2","level":"warning","message":{"text":"PromPlanner::build_time_index_filter (cognitive 16): PromPlanner::build_time_index_filter has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (8 pts), match/switch 4, boolean chains 3, loops 1 (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/query/src/promql/planner.rs"},"region":{"startLine":2662}}}],"partialFingerprints":{"codehealthFindingId/v1":"3236f27a9bcf55e3c76277d2316fb9285a63a56e4aeec61c7a283e332d5489f8"}},{"ruleId":"D2","level":"warning","message":{"text":"query::dist_plan::analyzer::utils::aliased_columns_for_inner (cognitive 16): query::dist_plan::analyzer::utils::aliased_columns_for_inner has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (8 pts), loops 4 (7 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/query/src/dist_plan/analyzer/utils.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"f079680b2ca6e8ccb58b079eb0f4576a0a4a163a48c69418a502c526ec30cfac"}},{"ruleId":"D2","level":"warning","message":{"text":"query::sql::show_create_table::create_column (cognitive 16): query::sql::show_create_table::create_column has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (13 pts), match/switch 1 (2 pts), boolean chains 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/query/src/sql/show_create_table.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"e78b3782c07f399050fe7302e6a8c09f0f5e1071e8cfdad9954891774ac99e84"}},{"ruleId":"D2","level":"warning","message":{"text":"MysqlInstanceShim::on_query (cognitive 16): MysqlInstanceShim::on_query has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 5 (12 pts), if/else 4 (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":"src/servers/src/mysql/handler.rs"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e465690e87f4d0d440d711eec525e778426da1c731363034247beb68599875b"}},{"ruleId":"D2","level":"warning","message":{"text":"servers::otlp::metrics::resource_info::for_each_encoded_time (cognitive 16): servers::otlp::metrics::resource_info::for_each_encoded_time has cognitive complexity 16 (threshold 15). Drivers by points: loops 4 (8 pts), if/else 1 (5 pts), match/switch 1 (3 pts) (nesting depth added 10). Of this number, 15 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. 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/servers/src/otlp/metrics/resource_info.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a35f68e74754b001604831fc6e76077cc76e2ae8ae154dffc143e3f8f40db2c"}},{"ruleId":"D2","level":"warning","message":{"text":"ParserContext::parse_create (cognitive 16): ParserContext::parse_create has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 6 (16 pts) (nesting depth added 10). 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/sql/src/parsers/create_parser.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"9789062099f1342b1f40fdbc32cb63ef8de8a9958ea7a8e01a8fa8b971274c61"}},{"ruleId":"D2","level":"warning","message":{"text":"ParserContext::parse_tql_query (cognitive 16): ParserContext::parse_tql_query has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 2, 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/sql/src/parsers/tql_parser.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"64f94bb7929f1b32662d46f52ddea72c66f8f074c9c9a1f614589e4de7eea2d6"}},{"ruleId":"D2","level":"warning","message":{"text":"Column::fmt (cognitive 16): Column::fmt 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, 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/sql/src/statements/create.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a1ff23b5e42abe395a2087f4d531d6c6b76cef21c342bb82229f16c3a699217"}},{"ruleId":"D2","level":"warning","message":{"text":"query-regression-nightly-refs.select_base_and_candidate (cognitive 16): query-regression-nightly-refs.select_base_and_candidate has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (13 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":".github/scripts/query-regression-nightly-refs.py"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f70207f9812fffdeaf5248ebbc6b2a0532bbd76b4f4a544b84133f70617d9e7"}},{"ruleId":"D2","level":"warning","message":{"text":"query-regression-run.run_remote_case (cognitive 16): query-regression-run.run_remote_case has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (9 pts), boolean chains 3, loops 3, ternaries 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":".github/scripts/query-regression-run.py"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c03ff458f5ab3001d162f32b66c060c314c66a72cde504fe2b11c3d5df8a8e0"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PromPlanner: ClassTooLong \u2014 4160 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), 128 methods, 2 blocks, lines 284-6258. The bar is 400 significant lines; this is 3760 over it, 10.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":"src/query/src/promql/planner.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"851a48d83ddddadeb70f2e68b19385039b0e06e1ec67eb4e855a3112fcebf7ef"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: promql/planner.rs: FileTooLong \u2014 4344 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 96% of them inside a single declaration: PromPlanner (2 blocks, 284-6258). The bar is 500 significant lines; this is 3844 over it, 8.69\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/query/src/promql/planner.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1820f3e59c0f6ab4a82a730516b00596942b51bfb37b31c6785091b897dbdd80"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: servers::postgres::types::parameters_to_scalar_values: FunctionTooLong \u2014 servers::postgres::types::parameters_to_scalar_values runs 606 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 506 over it, 6.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/servers/src/postgres/types.rs"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"634b056c1f7098a4fcbf7eaf0704e71cddc202de6f6282702b16940a4257c442"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ParserContext: TooManyMethods \u2014 144 methods, declared across 24 files: parsers/create_parser.rs (26), parsers/show_parser.rs (19), src/parser.rs (18), parsers/alter_parser.rs (18), \u002B20 more file(s). The bar is 30 methods; this is 114 over it, 4.80\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/sql/src/parser.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"3236b8d93c3fb6da15820c382382746817d78d0574d8e914481cd62f8a2f665f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PromPlanner.or_operator: MethodTooLong \u2014 or_operator runs 468 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 368 over it, 4.68\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/query/src/promql/planner/set_operator.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa0f47d9307144ba97c437a814c2ec570913515177483658019a03e0eac8309b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PromPlanner: TooManyMethods \u2014 128 methods, declared across 5 files: promql/planner.rs (106), planner/at_modifier.rs (8), planner/function_plans.rs (7), planner/island.rs (5), \u002B1 more file(s). The bar is 30 methods; this is 98 over it, 4.27\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/query/src/promql/planner.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a7b9020b35e353c70a57e9de9d8072d6508a78814de65408354a1e89e688a06"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PromPlanner.create_function_expr: MethodTooLong \u2014 create_function_expr runs 423 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 323 over it, 4.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/query/src/promql/planner.rs"},"region":{"startLine":3278}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c3f5b8c66be2e105d6964c75758ed212f9146040969acff2d77ed43597779bf"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ScanbenchCommand.run: MethodTooLong \u2014 run runs 421 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 321 over it, 4.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/cmd/src/datanode/scanbench.rs"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4284728019042c142193104bdbdd52f0b0f9bb1f30ccf113b643170d692f86a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: statement/ddl.rs: FileTooLong \u2014 2092 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: StatementExecutor (337-2385). The bar is 500 significant lines; this is 1592 over it, 4.18\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/operator/src/statement/ddl.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"83525a9560f64dbddef8200b901219b0f187a7de85f43593654f7867941b2880"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: functions/native_histogram.rs: FileTooLong \u2014 2064 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 1564 over it, 4.13\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/promql/src/functions/native_histogram.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e296215a321e03201ea2e953a55ef72b181934227387a79c8d769b438fd4b75"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StatementExecutor: TooManyMethods \u2014 120 methods, declared across 18 files: statement/ddl.rs (45), statement/show.rs (22), src/statement.rs (17), statement/copy_table_to.rs (6), \u002B14 more file(s). The bar is 30 methods; this is 90 over it, 4.00\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/operator/src/statement.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad7f6df7b9eb068960f2ffef7b917a88cdc400c821dfa4706d06d3b7c224bbdc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PromPlanner.prom_binary_expr_to_plan: MethodTooLong \u2014 prom_binary_expr_to_plan runs 398 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 298 over it, 3.98\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/query/src/promql/planner.rs"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecc7d0f67d36867f83015b290c0673a0f82033b3e2b8d180079d8d209b234c87"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: http/prometheus.rs: FileTooLong \u2014 1751 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 49 free functions. The bar is 500 significant lines; this is 1251 over it, 3.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/servers/src/http/prometheus.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce3b662a1e5bc3e3dcb898b20d216c5dff28de74feb5d0e02f5df9e2e63c9113"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MetasrvBuilder.build: MethodTooLong \u2014 build runs 347 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 247 over it, 3.47\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/meta-srv/src/metasrv/builder.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a35818f0e15e4f77ddf9380081ab9b2a451e5888ddba7fecbac200346defc72"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Instance: TooManyMethods \u2014 100 methods, declared across 12 files: src/instance.rs (40), otlp/trace_ingest.rs (20), instance/grpc.rs (10), instance/dashboard.rs (7), \u002B8 more file(s). The bar is 30 methods; this is 70 over it, 3.33\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/frontend/src/instance.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cf54caec4eb233fc666df449849aa1407ceb6c8815a3ef513f11f3c7af0bee2"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BatchingTask: ClassTooLong \u2014 1293 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), 54 methods, 2 blocks, lines 293-2220. The bar is 400 significant lines; this is 893 over it, 3.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":"src/flow/src/batching_mode/task.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"c70d2155a1ddf5b4f113190300ceaf4c0f64bf9ab34dcc233e5176bde0cd9971"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parquet/reader.rs: FileTooLong \u2014 1571 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 1071 over it, 3.14\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/mito2/src/sst/parquet/reader.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"110131feba0293ce92acd8b43c344fb7596bc7c67323468e02bb467a192b3d1b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: catalog::system_schema::information_schema::information_memory_table::get_schema_columns: FunctionTooLong \u2014 catalog::system_schema::information_schema::information_memory_table::get_schema_columns runs 311 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 211 over it, 3.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/catalog/src/system_schema/information_schema/information_memory_table.rs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"322c7249b5432017a3797bf857a0dcb831fa01e3fc7a395872a885cb4b9aebe6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Error: ClassTooLong \u2014 1239 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), 3 methods, 3 blocks, lines 46-1706. The bar is 400 significant lines; this is 839 over it, 3.10\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/mito2/src/error.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9218b9032ef209e04a326f362ff19758dd99dd1748e7dc55687ca83ae9011ce"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: batching_mode/task.rs: FileTooLong \u2014 1516 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 85% of them inside a single declaration: BatchingTask (2 blocks, 293-2220). The bar is 500 significant lines; this is 1016 over it, 3.03\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/flow/src/batching_mode/task.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7951f30aca488ede0b46bc821224c2b35d29c7e519ac7e8aa870e5294b96a97e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: otlp/trace_ingest.rs: FileTooLong \u2014 1462 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 962 over it, 2.92\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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c283a29b7c1bfd63fb1050d77d771591f27b751e8c7f5ead57c697776ea716e0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/insert.rs: FileTooLong \u2014 1429 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 73% of them inside a single declaration: Inserter (3 blocks, 97-1711). The bar is 500 significant lines; this is 929 over it, 2.86\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/operator/src/insert.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f89714953f228fb1492055dcd18fa3f93bd740cb9a92783e760ca96b5b8199ff"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: read/scan_region.rs: FileTooLong \u2014 1398 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 898 over it, 2.80\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/mito2/src/read/scan_region.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"14498db7db31fe0ce45140c856c0ba6b30417eea08da0516e2c7b711070ca51d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RegionWorkerLoop: TooManyMethods \u2014 83 methods, declared across 18 files: worker/handle_write.rs (12), src/worker.rs (9), worker/handle_flush.rs (9), worker/handle_manifest.rs (9), \u002B14 more file(s). The bar is 30 methods; this is 53 over it, 2.77\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/mito2/src/worker.rs"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b54a5c81c8489b0ce610a80f022a7f6d89e0c10e875264cde3a11452204aeb3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/region_server.rs: FileTooLong \u2014 1379 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 879 over it, 2.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/datanode/src/region_server.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c09ca311c083be52cc9fc5017130b06f1d5bd6d784c17355dfc0cc2826ed68c4"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Error: ClassTooLong \u2014 1062 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, 3 blocks, lines 43-1451. The bar is 400 significant lines; this is 662 over it, 2.66\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/common/meta/src/error.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"8afa877bb87c716426adf7e3b3a5912562c663875bf650457b4c21a3d27b294b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Error: ClassTooLong \u2014 1055 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, 3 blocks, lines 37-1427. The bar is 400 significant lines; this is 655 over it, 2.64\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/meta-srv/src/error.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7bce9835fafb4121c675428d5140dd4bbd49be93828daa5b8aafbc863f11365"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/instance.rs: FileTooLong \u2014 1304 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 71% of them inside a single declaration: Instance (7 blocks, 126-1583). The bar is 500 significant lines; this is 804 over it, 2.61\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/frontend/src/instance.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a2dfcc14c7cebc04cfa0a3d0ec6cc3ba7c3c32633a8c93d724d13f90052169"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/cache.rs: FileTooLong \u2014 1303 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 803 over it, 2.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":"src/mito2/src/cache.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9413684a431b16872d92e312ac19852344bea0daab7a5490cc4ad13de4cf8b06"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Inserter: ClassTooLong \u2014 1038 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), 35 methods, 3 blocks, lines 97-1711. The bar is 400 significant lines; this is 638 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/operator/src/insert.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"924d9182de61c887d778eaa2af23bf9b7173ef264c6a74587e88cea0cf4e07f6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/region_request.rs: FileTooLong \u2014 1295 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 795 over it, 2.59\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/store-api/src/region_request.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"af781b8943fd807616f1ad3c65c6f49eb3084f3fb6f438cddb4e73fb2eee9855"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: batching_mode/utils.rs: FileTooLong \u2014 1288 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 788 over it, 2.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/flow/src/batching_mode/utils.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b16a5840ea362f12247b558eb04ed4ae8aef317fcb048c80a5e9612bde8d0cfa"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ParquetbenchCommand.run: MethodTooLong \u2014 run runs 255 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 155 over it, 2.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":"src/cmd/src/datanode/parquetbench.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecfa9992102baa2ab756067e81f7e479d9982d4d724ff6c4f0857221ff6d39c8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/error.rs: FileTooLong \u2014 1268 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 98% of them inside a single declaration: Error (3 blocks, 46-1706). The bar is 500 significant lines; this is 768 over it, 2.54\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/mito2/src/error.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e32c037dfbf65226b5ab757865959d42b001e2b326ad2e95a4a7f4262384167"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: rpc/ddl.rs: FileTooLong \u2014 1248 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 748 over it, 2.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/common/meta/src/rpc/ddl.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b1dd0e2b9d855b73d20d759b2c6085c2618a6fbc5a5363ee943bbe3178ae7b8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/key.rs: FileTooLong \u2014 1214 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 71% of them inside a single declaration: TableMetadataManager (2 blocks, 394-1807). The bar is 500 significant lines; this is 714 over it, 2.43\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/common/meta/src/key.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0972fa207fb514edc392765c1a73f9e990ecfbc70ed0fa47af46e28998201273"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/value.rs: FileTooLong \u2014 1198 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 698 over it, 2.40\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/datatypes/src/value.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e18a49774344b7ff417253c2842753002cbf8b69397296ebad6aaa2fda4eda"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: object_store_wal/store.rs: FileTooLong \u2014 1178 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 678 over it, 2.36\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/log-store/src/object_store_wal/store.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c49b7370d512ff1f8f026abd6e2d80b4ace1eb540d9e1f5729b9e7ac3cc89562"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Inserter.create_or_alter_tables_on_demand: MethodTooLong \u2014 create_or_alter_tables_on_demand runs 234 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 134 over it, 2.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/operator/src/insert.rs"},"region":{"startLine":1041}}}],"partialFingerprints":{"codehealthFindingId/v1":"a722d1df6a4877b7883efbbd1cfe41a48af1ea27564ca13853db3b1389914beb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Instance: ClassTooLong \u2014 929 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), 100 methods, 7 blocks, lines 126-1583. The bar is 400 significant lines; this is 529 over it, 2.32\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/frontend/src/instance.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"e74b17dc806ab623ca83f4ac7a5d1e875d356923dbdd3c33988f83c97604ed3c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/ddl_manager.rs: FileTooLong \u2014 1147 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 647 over it, 2.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/common/meta/src/ddl_manager.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c6e5b9b410ae3cbad36600c6f6967ada0e1c0ac312ead5444d2abf1f511aea6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/native_histogram.rs: FileTooLong \u2014 1144 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 37 free functions. The bar is 500 significant lines; this is 644 over it, 2.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/common/query/src/native_histogram.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dabe5234070bc1743b763c87519de2886e82c2de9357f184b6a7ff24af01bc7d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/metadata.rs: FileTooLong \u2014 1139 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: TableMeta (4 blocks, 137-1410). The bar is 500 significant lines; this is 639 over it, 2.28\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/table/src/metadata.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e46222ba8a6d0c638503ddd92b367ddb75661b4686ec6c8cfc28853e69f25aa7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/sql.rs: FileTooLong \u2014 1136 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 49 free functions. The bar is 500 significant lines; this is 636 over it, 2.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/query/src/sql.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8835e202f4a2929b68b29ae4f2d44618d88ad66273cee8e4c67f62202daf18bf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: bulk/part.rs: FileTooLong \u2014 1125 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 625 over it, 2.25\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/mito2/src/memtable/bulk/part.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"905c3faadf7e007d36d3d84e7ef277e2ad34eecebd3b5d80983fc99af400273a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/region.rs: FileTooLong \u2014 1122 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 622 over it, 2.24\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/mito2/src/region.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2da0bfa308a5064d84f7d7938dbf3cda82a5b7a74b52576e097a6e84c4f5e450"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: otlp/metrics.rs: FileTooLong \u2014 1119 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 32 free functions. The bar is 500 significant lines; this is 619 over it, 2.24\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/servers/src/otlp/metrics.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"54c0b87ea424a452135c742953bd5658901962a54ff9bd5b51fa5f58ff9e5d9c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MetricEngineInner: TooManyMethods \u2014 67 methods, declared across 13 files: engine/put.rs (18), engine/read.rs (12), engine/open.rs (10), engine/create.rs (7), \u002B9 more file(s). The bar is 30 methods; this is 37 over it, 2.23\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/metric-engine/src/engine.rs"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"e70872cafee84bebcce2a57853aabc090d71b318a4bbc3d2cd20b527cad60e94"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: ScanMetricsSet: TooManyFields \u2014 67 stored fields beside 7 methods. The bar is 30 stored fields; this is 37 over it, 2.23\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/mito2/src/read/scan_util.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cdcac2e972e752d545733be484d8d200d85ae8ab1bffb628e19765d6d223a7c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Error: ClassTooLong \u2014 886 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), 0 methods, 2 blocks, lines 34-1204. The bar is 400 significant lines; this is 486 over it, 2.22\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/operator/src/error.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2ec13e6fe8c7f1aeb1e87cff2bf5d14ff84e600aef652a9b53a9c2ad4f6aa87"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/http.rs: FileTooLong \u2014 1106 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 606 over it, 2.21\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/servers/src/http.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eba9d8d354f582fde5a7591eadb66246051cebfdcae6058daac65da5ad0902d0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/engine.rs: FileTooLong \u2014 1102 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 602 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":"src/mito2/src/engine.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb491ca649644a4a807e5c77bbd430e82d24311393a71b63063b042c2dab00b7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StartCommand.build_with: MethodTooLong \u2014 build_with runs 219 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 119 over it, 2.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":"src/cmd/src/standalone.rs"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea6ca6ef44349a5f023b8d59a04899d2a626b860869bf1f4e14d769d2715a9b3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/error.rs: FileTooLong \u2014 1086 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 98% of them inside a single declaration: Error (3 blocks, 43-1451). The bar is 500 significant lines; this is 586 over it, 2.17\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/common/meta/src/error.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"da716e2d5665935f9f1ed1924186eaef4a9459ad326a9e5fec1063e69c3d3ef8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/error.rs: FileTooLong \u2014 1086 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 97% of them inside a single declaration: Error (3 blocks, 37-1427). The bar is 500 significant lines; this is 586 over it, 2.17\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/meta-srv/src/error.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"115c2342cf777ba66fa7ed2bf786e0cf4d5b0ce7882598801da51c6704685d2d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: read/scan_util.rs: FileTooLong \u2014 1079 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 579 over it, 2.16\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/mito2/src/read/scan_util.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6972dec5960076f19007c211a9d0e3a7fe2043d8bf46bc036cc7280fd183e5a8"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TableMetadataManager: ClassTooLong \u2014 863 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), 49 methods, 2 blocks, lines 394-1807. The bar is 400 significant lines; this is 463 over it, 2.16\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/common/meta/src/key.rs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"01259957ed0e8604927f60c0f0ba1c9ff9874105ec2fabda6ec4ea22b453bbc6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TableMeta: ClassTooLong \u2014 859 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), 23 methods, 4 blocks, lines 137-1410. The bar is 400 significant lines; this is 459 over it, 2.15\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/table/src/metadata.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e90ac5ae07b161436d80da7c780f2f99b20010912ceab81dba20356369db854"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ParquetReaderBuilder: ClassTooLong \u2014 856 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), 31 methods, 2 blocks, lines 187-1413. The bar is 400 significant lines; this is 456 over it, 2.14\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/mito2/src/sst/parquet/reader.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"f90ecbbcc1dfa308ffed761e7ebf91af816d068389b582e291828aff90f12a5b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: export_v2/command.rs: FileTooLong \u2014 1059 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 559 over it, 2.12\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/src/data/export_v2/command.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d093d86b1e73f2fb09760336f78976492a28d2b542f4259d73f4264dd4cb6850"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MergeScanExec.to_stream: MethodTooLong \u2014 to_stream runs 210 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 110 over it, 2.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/query/src/dist_plan/merge_scan.rs"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bba103ee339af5c52f91ae7b941e4e89d5319cef1c808a4a1201e3f3deb2f29"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/flush.rs: FileTooLong \u2014 1044 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 544 over it, 2.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":"src/mito2/src/flush.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"59f9deca2b990984640bc466d59242180f88e8360f893a0626e789e070484de1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: memtable/bulk.rs: FileTooLong \u2014 1039 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 539 over it, 2.08\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/mito2/src/memtable/bulk.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b240b8a00fa28b310e27fb9d53d1ec623f520a66b9bdf627164ce2eb573c8e9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/worker.rs: FileTooLong \u2014 1036 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 536 over it, 2.07\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/mito2/src/worker.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"30ec127a680a98b08fad5d58ae8bbef0a4de231a4a054a8ad0fbb9a03f1fd5e6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ConcreteDataType: TooManyMethods \u2014 62 methods. The bar is 30 methods; this is 32 over it, 2.07\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/datatypes/src/data_type.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"deb89818d9b18169765bc8871f53cb349e0bb83e8e393d4e555d658f5e9db2a0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ParquetReaderBuilder.build_reader_input_inner: MethodTooLong \u2014 build_reader_input_inner runs 206 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 106 over it, 2.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/mito2/src/sst/parquet/reader.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd8f9229e6fa32661150ea0d146382c48dadc238d220652f430df7b347b08ef2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ObjbenchCommand.run: MethodTooLong \u2014 run runs 204 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 104 over it, 2.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/cmd/src/datanode/objbench.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a41a9923bfd0bda9c3abaadacbfc4af452590bc9491dedc59a5f87fc7bdafd0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: postgres/types.rs: FileTooLong \u2014 1008 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 508 over it, 2.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/servers/src/postgres/types.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6725b33c9ddd8765c8551c3043ee628631198051d069a546bda85717ac9be8f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Error: ClassTooLong \u2014 803 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), 0 methods, 2 blocks, lines 27-1039. The bar is 400 significant lines; this is 403 over it, 2.01\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/pipeline/src/error.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ffcee361bcd3a14c01669ad1c53a78dc729f7fbeecce89dc2bab920b57d819e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: flow::batching_mode::utils::rewrite_incremental_aggregate_with_sink_merge: FunctionTooLong \u2014 flow::batching_mode::utils::rewrite_incremental_aggregate_with_sink_merge runs 200 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 100 over it, 2.00\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/flow/src/batching_mode/utils.rs"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"d264da08f0f7d3befe014fc554b0a2644cb87cb47c0679579cc17bb0b19a570d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StatementExecutor.execute_sql: MethodTooLong \u2014 execute_sql runs 200 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 100 over it, 2.00\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/operator/src/statement.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c9521d90fcf9d839555a6f1b4eb7a9b6853ec6d1516d2264650060e0cecf133"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: QueryContext: TooManyMethods \u2014 59 methods. The bar is 30 methods; this is 29 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":"src/session/src/context.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec9fbf8ddb3b1388eb248e3679826d8177a0f967f3268f94dcc092aaab8e75d0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: extension_plan/histogram_fold.rs: FileTooLong \u2014 982 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 482 over it, 1.96\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/promql/src/extension_plan/histogram_fold.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6317e8e1bcf3c69ed7a13cfe7223d0bfaa00c07e645c10add6c706adac19cbc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StatementExecutor.repartition_table: MethodTooLong \u2014 repartition_table 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/operator/src/statement/ddl.rs"},"region":{"startLine":1692}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba51e93cda60d96b7ef1d2696b640164c86a2685bf27504a70c130c710f593e7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: datanode/scanbench.rs: FileTooLong \u2014 962 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 462 over it, 1.92\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/cmd/src/datanode/scanbench.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4092a5c0ccf998f73186679862a7dea1e8b4a0339b2c92b1a32a51c4a9271da9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: region/opener.rs: FileTooLong \u2014 962 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 462 over it, 1.92\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/mito2/src/region/opener.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a3de715e34befa6334d582c2a634f916ad714ae0fd9e26316506a8ef52ec4ff"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: memtable/time_series.rs: FileTooLong \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). The bar is 500 significant lines; this is 454 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/mito2/src/memtable/time_series.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8bec27eed42f0e1b71fc5c76804ab3893f926bb4f5c987cefbcf247550eea46"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Inserter.handle_bulk_insert: MethodTooLong \u2014 handle_bulk_insert 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/operator/src/bulk_insert.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aecadf5bc4a52685f971755a2e3017a3882e7b7908756542085650c92615f21"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: servers::http::jaeger::traces_from_records: FunctionTooLong \u2014 servers::http::jaeger::traces_from_records 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/servers/src/http/jaeger.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbb5fc3a2e682fb2ed195cad1ad8561ec1bdf742bcc23e6a3c5e30555ea0da58"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: range_select/plan.rs: FileTooLong \u2014 919 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 419 over it, 1.84\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/query/src/range_select/plan.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"644061e57619b12aaf52b0a6d446dfcb9c0241bb05377736d7c0effb87e16640"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dist_plan/merge_scan.rs: FileTooLong \u2014 918 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 418 over it, 1.84\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/query/src/dist_plan/merge_scan.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e0a54a7bc584e6eedf899b6b97ab03bed195082b5b2a3923eae000677288f4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/adapter.rs: FileTooLong \u2014 912 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 412 over it, 1.82\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/flow/src/adapter.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd415caf4913e9708223ab0387bfab646f95108f9fa0bf736a5642d149e65e2c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: sst/index.rs: FileTooLong \u2014 912 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 412 over it, 1.82\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/mito2/src/sst/index.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcea0424adbe15f8d42d65e0b829b278ab99c3729c1a0ecdbe1323dadbefbdca"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/error.rs: FileTooLong \u2014 910 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 97% of them inside a single declaration: Error (2 blocks, 34-1204). The bar is 500 significant lines; this is 410 over it, 1.82\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/operator/src/error.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"39710b797492d648fc77737630a1c9aa44017ad65fd4b1302097830064bc7787"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parquet/prefilter.rs: FileTooLong \u2014 909 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 409 over it, 1.82\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/mito2/src/sst/parquet/prefilter.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa45ebe3f3e91293e232c039e9c3f5fc4ebc18bd44dfd26a0768deea78a00e79"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BatchingTask: TooManyMethods \u2014 54 methods, declared across 3 files: batching_mode/task.rs (45), task/ckpt.rs (5), task/inc.rs (4). The bar is 30 methods; this is 24 over it, 1.80\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/flow/src/batching_mode/task.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e2f6da85ee50994bd4d2b91972a6677622d4e3e7ac26797dc96eca9774eaa0c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: geo/h3.rs: FileTooLong \u2014 897 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 397 over it, 1.79\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/common/function/src/scalars/geo/h3.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fd57fe4093fe81c715eb6c9420f6a3bcac8e483b48c6eb85541ef2302ba6d34"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BatchingEngine.create_flow_inner: MethodTooLong \u2014 create_flow_inner runs 175 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 75 over it, 1.75\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/flow/src/batching_mode/engine.rs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"54b502844851416825261e0bfb7c088ce9353c5667cdef8848c0140b2dad85d5"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FrontendBuilder.try_build: MethodTooLong \u2014 try_build 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/frontend/src/instance/builder.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f7f37a9f606745e809db3687b8f10b93f96802964c1881e5131a33ca005f7a8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Instance.do_query: MethodTooLong \u2014 do_query 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/frontend/src/instance/grpc.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"613cda9e633c34768353cb4a79faeca1faf471e9aa59cd13ed4b31cf87e64722"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parsers/create_parser.rs: FileTooLong \u2014 855 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 83% of them inside a single declaration: ParserContext (84-1153). The bar is 500 significant lines; this is 355 over it, 1.71\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/sql/src/parsers/create_parser.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b052348ce9e5a0f1026de33399b20c640bce65ebefbffe574486f5e593c6ab85"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/helper.rs: FileTooLong \u2014 852 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 352 over it, 1.70\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/src/helper.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"82b99ca1773d581ab3693be458931d9308482ba996f6a43c0969053bb922c1cc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/metadata.rs: FileTooLong \u2014 850 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 350 over it, 1.70\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/store-api/src/metadata.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a3418b644d6a7da3a19e7e6d7ebbc2bdceded0bda842a614a22775ed5460356"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PromPlanner.create_table_scan_plan: MethodTooLong \u2014 create_table_scan_plan runs 169 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 69 over it, 1.69\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/query/src/promql/planner.rs"},"region":{"startLine":2762}}}],"partialFingerprints":{"codehealthFindingId/v1":"f21ecbd52f8ca31cc7fd1f90e65bac54d23bf6a245ef428fe8f61fa589d23c9c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: MitoConfig: TooManyFields \u2014 50 stored fields beside 2 methods. The bar is 30 stored fields; this is 20 over it, 1.67\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/mito2/src/config.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"42e04d95bbdaa6ed561287ad8130a063e4352c532751e5207e3616f6be29fc12"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Error: ClassTooLong \u2014 664 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), 0 methods, 4 blocks, lines 41-964. The bar is 400 significant lines; this is 264 over it, 1.66\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/servers/src/error.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf58f3ed32c16e29646c44fe9b2c4769083e4addd36bfc2a9e9edca67156d4ce"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BatchingTask.gen_query_with_time_window_with_values: MethodTooLong \u2014 gen_query_with_time_window_with_values runs 166 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 66 over it, 1.66\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/flow/src/batching_mode/task.rs"},"region":{"startLine":1994}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed76c3dbee65d353d91ab16c50a78df623958f6a86c3600f4a028af351c4e6e7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/instruction.rs: FileTooLong \u2014 828 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 328 over it, 1.66\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/common/meta/src/instruction.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f4bb04b97e530d42dd5e40c4b8c78d3394c1d1bcf407f7edb4ca40e5dfc59a4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/window_sort.rs: FileTooLong \u2014 822 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 322 over it, 1.64\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/query/src/window_sort.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"997071c56a9e9a07201d9dbb638594025d8a8cfe219495de6d73f3f488f951e1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TableMetadataManager: TooManyMethods \u2014 49 methods. The bar is 30 methods; this is 19 over it, 1.63\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/common/meta/src/key.rs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"83a30a70f2f0542b824c0c8e8c005e5f7613f873d271b665a4dca3da38817fba"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MysqlResultWriter.write_recordbatch: MethodTooLong \u2014 write_recordbatch runs 163 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 63 over it, 1.63\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/servers/src/mysql/writer.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0bad4fbdf6266b0a5a659dbf7de99867df6ddeccad023438103120c6138278b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/error.rs: FileTooLong \u2014 814 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 99% of them inside a single declaration: Error (2 blocks, 27-1039). The bar is 500 significant lines; this is 314 over it, 1.63\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/pipeline/src/error.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d759d63a4280cd735315c28970390fb8c58867be9af845f92025b0828a98cba0"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BatchingEngine: ClassTooLong \u2014 646 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), 15 methods, 5 blocks, lines 67-1096. The bar is 400 significant lines; this is 246 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/flow/src/batching_mode/engine.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"46a50e795d6772c8d8fa2d4240be48b457286440084e6e35b98dd00a642a3fcc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: otlp/logs.rs: FileTooLong \u2014 806 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 306 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":"src/servers/src/otlp/logs.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d981800e58a0674d8a1782004d74af76f933ca2b06b111dbb0127699cb77de3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: gc/procedure.rs: FileTooLong \u2014 801 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 78% of them inside a single declaration: BatchGcProcedure (3 blocks, 219-1155). The bar is 500 significant lines; this is 301 over it, 1.60\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/meta-srv/src/gc/procedure.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2820808eaf178f876a04803479044635ddf9d351922323744aea803321c8de80"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MitoRegion: TooManyMethods \u2014 48 methods. The bar is 30 methods; this is 18 over it, 1.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/mito2/src/region.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"6090f32b2dfec42bfc789ad6d833f49b8685bc8ceee224eae2f80576052b6dbd"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: HeartbeatTask.start: MethodTooLong \u2014 start 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":"src/datanode/src/heartbeat.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"12958b561a03d8cd30f7123b6eb5cf441d40bd92acba64abc7f9f6932b930871"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/expr_helper.rs: FileTooLong \u2014 796 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 296 over it, 1.59\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/operator/src/expr_helper.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7adef72f190fc28c64e02ee91ede7c9f57d8870901a1c9362b9f438e9336cae"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: operator::expr_helper::to_alter_table_expr: FunctionTooLong \u2014 operator::expr_helper::to_alter_table_expr runs 159 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 59 over it, 1.59\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/operator/src/expr_helper.rs"},"region":{"startLine":811}}}],"partialFingerprints":{"codehealthFindingId/v1":"99973384e1cfebc908a42c6e746b25ca0215d13fbf06b3d576b722f5f69f43df"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: servers::http::prometheus::label_values_query: FunctionTooLong \u2014 servers::http::prometheus::label_values_query runs 159 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 59 over it, 1.59\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/servers/src/http/prometheus.rs"},"region":{"startLine":1683}}}],"partialFingerprints":{"codehealthFindingId/v1":"27f86cceca0b1cf1b10fc552455f4fb58709a9fae75bf2a511d9596f3c6a0037"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: read/series_scan.rs: FileTooLong \u2014 790 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 290 over it, 1.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/mito2/src/read/series_scan.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"52a974541ea6ff917703f9721329c43e7bf4e23ba72d5bd4de96a95200cc4b7a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RegionOpener.maybe_open: MethodTooLong \u2014 maybe_open runs 158 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 58 over it, 1.58\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/mito2/src/region/opener.rs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7725e1f1fbff043f8e97bb0a050f03c014dc1b0f713667142382cc6d2b56e03"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: http/jaeger.rs: FileTooLong \u2014 787 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 287 over it, 1.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/servers/src/http/jaeger.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eccdd8ca2627264c75505f1e576bd14b9ce3c14776806c4e91671fc489d32d94"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PromPlanner.join_on_non_field_columns: MethodTooLong \u2014 join_on_non_field_columns runs 156 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 56 over it, 1.56\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/query/src/promql/planner.rs"},"region":{"startLine":5609}}}],"partialFingerprints":{"codehealthFindingId/v1":"7858cc86854b5d9d05fb492765908f1788e0d4418a66b7ac2be80712d7289438"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BatchGcProcedure: ClassTooLong \u2014 622 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, 3 blocks, lines 219-1155. The bar is 400 significant lines; this is 222 over it, 1.56\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/meta-srv/src/gc/procedure.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"284203732f62cc128d40e78c474c6492bfd32158390559b6b42d9a665ca03886"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/part_sort.rs: FileTooLong \u2014 775 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: PartSortStream (5 blocks, 350-1239). The bar is 500 significant lines; this is 275 over it, 1.55\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/query/src/part_sort.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b69b2949ebe2b7e0c4da1d9b25fb5c5dffa8191fc72474a605431cfb3f77a2a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Error.status_code: MethodTooLong \u2014 status_code 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/mito2/src/error.rs"},"region":{"startLine":1434}}}],"partialFingerprints":{"codehealthFindingId/v1":"60166a1bef1b98e3e55e4388779d39fb6d4aa3f0edfa35ce131ad5403da9c920"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PromPlanner.prom_aggr_expr_to_plan: MethodTooLong \u2014 prom_aggr_expr_to_plan 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/query/src/promql/planner.rs"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"d72ec7eda5bb6f63334c17e50ec3dea5e7971109cc580443fee8ff5d130ae123"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LocalGcWorker: ClassTooLong \u2014 608 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, 3 blocks, lines 189-1140. The bar is 400 significant lines; this is 208 over it, 1.52\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/mito2/src/gc.rs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcfdfbc9fa3474bdba171fa5eaf8e105e2aed75e27f05ff5d06d83524217dd6f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PromPlanner.set_op_on_non_field_columns: MethodTooLong \u2014 set_op_on_non_field_columns runs 151 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 51 over it, 1.51\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/query/src/promql/planner/set_operator.rs"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"d69ef0dc356359d22fd058a571dacf5610be3f56211809f9347ca5e8169bb2a7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: batching_mode/engine.rs: FileTooLong \u2014 754 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 86% of them inside a single declaration: BatchingEngine (5 blocks, 67-1096). The bar is 500 significant lines; this is 254 over it, 1.51\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/flow/src/batching_mode/engine.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"33bf742d5cf6fffb705502fdce89fcc76a5ed85e0981861d2317f2ff30ff1b33"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: common_grpc_expr::alter::alter_expr_to_request: FunctionTooLong \u2014 common_grpc_expr::alter::alter_expr_to_request runs 150 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 50 over it, 1.50\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/common/grpc-expr/src/alter.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"e08cd8b157b56d5a8a87f5da62227245b0acb7cd5b68bbafb3ccad12d465334e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BatchingTask.execute_plan_unlocked: MethodTooLong \u2014 execute_plan_unlocked runs 150 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 50 over it, 1.50\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/flow/src/batching_mode/task.rs"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"84dcf27f891fb6691228383b87275366ac3f0cbe0b88856f594302c4138d5aff"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: compaction/twcs.rs: FileTooLong \u2014 742 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 242 over it, 1.48\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/mito2/src/compaction/twcs.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"577aa6d6e9627ccdfcad3c58c32c0a2526fff7d9c98caafe86c5778237945ac2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ParserContext.parse_alter_trigger: MethodTooLong \u2014 parse_alter_trigger 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/sql/src/parsers/alter_parser/trigger.rs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e475555fc2a3b6fb3328548eaee6949cbb8d13334530b5ed2275773c241f63a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DdlManager: ClassTooLong \u2014 591 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), 29 methods, 2 blocks, lines 110-1071. The bar is 400 significant lines; this is 191 over it, 1.48\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/common/meta/src/ddl_manager.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8f432d2c04e43eb35ab0ff419ca2b7b10209a125f143d83a30f926dbfacdd52"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: datanode/parquetbench.rs: FileTooLong \u2014 737 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 237 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/cmd/src/datanode/parquetbench.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc5c1fcd9db578ad25eb2976668fa53b2e7dda4e8766ee47164de51a34385c26"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/error.rs: FileTooLong \u2014 736 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: Error (4 blocks, 41-964). The bar is 500 significant lines; this is 236 over it, 1.47\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/servers/src/error.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8562b5c3ec4805997a496c738e254db33cbf1a552ce2c7eb16bf771178cf601b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/gc.rs: FileTooLong \u2014 735 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 83% of them inside a single declaration: LocalGcWorker (3 blocks, 189-1140). The bar is 500 significant lines; this is 235 over it, 1.47\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/mito2/src/gc.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9771f619220cc5a0e71d18960d3b6ccc61852c64895ec45fb551cfe69f590eee"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/request.rs: FileTooLong \u2014 735 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 235 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/mito2/src/request.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"49d3c32f408bc380aa91b94948eff8d0c12af1a4f1a9ba6d426b152af429cad3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/statement.rs: FileTooLong \u2014 734 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 62% of them inside a single declaration: StatementExecutor (2 blocks, 139-777). The bar is 500 significant lines; this is 234 over it, 1.47\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/operator/src/statement.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"175fa192b0f4a01d4d2b05b7081efa02b0f745b1a2338528c407fc471bbd9bb5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: promql::functions::native_histogram::native_extrapolated_rate: FunctionTooLong \u2014 promql::functions::native_histogram::native_extrapolated_rate runs 146 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 46 over it, 1.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":"src/promql/src/functions/native_histogram.rs"},"region":{"startLine":2467}}}],"partialFingerprints":{"codehealthFindingId/v1":"f08dbacc384e839cb687eb54151da2dff3dc58afbae928d04cf5157835d854c0"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RegionServerInner: ClassTooLong \u2014 583 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), 20 methods, 2 blocks, lines 1041-1966. The bar is 400 significant lines; this is 183 over it, 1.46\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/datanode/src/region_server.rs"},"region":{"startLine":1041}}}],"partialFingerprints":{"codehealthFindingId/v1":"088e64596a5107f94a08c827507cf5a5d30a97952af21c60b08293b0e26077c3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StartCommand.build_with_plugins: MethodTooLong \u2014 build_with_plugins 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":"src/cmd/src/frontend.rs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"4beea70bc61d30fee441bf78f9373a9754411522dd7d833609885aeb51ee6625"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BatchingTask.capture_recovery_windows_since: MethodTooLong \u2014 capture_recovery_windows_since 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":"src/flow/src/batching_mode/task.rs"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f08f018131fa95c4c17efd06881aac5813398158ca197384b99d0019899c8c2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Error.status_code: MethodTooLong \u2014 status_code 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":"src/meta-srv/src/error.rs"},"region":{"startLine":1165}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5c08808dcffb1b2ae3284a06be1d6a5f5cf0841b133d93caffae547a484eabb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/standalone.rs: FileTooLong \u2014 715 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 215 over it, 1.43\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/cmd/src/standalone.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"496ae391a59ca8633267fb744eabf5c82501b1252e693fb22f18f8dcf94ceba6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LocalGcWorker.do_region_gc: MethodTooLong \u2014 do_region_gc runs 143 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 43 over it, 1.43\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/mito2/src/gc.rs"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3ec377ff58651cf0e9c7ee56e800eaa030836230897704bd2e3fdccc5e314c3"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: common_telemetry::logging::init_global_logging: FunctionTooLong \u2014 common_telemetry::logging::init_global_logging runs 142 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 42 over it, 1.42\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/common/telemetry/src/logging.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf360a9b9b6be89be87330f18f7d7103fa03d012cd5646e3ed336e139b77ce84"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: mito2::flush::memtable_flat_sources: FunctionTooLong \u2014 mito2::flush::memtable_flat_sources runs 142 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 42 over it, 1.42\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/mito2/src/flush.rs"},"region":{"startLine":910}}}],"partialFingerprints":{"codehealthFindingId/v1":"e29effb37b89ca859f18bc1b4e6236793818b290a559183dea1293cd8ba7020f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/datanode.rs: FileTooLong \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). The bar is 500 significant lines; this is 206 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":"src/datanode/src/datanode.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"20cba6e52c54ee08464739a84c272e5019d1e4ae090da3555328d3d89e3e0d6b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Error.status_code: MethodTooLong \u2014 status_code 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/common/meta/src/error.rs"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"841836dcbf93503a05daa29a766d64ec0f3f93fc0b5475fde0b5e335a628fa4a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Error.status_code: MethodTooLong \u2014 status_code 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/operator/src/error.rs"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a1fd3896591567edf7f1572fbab73f463da7da9a497cddfa3aa70608cc5848e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: http/event.rs: FileTooLong \u2014 701 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 201 over it, 1.40\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/servers/src/http/event.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"05b7e30c5632559438b1c7d5d44474c62cb8dbe2cece8777f59850379b471839"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RegionServer: TooManyMethods \u2014 42 methods, declared across 3 files: src/region_server.rs (32), region_server/remote_dyn_filter.rs (6), region_server/catalog.rs (4). The bar is 30 methods; this is 12 over it, 1.40\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/datanode/src/region_server.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"32a44ea4ccbc5d29c1863d8954214e148f773ffdf746a507612b7b65ac019c99"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: transformer/greptime.rs: FileTooLong \u2014 698 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 198 over it, 1.40\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/pipeline/src/etl/transform/transformer/greptime.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aae9b066fab325f1772d2c57ed8b093e0c458ac96cd6e5cbb032242b3514b66"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: http/handler.rs: FileTooLong \u2014 698 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 198 over it, 1.40\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/servers/src/http/handler.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dedba64cc0d82488026696452ff471f5164ccd73aeff6e65731295c179d2d3e3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: statement/copy_table_from.rs: FileTooLong \u2014 696 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 196 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/operator/src/statement/copy_table_from.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"df01e0252e4610dbbb11567a5b53c01b98659aa297936f379a30efccfa125887"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: servers::http::handler::sql_analyze_stream: FunctionTooLong \u2014 servers::http::handler::sql_analyze_stream runs 139 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 39 over it, 1.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/servers/src/http/handler.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5816cbb18c838dcbb53a854498a3cd16c582aae29460e4b60c66bd9e3ad02ec"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: reconciliation/utils.rs: FileTooLong \u2014 690 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 190 over it, 1.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":"src/common/meta/src/reconciliation/utils.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ede7bf5ff69d0ce99322291e3de0e74581fefcd3476f5d640f35471062fc7d8"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: common_macro::admin_fn::build_struct: FunctionTooLong \u2014 common_macro::admin_fn::build_struct 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/common/macro/src/admin_fn.rs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"51fe8e3da360c5400a65466be2155e2b400f77511aa31206e965d99fc244e58b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Instance.ingest_trace_spans: MethodTooLong \u2014 ingest_trace_spans 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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":871}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e8f9b0273cdcefa2d9e39fdd50c82594f894f8457b2f5209a4e2e152a64b40e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: aggrs/aggr_wrapper.rs: FileTooLong \u2014 683 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 183 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":"src/common/function/src/aggrs/aggr_wrapper.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4bc9ae7a71edf20fb63023bfd3dd6eef24d6f14356d29f923a668d27cb38caa"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: adapter/flownode_impl.rs: FileTooLong \u2014 682 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 72% of them inside a single declaration: FlowDualEngine (4 blocks, 64-923). The bar is 500 significant lines; this is 182 over it, 1.36\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/flow/src/adapter/flownode_impl.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aeb33702b6f3b6ddb3bd3e53e075f0ec2ff06298b0ef70e80d97b1f98846ac4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: procedure/repartition.rs: FileTooLong \u2014 677 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 177 over it, 1.35\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/meta-srv/src/procedure/repartition.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cba46bc8fe63ad62eadd6c63758551f3174ccb103502225d19e3aa1ede3fb7d3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Value: ClassTooLong \u2014 541 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), 20 methods, 12 blocks, lines 52-1314. The bar is 400 significant lines; this is 141 over it, 1.35\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/datatypes/src/value.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"469ea9de4a1a16ced0f1b9d9b3c965514067b5f6b4b3e2d5cb66e6d9db342fef"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: procedure/region_migration.rs: FileTooLong \u2014 675 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 175 over it, 1.35\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/meta-srv/src/procedure/region_migration.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3f45e91f26e7fdde614ee1f98194eb7eb0c2870ff80251ec41b65d9396150a9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DirtyTimeWindows.gen_filter_exprs: MethodTooLong \u2014 gen_filter_exprs runs 135 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 35 over it, 1.35\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/flow/src/batching_mode/state.rs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"f14fe9c4332f729895733c6c62c4cc65c63328ccd549c5fe68472e28f8fecbb5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: servers::postgres::handler::describe_fields: FunctionTooLong \u2014 servers::postgres::handler::describe_fields runs 135 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 35 over it, 1.35\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/servers/src/postgres/handler.rs"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"28f8f40cb7e7b7d2a6869f01959542fc5610615c728d09b94383241d75cc4490"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: mysql/handler.rs: FileTooLong \u2014 673 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: MysqlInstanceShim (3 blocks, 79-725). The bar is 500 significant lines; this is 173 over it, 1.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/servers/src/mysql/handler.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a20e581e7e0f2cb808634a4d4e682a16759ffdffe03c24773085431c9a94ce9e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RangeSelect.to_execution_plan: MethodTooLong \u2014 to_execution_plan 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/query/src/range_select/plan.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a17509f4db47b16654d21b974b4923406d60935919fe4ba810e35a421fb0614"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parquet/flat_format.rs: FileTooLong \u2014 668 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 168 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":"src/mito2/src/sst/parquet/flat_format.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"de97dd2784f9d1d143abbe673f525dabe1ba2319b23543d35f6dda53bd1114ab"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MitoRegion: ClassTooLong \u2014 534 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), 48 methods, 3 blocks, lines 144-1098. The bar is 400 significant lines; this is 134 over it, 1.34\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/mito2/src/region.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"58d2312b88c4a37471d44a4b6002fa0b623d48cdd09bb32f58b11efd3b0a953a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RegionServer: ClassTooLong \u2014 533 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), 42 methods, 4 blocks, lines 114-1006. The bar is 400 significant lines; this is 133 over it, 1.33\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/datanode/src/region_server.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a443ed82b4e8319d1308e839faefe5943e497c436a7ab9c2897cd88386bb8d9"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MergeScanExec: ClassTooLong \u2014 530 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), 12 methods, 6 blocks, lines 475-1372. The bar is 400 significant lines; this is 130 over it, 1.33\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/query/src/dist_plan/merge_scan.rs"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e68073c80f6bc345e3c9bb7a3c7d915086437590d37664a3371d855e9061e76"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/database.rs: FileTooLong \u2014 651 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 151 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/client/src/database.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"94b25e9d3aa1bd1b83c730830b11a79a1543400dc0b61e0f8825730c63ac7094"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Metasrv: TooManyMethods \u2014 39 methods, declared across 3 files: src/metasrv.rs (33), service/procedure.rs (4), service/cluster.rs (2). The bar is 30 methods; this is 9 over it, 1.30\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/meta-srv/src/metasrv.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5a0c2c0c302e8269cef357548cf4f84afe8d920162272c120f724992e624972"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: operator::statement::semantic_graph::relationships::calls_branch: FunctionTooLong \u2014 operator::statement::semantic_graph::relationships::calls_branch runs 130 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 30 over it, 1.30\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/operator/src/statement/semantic_graph/relationships.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"89ca801c3f509b4c63f63efc2ae571bd979df4e367eb7e3c258b0393f12a59cf"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PartSortStream: 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), 24 methods, 5 blocks, lines 350-1239. 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/query/src/part_sort.rs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca020133f056d16691228aa47bbe031d42ad24b728fe84fb65055926bf62c199"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: common_query::native_histogram::build_histogram_array: FunctionTooLong \u2014 common_query::native_histogram::build_histogram_array 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/common/query/src/native_histogram.rs"},"region":{"startLine":1500}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5b2c14faa9396d3319bf6192447c19bd46beebacebd8d98cba3635aba09e26c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: read/flat_merge.rs: FileTooLong \u2014 641 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 141 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":"src/mito2/src/read/flat_merge.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d27ab8a4af7d9bc73f658b52ee3a8723bbd3f615819f9c5625f1ab3a4c3efe3f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: prom_remote_write/v2.rs: FileTooLong \u2014 641 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 141 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":"src/servers/src/prom_remote_write/v2.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"85065b82d0325b5249d99f0bf8ad97600addff2770b985612cf4a7c1a794eedd"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FlowDualEngine.check_flow_consistent: MethodTooLong \u2014 check_flow_consistent runs 128 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 28 over it, 1.28\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/flow/src/adapter/flownode_impl.rs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8153d82f6a1e23c8b56c3cf35b59914bab3f768308597dbec5cfda6cee91134"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PromPlanner.prom_vector_selector_to_plan: MethodTooLong \u2014 prom_vector_selector_to_plan runs 128 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 28 over it, 1.28\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/query/src/promql/planner.rs"},"region":{"startLine":1687}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed901601c53e3ca1fe797b92043610b525ae1f5d62f840ee9c995e81cfe66b52"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: planner/set_operator.rs: FileTooLong \u2014 639 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 97% of them inside a single declaration: PromPlanner (40-833). The bar is 500 significant lines; this is 139 over it, 1.28\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/query/src/promql/planner/set_operator.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f70097f366d3957f67ca42b1d2f00aa3a3877dde0b9828041c5b5836f169a591"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BatchGcProcedure.get_file_references: MethodTooLong \u2014 get_file_references runs 127 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 27 over it, 1.27\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/meta-srv/src/gc/procedure.rs"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"388c6e1a79e0ae542c76f58ff908c11dbd2d37b610ad16f194c144a78c7a7b50"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: RegionWorkerLoop: TooManyFields \u2014 38 stored fields beside 83 methods. 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/mito2/src/worker.rs"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"71aa31c0b31e0f0391d5beb93408f5d6fa24a5e93af13046f69f386f75340e8c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Timestamp: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\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/common/time/src/timestamp.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"f64a722f375c8b523f33e0869100558f411eed069003360ed63dca2ad0218da3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/metasrv.rs: FileTooLong \u2014 631 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 131 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/meta-srv/src/metasrv.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d67e18fff3ed5a96a34e651bf387223b234b1f6c867ea2aa4832662ca9d5bf2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: rds/mysql.rs: FileTooLong \u2014 630 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 130 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/common/meta/src/election/rds/mysql.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"06a6f44319a7aff25363279c131154bdc389d1bca3c9925003d7dc1f48f87642"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: meta_srv::bootstrap::metasrv_builder: FunctionTooLong \u2014 meta_srv::bootstrap::metasrv_builder 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":"src/meta-srv/src/bootstrap.rs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"7630c92f6bd8e8ca8acd92274dd41190e4a5c91e6500d90642510bc3004cb846"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Error.status_code: MethodTooLong \u2014 status_code 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":"src/pipeline/src/error.rs"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"771ac8341a2a993c994306e61da295acf16cc74cfdcaafb568e8614ad239a3e8"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: HttpServer: ClassTooLong \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), 20 methods, 4 blocks, lines 194-1705. The bar is 400 significant lines; this is 103 over it, 1.26\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/servers/src/http.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"96ea74a07c777e638a69d1e82a05d6328e547591de3e88bfb27b06cccfd169d9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parquet/file_range.rs: FileTooLong \u2014 626 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 126 over it, 1.25\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/mito2/src/sst/parquet/file_range.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c5bd4d74953e139c8bb7221f1a24e9d9590afca79202783738ce8f166a21b06"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StatementExecutor.determine_flow_type: MethodTooLong \u2014 determine_flow_type 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":"src/operator/src/statement/ddl.rs"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"269090c7b05b044f0b6425825f71a144352eeb8ad16fc198f4569ea2355b3004"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/read.rs: FileTooLong \u2014 624 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 61% of them inside a single declaration: Batch (2 blocks, 116-783). The bar is 500 significant lines; this is 124 over it, 1.25\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/mito2/src/read.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a6eab1c8e8ecff3cbe64201f7731d1ea789647f60ccb8c6e7b1ff3d13769501"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MitoEngine: ClassTooLong \u2014 498 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), 33 methods, 5 blocks, lines 280-1664. The bar is 400 significant lines; this is 98 over it, 1.25\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/mito2/src/engine.rs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4a38bbd72d9c2f1ae952b11ea6ea730095c836a20a939f24e532c1fcc3f667c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: http/prom_store.rs: FileTooLong \u2014 621 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 121 over it, 1.24\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/servers/src/http/prom_store.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"abc7682cc66e519533e2bf802cd03450d9c0cb125cb0ef26c8a57ef50da7b9b5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: datanode::utils::build_region_open_requests: FunctionTooLong \u2014 datanode::utils::build_region_open_requests 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/datanode/src/utils.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"58d24325ea9dd4c516a766cef6dbeea1e7c5b2a455b204b47036f099a486db85"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StatementExecutor.build_read_stream: MethodTooLong \u2014 build_read_stream 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/operator/src/statement/copy_table_from.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f5941b27387bbace9c2f091ca44c2ce78c58bec917e2beba53976a7d42e5bc8"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: servers::otlp::metrics::encode_histogram: FunctionTooLong \u2014 servers::otlp::metrics::encode_histogram 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/servers/src/otlp/metrics.rs"},"region":{"startLine":1216}}}],"partialFingerprints":{"codehealthFindingId/v1":"844d62957a7611a6f10dfc180f65caa0b6e6d3e9d77784f9c9c80b583d86dffe"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: NativeHistogram: ClassTooLong \u2014 495 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), 35 methods, 3 blocks, lines 235-1038. The bar is 400 significant lines; this is 95 over it, 1.24\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/common/query/src/native_histogram.rs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bf2d4944d19aca50d9b1f67fbfc593c10424dcbd3563df5366e4d2a98df41fa"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 616 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 116 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/common/recordbatch/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"69de38d2f55d73daac8b6c2e3fde93218be82bc0e1e0e364b7fe529ca5de2663"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ScanRegion.scan_input: MethodTooLong \u2014 scan_input 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/mito2/src/read/scan_region.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb62ab47f3e40e1e36671031443747333e8c9eb875afd14d7778a55f045d952d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: rds/postgres.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/common/meta/src/kv_backend/rds/postgres.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8751868e67c71042b1a425b50c57bfa9fdafb8cd72f84f78af3d6e544c966e63"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/client.rs: FileTooLong \u2014 612 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 71% of them inside a single declaration: MetaClient (6 blocks, 285-923). The bar is 500 significant lines; this is 112 over it, 1.22\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/meta-client/src/client.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"00e269bafb5781a2c355d1ce4889011000d88156a446292b378b5f43be6d134d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FlowDualEngine: ClassTooLong \u2014 488 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), 18 methods, 4 blocks, lines 64-923. The bar is 400 significant lines; this is 88 over it, 1.22\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/flow/src/adapter/flownode_impl.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"f79e0e9f5ee5a7ea7ec2c18791ddc209360424fbae12e5cfa0dc4c02ddc553d0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cmd::bin::query_regression_runner::remote::read_bench::run_read_bench: FunctionTooLong \u2014 cmd::bin::query_regression_runner::remote::read_bench::run_read_bench 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/cmd/src/bin/query_regression_runner/remote/read_bench.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f5f8bf483ae3c0ee6794531d7c942ec5dfe013cc8ba3eac330faff8eefb28aa"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StartCommand.build: MethodTooLong \u2014 build 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/cmd/src/flownode.rs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"b87374a5f9877d55c5736cacd309aea8b60da1324a363d94d889fac26cd53eed"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: promql::functions::native_histogram::mixed_range: FunctionTooLong \u2014 promql::functions::native_histogram::mixed_range 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/promql/src/functions/native_histogram.rs"},"region":{"startLine":1735}}}],"partialFingerprints":{"codehealthFindingId/v1":"def8bd3d720793e4ef8003a43b80cf4e7eb16cfdf49d61d1c762c031e28351d9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: schema/column_schema.rs: FileTooLong \u2014 608 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 108 over it, 1.22\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/datatypes/src/schema/column_schema.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d921e2360cef2573ff6c83533515b71599940b409d93d6a56fde8047e8bc9ed"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: json/builder.rs: FileTooLong \u2014 607 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 107 over it, 1.21\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/datatypes/src/vectors/json/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"605e6b7644b2ea195383547b8deafde247daf4f6909ded814aa4b75675f4f04d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SstReplaceCommand.run: MethodTooLong \u2014 run 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/cmd/src/datanode/sst_replace.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"48467b29f79773dcbde3a239000dad56ab5d9010264d8b212273eccb744927d6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Instance.metrics: MethodTooLong \u2014 metrics 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/frontend/src/instance/otlp.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab8dd348340eb0f5e665ad8a8e3b5582a460d135c29b1dd6a2e7a9c3c079e006"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: statement/export_logical_tables.rs: FileTooLong \u2014 604 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 104 over it, 1.21\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/operator/src/statement/export_logical_tables.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1224cc684c9f0087870b342640c7e621edf30510d935b3f797ab3ff9a5aa1f51"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: EntityGraphProviderImpl: ClassTooLong \u2014 483 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), 14 methods, 3 blocks, lines 77-784. The bar is 400 significant lines; this is 83 over it, 1.21\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/frontend/src/instance/entity_graph.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"c360e5387e09bc0c740c456bd1eb4cca534d3684f5779260eba2003fe838199f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ScanbenchCommand: ClassTooLong \u2014 483 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 89-1335. The bar is 400 significant lines; this is 83 over it, 1.21\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/cmd/src/datanode/scanbench.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"b00445e173b147957042232740eea98f52465320e33454fa6dafb659f5637c35"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: HistogramFoldStream: ClassTooLong \u2014 481 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, 4 blocks, lines 719-1427. The bar is 400 significant lines; this is 81 over it, 1.20\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/promql/src/extension_plan/histogram_fold.rs"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bd5137d3da179eee7d7b7184c443d417fc9f9a583d77422fb77c912451f9c19"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: Metasrv: TooManyFields \u2014 36 stored fields beside 39 methods. 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":"src/meta-srv/src/metasrv.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d476b39c953053fb8a9813c68752b7ba9690c18d0aacee2ca8b13d18bb3cfe2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ColumnSchema: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\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/datatypes/src/schema/column_schema.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7584e2f7d1649f61597b2532d64a8f75db0680f02070fb96e5f95584547009c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExtrapolatedRate.calc: MethodTooLong \u2014 calc 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/promql/src/functions/extrapolate_rate.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"718df4099c7481ecbf1aad2d9286d43a2fc13140887519de2c9bacde261308ca"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ColumnDataTypeWrapper.try_from: MethodTooLong \u2014 try_from 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":"src/api/src/helper.rs"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"05cbf0175b77d091b3801b842a261ff99e0cf6ed98a3e645707d468a1a08b020"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MemtableCompactor.merge_parts_group: MethodTooLong \u2014 merge_parts_group 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":"src/mito2/src/memtable/bulk.rs"},"region":{"startLine":1333}}}],"partialFingerprints":{"codehealthFindingId/v1":"227df325eb3defd7e84a4f82d2fd2dd91967b2d30c25e813b48e8224e8b1948f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: servers::pipeline::run_custom_pipeline: FunctionTooLong \u2014 servers::pipeline::run_custom_pipeline 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":"src/servers/src/pipeline.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6840deaf01717a46acb399d3836bde0741bfe7d34573f44e495722450b4af52"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/adapter.rs: FileTooLong \u2014 590 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 90 over it, 1.18\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/common/recordbatch/src/adapter.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b5cb8abcd3197e503f48a05376d5fcac908ebd7326f9f99c0bc870595494af5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: instance/prom_store.rs: FileTooLong \u2014 590 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 66% of them inside a single declaration: Instance (5 blocks, 201-711). The bar is 500 significant lines; this is 90 over it, 1.18\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/frontend/src/instance/prom_store.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"028b3b81b5781fb25df4dfccaa5c5511de1c05795f82700164e3b8024940ec60"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BatchingTask.start_scheduled_loop: MethodTooLong \u2014 start_scheduled_loop 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/flow/src/batching_mode/task.rs"},"region":{"startLine":1620}}}],"partialFingerprints":{"codehealthFindingId/v1":"26cfc19dd2d4832d57e7b0a9e842e4efdf9456be3a0ada489f27f7103fd333c9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StatementExecutor.copy_table_from: MethodTooLong \u2014 copy_table_from 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/operator/src/statement/copy_table_from.rs"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"22003c9c86fddb2b56026d3f34c4a055d77bfe0dc39f212393eab810a84fc678"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/local.rs: FileTooLong \u2014 588 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 88 over it, 1.18\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/common/procedure/src/local.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2df34cfd5917c8af9879ab2153fd5479661e7ff27a2c61f22ac01fd6c94859bd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: batching_mode/state.rs: FileTooLong \u2014 588 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 88 over it, 1.18\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/flow/src/batching_mode/state.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"60c90b3dbd89907f315071d049dd0e48ecc558922ca13dba6fea39161e65c611"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dist_plan/analyzer.rs: FileTooLong \u2014 586 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 86 over it, 1.17\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/query/src/dist_plan/analyzer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f04e5b2a0b882be8772b81570ae161a8a67dc5b7f850daa5da39fc22c3e230e0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ddl/create_flow.rs: FileTooLong \u2014 585 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 85 over it, 1.17\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/common/meta/src/ddl/create_flow.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dae342d4780eb8701054147351f0de26fe9f3176eaf2b99938b3d5393ef9915f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/region_engine.rs: FileTooLong \u2014 585 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 85 over it, 1.17\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/store-api/src/region_engine.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"437bc33a4e2c8305d8bfbf682e3a7a84537746b9cb87d0dfd7c930852a06cfe4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NativeHistogram: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\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/common/query/src/native_histogram.rs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"15db146f1d7c958c4875183287d9991baf16b892a5003167dc71d46d8ddc0d42"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Inserter: TooManyMethods \u2014 35 methods, declared across 2 files: src/insert.rs (32), src/bulk_insert.rs (3). The bar is 30 methods; this is 5 over it, 1.17\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/operator/src/insert.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"01f57bc952c217c0ce541f9351d898ad29e457f19d230575409019882576e0f9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: extension_plan/range_manipulate.rs: FileTooLong \u2014 580 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 80 over it, 1.16\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/promql/src/extension_plan/range_manipulate.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a01dbfb9e7df2d93589ba1e1e36dc216e2db2575dcb3c5408e4c90274fd6759a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IndexBuildTask.index_build: MethodTooLong \u2014 index_build runs 116 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 16 over it, 1.16\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/mito2/src/sst/index.rs"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca84a9d1ec5178545f94a6b9fe55136b6047eb7a3a2d3a932793a1248ddb8c93"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: operator::statement::copy_table_to::stream_to_managed_parquet_with_packed: FunctionTooLong \u2014 operator::statement::copy_table_to::stream_to_managed_parquet_with_packed runs 116 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 16 over it, 1.16\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/operator/src/statement/copy_table_to.rs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"c40806d8b8d97e8d43503fbdcca347ce3a154a879d752025762ef539f6661c3f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PredictLinear.predict_linear: MethodTooLong \u2014 predict_linear runs 116 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 16 over it, 1.16\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/promql/src/functions/predict_linear.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"499fa5cfa94a7150964b7a9ff854a4a9d96b286e0e2b34420c1c399fbb843529"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: HttpOutputWriter.write: MethodTooLong \u2014 write runs 116 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 16 over it, 1.16\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/servers/src/http/result.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"abfdba703e4089a89867d21959a66fedbfb70d189a23d1afcaaf816ffd66b8d4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: extension_plan/instant_manipulate.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). The bar is 500 significant lines; this is 76 over it, 1.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/promql/src/extension_plan/instant_manipulate.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4b3335c34a2ddc063372370230fa6e945b783ff84f62ccf8431c2c362ff1f00"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: mito2::memtable::bulk::part::convert_bulk_part: FunctionTooLong \u2014 mito2::memtable::bulk::part::convert_bulk_part runs 115 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 15 over it, 1.15\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/mito2/src/memtable/bulk/part.rs"},"region":{"startLine":991}}}],"partialFingerprints":{"codehealthFindingId/v1":"48c64f4c17e1407bf9ba09518eb33e8f02c4d6109cfc4cddf0c042af7a4cf812"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: sql::util::extract_tables_from_statement: FunctionTooLong \u2014 sql::util::extract_tables_from_statement runs 115 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 15 over it, 1.15\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/sql/src/util.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"55302f02c3a8d3633c1b66c66975c579608b0d1b1332d5905e738dd1b1e5bf86"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: StatementExecutor: ClassTooLong \u2014 457 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), 120 methods, 2 blocks, lines 139-777. The bar is 400 significant lines; this is 57 over it, 1.14\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/operator/src/statement.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"395640ace193314aae6d23a9031e7c39a33f1a817a8637f1111fba4a48b5cab8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/prom_store.rs: FileTooLong \u2014 570 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 70 over it, 1.14\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/servers/src/prom_store.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"de0f13246b18d4329d3e9d61abc4a688a62197e271564f2d4da07933536d9785"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ConcreteDataType.from: MethodTooLong \u2014 from 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/src/helper.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9d71f90273e2881480186e31422d5b39275322658fd25760a04488ec2f1e274"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InformationSchemaProvider.system_table: MethodTooLong \u2014 system_table 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/catalog/src/system_schema/information_schema.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"87a232cbc8d630591b5bf04ff4b51043f4f9acdf4a1bc1e28b9f8f7bf5d34f21"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Helper.try_into_vector: MethodTooLong \u2014 try_into_vector 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/datatypes/src/vectors/helper.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"618b3d9072d78e64406d51bef2359a75820caa3a81b6f9a8c2333a3fddb16882"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: pipeline::etl::transform::transformer::greptime::resolve_value: FunctionTooLong \u2014 pipeline::etl::transform::transformer::greptime::resolve_value 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/pipeline/src/etl/transform/transformer/greptime.rs"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"e34e52738b5a5ef0bdd8a5d5a8b43ad4d45acef51dbc4d72927f5c7b725f8645"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TableMeta.modify_column_types: MethodTooLong \u2014 modify_column_types 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/table/src/metadata.rs"},"region":{"startLine":1024}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8253aab495216e0afeaa27390ed0d1b33d079b9f945c58dcc1045c4c78aa8b7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scripts/query-regression-run.py: FileTooLong \u2014 569 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 69 over it, 1.14\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":".github/scripts/query-regression-run.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1108606c204d72260806daeeaef4c95db83f96814e2778076bf09bf37c907db1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: read/range_cache.rs: FileTooLong \u2014 569 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 69 over it, 1.14\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/mito2/src/read/range_cache.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"89ffe6c807f22b00f90ade683f486896c1d0803c2d62a5d80bf67e134ac2f688"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MysqlInstanceShim: ClassTooLong \u2014 454 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, 3 blocks, lines 79-725. The bar is 400 significant lines; this is 54 over it, 1.14\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/servers/src/mysql/handler.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbb077610545256ce3d0e6ef24a41151045830178302fc8fa931850c51195a35"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: StandaloneOptions: TooManyFields \u2014 34 stored fields beside 3 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/standalone/src/options.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd43e78d16e1a355256391063e38381f554dc6c6e596ed12ebfae887f1a6113"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PromPlanner.selector_to_series_normalize_plan: MethodTooLong \u2014 selector_to_series_normalize_plan 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/query/src/promql/planner.rs"},"region":{"startLine":2247}}}],"partialFingerprints":{"codehealthFindingId/v1":"93bd71895fbdd2ccf39a0cb6c9639b6216d79fba6b5e4932770628f2c9ca9350"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: QueryEngineState.try_new: MethodTooLong \u2014 try_new 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/query/src/query_engine/state.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"d51009357a9ee4138b51fa68c17198d33bc63d9753099396b56d4be2796c5faa"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RowWriter.write: MethodTooLong \u2014 write 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/servers/src/http/prometheus.rs"},"region":{"startLine":1062}}}],"partialFingerprints":{"codehealthFindingId/v1":"d91b8dde5b9e8ed51dc96e6ce2ddeef7e4c0d7fbf853b4cf5446158fc870d80a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: batching_mode/frontend_client.rs: FileTooLong \u2014 562 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 80% of them inside a single declaration: FrontendClient (3 blocks, 91-730). The bar is 500 significant lines; this is 62 over it, 1.12\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/flow/src/batching_mode/frontend_client.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"61e8c29d9b3f46b46dae5eb3c82a5ea3f0594326ef3f1f0491e3cad39f422d5a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/handler.rs: FileTooLong \u2014 562 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 62 over it, 1.12\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/meta-srv/src/handler.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"753ecc86bf33778bba07c302400ebc90fe5e632089f3c2a84efb262314f0ada5"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FrontendClient: ClassTooLong \u2014 449 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, 3 blocks, lines 91-730. The bar is 400 significant lines; this is 49 over it, 1.12\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/flow/src/batching_mode/frontend_client.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"97c3ee3191c4c3ef18e55a16d7aa454cd6ba65c8509eb3c2e548553b84bb0e09"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ParserContext.parse_column_extensions: MethodTooLong \u2014 parse_column_extensions runs 112 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 12 over it, 1.12\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/sql/src/parsers/create_parser.rs"},"region":{"startLine":900}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c53b1001f1e2b4230e8d9f63fcd1ec1a31eef841f31e78a2092c5d84b7b0626"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: json/value.rs: FileTooLong \u2014 559 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 59 over it, 1.12\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/datatypes/src/json/value.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f6653aeb72a8e4efa18dd935c4029e9fb226ca1446e21bfeeca213b05952c6f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Runner: ClassTooLong \u2014 447 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), 18 methods, 3 blocks, lines 137-816. The bar is 400 significant lines; this is 47 over it, 1.12\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/common/procedure/src/local/runner.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fd17d8eaaa287d8881bcf52550a79162946eda50543110e96a0142c93062713"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: sst/file.rs: FileTooLong \u2014 558 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 58 over it, 1.12\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/mito2/src/sst/file.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"47e78c2d9f805c6ea8f453d2166cbffc895eba80b29b982bceaa650c53bd43f9"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Actor: ClassTooLong \u2014 446 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), 24 methods, 2 blocks, lines 753-1495. The bar is 400 significant lines; this is 46 over it, 1.12\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/log-store/src/object_store_wal/store.rs"},"region":{"startLine":753}}}],"partialFingerprints":{"codehealthFindingId/v1":"895652407500f7ace7d1a8bff268aa10985702030267f082411377487b38573c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ScanRegion: ClassTooLong \u2014 445 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), 30 methods, 2 blocks, lines 232-889. The bar is 400 significant lines; this is 45 over it, 1.11\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/mito2/src/read/scan_region.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"45fdbc8f852c5bab1155c0d703271662454962173172f1dc4392b8fe0602ac27"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: api::helper::pb_value_to_value_ref: FunctionTooLong \u2014 api::helper::pb_value_to_value_ref runs 111 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 11 over it, 1.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/api/src/helper.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3face93e69ecfbf9244599506e55ea3f0cc6fdbdc23d0bcb41d925cf769c692"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: common_telemetry::metric::convert_metric_to_write_request: FunctionTooLong \u2014 common_telemetry::metric::convert_metric_to_write_request runs 111 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 11 over it, 1.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/common/telemetry/src/metric.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ff379ab5c274dc3ce18d06a902204a8b483959a9acd764568eca6571924ec94"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MitoEngine: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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/mito2/src/engine.rs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"87f05f7c880e95fe0c72334f02685b0e827645823a5fe4a55eeef200a1516191"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: ScanInput: TooManyFields \u2014 33 stored fields beside 25 methods. The bar is 30 stored fields; this is 3 over it, 1.10\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/mito2/src/read/scan_region.rs"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b749702069e0d42085ceda42144d7304f99b81209a5f5a7fa93485cf51ef248"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: http/loki.rs: FileTooLong \u2014 550 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 50 over it, 1.10\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/servers/src/http/loki.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d537005a38be76d86e08c21e06716e04bc3fdf7db6883b4afbc3d229a799ecef"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cli::data::import_v2::packed::validate_snapshot: FunctionTooLong \u2014 cli::data::import_v2::packed::validate_snapshot 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/cli/src/data/import_v2/packed.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7ac215af6f8484f33e42904887280bd2c401625d53673507b8bb8632d745d60"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RangePlanRewriter.rewrite_logical_plan: MethodTooLong \u2014 rewrite_logical_plan 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/query/src/range_select/plan_rewrite.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d0e377caef9a2a9caa7e8eed9075a78ef5e0e443135c7ab88507fe160abe261"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: servers::prom_remote_write::v2::decode_series_leaves: FunctionTooLong \u2014 servers::prom_remote_write::v2::decode_series_leaves 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/servers/src/prom_remote_write/v2.rs"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"559779cb9c98d0a3118e437844ad92cf8ec8cf1f829037430e3c736c9da74ed5"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RegionFlushTask: ClassTooLong \u2014 436 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), 12 methods, 2 blocks, lines 258-887. The bar is 400 significant lines; this is 36 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/mito2/src/flush.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"90eea23180d2e985ecc5677b9b754679cdee968088f5c3e286f7b9ce248f2f82"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: key/table_route.rs: FileTooLong \u2014 545 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 45 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":"src/common/meta/src/key/table_route.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee3e7a51fa01e38c69f50beb74889eb522da7644c6334d6ba4e31fa73d1a2e32"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DdlManager.submit_ddl_task: MethodTooLong \u2014 submit_ddl_task 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/common/meta/src/ddl_manager.rs"},"region":{"startLine":933}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c07c3fd8b8a0272d6fccda27d4ae7b4f48f8b2308be3e22f51774b0d374c0e5"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Value.try_from: MethodTooLong \u2014 try_from 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/datatypes/src/value.rs"},"region":{"startLine":1141}}}],"partialFingerprints":{"codehealthFindingId/v1":"d16e926a5e89d74622d75ff0e6318e884586e8da3c9d98f91a1a43388c023a0b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: QuantileOverTime.quantile_over_time: MethodTooLong \u2014 quantile_over_time 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/promql/src/functions/quantile.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"137b2d4eba80ceb4fe9c76c5a7f32a5b8ff6682f6a6097c309d20de226fe2142"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/requests.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":"src/table/src/requests.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b884a31572e88a88d5073d11c1e7170183276c8ffefd2dccf69f7311eedd0e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: read/series_candidate.rs: FileTooLong \u2014 543 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 43 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":"src/mito2/src/read/series_candidate.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"015b8eb08364d008bcb2e46152528227e6b0290d9b494cdcf338ea86490886d3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: region/supervisor.rs: FileTooLong \u2014 542 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: RegionSupervisor (2 blocks, 280-873). The bar is 500 significant lines; this is 42 over it, 1.08\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/meta-srv/src/region/supervisor.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5817c59efb1e617030e548a40efe8dd3a8ca9725d75e1de900d694209f1bccb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MetaClient: ClassTooLong \u2014 433 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), 26 methods, 6 blocks, lines 285-923. The bar is 400 significant lines; this is 33 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":"src/meta-client/src/client.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3100abbef192065959fc5b80b24d781416ffc4c740c4a5d41a6f96b23bf8100"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: frontend::instance::check_permission: FunctionTooLong \u2014 frontend::instance::check_permission 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/frontend/src/instance.rs"},"region":{"startLine":1596}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a0abc7a05bac8426048328ba7ee8bc30ab4c546f523f6ea9580513c79a7e9cf"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Instance.reconcile_trace_column_types: MethodTooLong \u2014 reconcile_trace_column_types 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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":1943}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0ece70867e1b196a2b0c6499691e3686f65097a1b49da8d2cab680d9386517a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: KafkaLogStore.read: MethodTooLong \u2014 read 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/log-store/src/kafka/log_store.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"4af97838e088947fefb436eb5a275cd85106eca738bf3d876b6e48d943cd3e19"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MitoRegion.set_role_state_gracefully: MethodTooLong \u2014 set_role_state_gracefully 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/mito2/src/region.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"619d4aa5196b87a8467386990cd68baddf86ef1ee23f19507948c2cb75b3b305"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: servers::http::prometheus::series_query: FunctionTooLong \u2014 servers::http::prometheus::series_query 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/servers/src/http/prometheus.rs"},"region":{"startLine":2356}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef4fbe20c810a40a5267f26e39b52cdf4c8c07efe32da442bd307878f47f6edd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: postgres/handler.rs: FileTooLong \u2014 538 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 38 over it, 1.08\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/servers/src/postgres/handler.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a03700ccc55df3282fbfc86fae84f0b556f7a913a99f98cd189a3f884dbd3245"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: WorkerGroup.start: MethodTooLong \u2014 start 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/mito2/src/worker.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"8becb14d74d9c277f7977c2b7087aa9acd7dc4fb1a6767f1578706fde12c83c0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Error.status_code: MethodTooLong \u2014 status_code 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/servers/src/error.rs"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"85b8ba9675ba5d720dc57e30258e3d2bdbc64eefca7c58528bdb7884fc4a2cf7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: instance/entity_graph.rs: FileTooLong \u2014 534 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: EntityGraphProviderImpl (3 blocks, 77-784). The bar is 500 significant lines; this is 34 over it, 1.07\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/frontend/src/instance/entity_graph.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"678f73fe42ac39206fd172d4df88aa825333c28154f52899c5bb38df93163db6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CacheManager: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\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/mito2/src/cache.rs"},"region":{"startLine":1020}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d37be188550f47472946324c7415b43df7e174a794d7ee05cadde91dc3850fe"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Batch: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\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/mito2/src/read.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"5be10271afd03fe59b0871589e8c1b86e0aa27efb6e1f2e1a05cd48d54b595f4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Indexer: TooManyMethods \u2014 32 methods, declared across 4 files: indexer/finish.rs (10), indexer/update.rs (9), sst/index.rs (8), indexer/abort.rs (5). The bar is 30 methods; this is 2 over it, 1.07\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/mito2/src/sst/index.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2d038af762734fe89feae15985d143b3be4d0029d36eef047c348f1140fbd86"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parquet/format.rs: FileTooLong \u2014 532 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 32 over it, 1.06\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/mito2/src/sst/parquet/format.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c3d4d5d72bc7b56c8d1110bb0c6a29bb5b5033f0e8225d4f6b051818ffa9746"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RegionManifestManager: ClassTooLong \u2014 424 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), 24 methods, 2 blocks, lines 153-833. The bar is 400 significant lines; this is 24 over it, 1.06\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/mito2/src/manifest/manager.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b7002557e4ec764fc2dc4c11583cb4c457221a8f1888d3cced28a955ee5bb09"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: metasrv/builder.rs: FileTooLong \u2014 530 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 80% of them inside a single declaration: MetasrvBuilder (3 blocks, 98-720). The bar is 500 significant lines; this is 30 over it, 1.06\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/meta-srv/src/metasrv/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c9f28cc72978eb8f242f8799f159d78d0c7112d41448db46cc261d912336a5a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DefaultSstMerger.merge_single_output: MethodTooLong \u2014 merge_single_output 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/mito2/src/compaction/compactor.rs"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1d4d1de426726e3644140531924c4c9b3396eb002a5ec6ed8504b1edbab658d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RegionOpener.create_or_open: MethodTooLong \u2014 create_or_open 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/mito2/src/region/opener.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2a91b65939ec2ed1bfd82b9f0ebaff80fab009aa0330fc0ebb1b592da89ef00"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scripts/query-regression-slash.py: FileTooLong \u2014 529 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 29 over it, 1.06\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":".github/scripts/query-regression-slash.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"825de12b27bc9c97d3a9566f1d770b9d7d489b7c973d9dbf6377e7ddb53bfc74"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: engine/put.rs: FileTooLong \u2014 529 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 96% of them inside a single declaration: MetricEngineInner (42-781). The bar is 500 significant lines; this is 29 over it, 1.06\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/metric-engine/src/engine/put.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"65238b0531b1ad0a4eaf972ca27ef7ee147735dced2c07104eeccfc7c23f1bd4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cache/file_cache.rs: FileTooLong \u2014 529 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 29 over it, 1.06\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/mito2/src/cache/file_cache.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fe9ee5ba8acf6e10419e2dceb4dfcb6bf3f627ba5588a5eceae1fce1806500d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MetasrvBuilder: ClassTooLong \u2014 422 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), 18 methods, 3 blocks, lines 98-720. The bar is 400 significant lines; this is 22 over it, 1.06\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/meta-srv/src/metasrv/builder.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b31c07d9c20bc0ed9066a28d8c052a0086c3f5dc6b0d193faa3c090ee216e6e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BatchingEngine.handle_mark_dirty_time_window: MethodTooLong \u2014 handle_mark_dirty_time_window 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/flow/src/batching_mode/engine.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b967baee60e0a6e7f0319c0e69b43d74189c6bc36ca0b061780a9cea9de1ff8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Metasrv.try_start_after_gc_check: MethodTooLong \u2014 try_start_after_gc_check 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/meta-srv/src/metasrv.rs"},"region":{"startLine":617}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6545d46db98aac9d197f0cf8001f965d9c40c53c16ea43c68ba1c21ae1f11f6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MetricEngineInner.create_logical_regions: MethodTooLong \u2014 create_logical_regions 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/metric-engine/src/engine/create.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"88720951d44fa78fff3f892dcb94a13a59cb7aad2303e689fc9018f4a8d6f1de"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MetricEngineInner.sync_region_from_region: MethodTooLong \u2014 sync_region_from_region 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/metric-engine/src/engine/sync/region.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a0d9c77c0fb059d0ffda6d66d25258d352aaf8558f8ca94ba5f2e933b40c50"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parsers/alter_parser.rs: FileTooLong \u2014 524 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 82% of them inside a single declaration: ParserContext (46-641). The bar is 500 significant lines; this is 24 over it, 1.05\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/sql/src/parsers/alter_parser.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f5c42f2b233bdcf1b09a163b831083f3a6d39769ae54af5cb749ed411ed9850"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: range_select/plan_rewrite.rs: FileTooLong \u2014 523 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 23 over it, 1.05\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/query/src/range_select/plan_rewrite.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c21c72128a3dcbc0ce2924d8dc7364cda344c8b7c82890f83d4c192834809f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: batching_mode/time_window.rs: FileTooLong \u2014 521 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 21 over it, 1.04\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/flow/src/batching_mode/time_window.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6330cd238a161870db7b9c27436ad0d6c578bb403395bdf0d49f09078b54bcad"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: compaction/compactor.rs: FileTooLong \u2014 521 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 21 over it, 1.04\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/mito2/src/compaction/compactor.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aba374bd94742827bc832bc44e3f2b96d602ff09948aa3ad9f319a1a7ee27a14"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/access_layer.rs: FileTooLong \u2014 520 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 20 over it, 1.04\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/mito2/src/access_layer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"039fb0efaf0ce81d2629ba2e3b41eecae06fc7b6efbb3d5034c4918c3a52dfa2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: common_function::scalars::math::clamp::clamp_impl: FunctionTooLong \u2014 common_function::scalars::math::clamp::clamp_impl 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/common/function/src/scalars/math/clamp.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"af3c09e9e42da33fed8eb464e4711b03126843c916710756384e85d302d69d9a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ObjectStoreLogStore.open: MethodTooLong \u2014 open 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/log-store/src/object_store_wal/store.rs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"380678137dc932e17059f039e5b8e104073a071e9e603f22d53a435e27fcc92c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: local/runner.rs: FileTooLong \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), about 86% of them inside a single declaration: Runner (3 blocks, 137-816). The bar is 500 significant lines; this is 19 over it, 1.04\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/common/procedure/src/local/runner.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"76211b859a09647ba62e40dddcf23a4e17bbb77d1e61c337c3f1c44416318292"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ConcreteDataType: ClassTooLong \u2014 415 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), 62 methods, 6 blocks, lines 46-708. The bar is 400 significant lines; this is 15 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":"src/datatypes/src/data_type.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"f49d70599b5c0ca8dd826406573d0cb98ecd4dc4727b5b81e7db83b795e400c5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ParquetReaderBuilder: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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/mito2/src/sst/parquet/reader.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"17a405df34fcfbd896423d9b2e9521672dc180b1720277d606eaec4ee82a1198"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DatanodeBuilder: ClassTooLong \u2014 413 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), 24 methods, 2 blocks, lines 187-805. The bar is 400 significant lines; this is 13 over it, 1.03\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/datanode/src/datanode.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b1c1ad39c9c544c98a8ec5ae3bdbdd8d4677eb52735d95c6625d23cc440a86f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DatanodeBuilder.build_mito_engine: MethodTooLong \u2014 build_mito_engine 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/datanode/src/datanode.rs"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"f217b7357faee6a356af33060cd8070332a52195308945e6baa80b61485f875d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BatchingTask.apply_query_result_to_state: MethodTooLong \u2014 apply_query_result_to_state 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/flow/src/batching_mode/task/ckpt.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3c4468cfb3c50cf0ae50fb6c9382af81968f16f4c6bc96d433d82192a3bf38a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RegionFlushTask.flush_memtables: MethodTooLong \u2014 flush_memtables 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/mito2/src/flush.rs"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"68db6da2b605d493d99f537684bab4a8d9c3db3c18b0dabaffe32bb5821fdc71"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SstParquetRangeFetcher.fetch_bytes_with_cache: MethodTooLong \u2014 fetch_bytes_with_cache 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/mito2/src/sst/parquet/push_decoder.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ccb7bf8e55c52a274c4f18a3105bfb503a683a7dd43c8128df6c4519c94e527"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PromPlanner.prom_topk_bottomk_to_plan: MethodTooLong \u2014 prom_topk_bottomk_to_plan 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/query/src/promql/planner.rs"},"region":{"startLine":768}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6582a5d6338e007ef2902ad050937b6988a48b483ce3b046225fdaeaabacac3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scalars/matches.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/common/function/src/scalars/matches.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a74b0af9f06b53aa783203322e9d4762095bbc4148c95acb66ef9e31d4d0db88"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Error: ClassTooLong \u2014 409 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), 0 methods, 2 blocks, lines 31-584. The bar is 400 significant lines; this is 9 over it, 1.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":"src/log-store/src/error.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb11ca53d0ac35a6623f0ee8b3a5c68b486ce3ce5f56f7969c77eb80522f2524"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RegionOpener: ClassTooLong \u2014 408 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), 18 methods, 2 blocks, lines 149-715. The bar is 400 significant lines; this is 8 over it, 1.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":"src/mito2/src/region/opener.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"9203f269c5f8966f1b71c20d2e786705efb5cc36dfcd47d066dae018c15be6ac"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CreateFlowProcedure.on_prepare: MethodTooLong \u2014 on_prepare 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/common/meta/src/ddl/create_flow.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b7151ee6ba295572c615e8142d52f2da62ce02a9d6f7fcb572e520081e0a30"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: flow::batching_mode::time_window::find_time_window_expr: FunctionTooLong \u2014 flow::batching_mode::time_window::find_time_window_expr 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/flow/src/batching_mode/time_window.rs"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"46c618905d686f618d5edfee8ca272147eca3945f0b4073caca6184839969468"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Error: ClassTooLong \u2014 407 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), 0 methods, 2 blocks, lines 32-586. The bar is 400 significant lines; this is 7 over it, 1.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":"src/datanode/src/error.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6dfc18258488d9ee0e1db5f564e5e606f3a5b8d47e82c56d779a7cdd6fd9e36"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: memtable/time_partition.rs: FileTooLong \u2014 508 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: TimePartitions (2 blocks, 205-732). The bar is 500 significant lines; this is 8 over it, 1.02\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/mito2/src/memtable/time_partition.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dced79faacf004383d91d79ed2670b9f7f5f84bbffc60bb247090d8015a28306"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parquet/writer.rs: FileTooLong \u2014 505 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 5 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/mito2/src/sst/parquet/writer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"05743cd82b5a45fc472072b5566a0242c13e0f0493291a61fc8bbcb565dd178e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: read/seq_scan.rs: FileTooLong \u2014 504 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 74% of them inside a single declaration: SeqScan (5 blocks, 61-626). The bar is 500 significant lines; this is 4 over it, 1.01\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/mito2/src/read/seq_scan.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab1dfa7000e24f5005707e204e2c158c2cde629e4604cb22ae36723ca17fd0d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DfLogicalPlanner: ClassTooLong \u2014 401 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), 14 methods, 3 blocks, lines 79-739. The bar is 400 significant lines; this is 1 over it, 1.00\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/query/src/planner.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"691ac6355d6c444993246ee8f1055f65ab376a95fcd6cb9393a849a997ee5884"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 13 shared lines): src/common/function/src/scalars/geo/geohash.rs:89-130 | src/common/function/src/scalars/geo/geohash.rs:190-250 | src/common/function/src/scalars/geo/h3.rs:97-138 | src/common/function/src/scalars/geo/h3.rs:188-229 \u2014 These 4 members are variants of one another: a block of 13 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them 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/common/function/src/scalars/geo/geohash.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"0054175a92a4a53eec401e272de067caf4bbf3779e6095e81705efb9b646f793"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (3 members, 23 shared lines): src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs:135-256 | src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:135-231 | src/meta-srv/src/procedure/repartition/group/sync_region.rs:120-212 \u2014 These 3 members are variants of one another: a block of 23 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 3 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 3 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"c63c42aa39bc444d807029d751d5c7eeee8e4c9ca1e6a09610d322942305a3d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (59 shared lines): src/servers/src/http/prometheus.rs:387-487 | src/servers/src/http/prometheus.rs:523-617 \u2014 These two members are variants of one another: 59 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/servers/src/http/prometheus.rs"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a345a2a5d55308f813955e2943282a3669e32516a4e239074359f697f5cb325"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (52 shared lines): src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs:264-354 | src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:249-337 \u2014 These two members are variants of one another: 52 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/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e75510b759a09f5993444d7c3a478a136f8186f24b9e35a95bfc9a554513b00"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (33 shared lines): src/mito2/src/engine.rs:869-913 | src/mito2/src/engine.rs:966-1029 \u2014 These two members are variants of one another: 33 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/mito2/src/engine.rs"},"region":{"startLine":869}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b8398994fa545d2a3d996fe7747f83834cb576dd9e4094c19dc4d3e38bb89c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (24 shared lines): src/common/function/src/aggrs/vector/avg.rs:87-147 | src/common/function/src/aggrs/vector/product.rs:107-147 \u2014 These two members are variants of one another: 24 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/common/function/src/aggrs/vector/avg.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3cbc4a9f0d2b337c96e22fff7f42e9f053fe61b21cc1ff43a24eca8a2ed8b97"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (22 shared lines): src/common/function/src/scalars/ip/cidr.rs:81-171 | src/common/function/src/scalars/ip/cidr.rs:219-282 \u2014 These two members are variants of one another: 22 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/common/function/src/scalars/ip/cidr.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"b06ac674e00ba84718829b8c0b3eebe07f1e9e5364e62ab57a4d5a2213399a22"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (17 members, 50\u002B identical tokens): src/pipeline/src/etl/processor/cmcd.rs:214-244 | src/pipeline/src/etl/processor/csv.rs:104-184 | src/pipeline/src/etl/processor/date.rs:93-144 | src/pipeline/src/etl/processor/decolorize.rs:69-96 | src/pipeline/src/etl/processor/digest.rs:130-192 | src/pipeline/src/etl/processor/dissect.rs:557-600 | src/pipeline/src/etl/processor/epoch.rs:137-172 | src/pipeline/src/etl/processor/gsub.rs:67-110 | src/pipeline/src/etl/processor/join.rs:54-86 | src/pipeline/src/etl/processor/json_parse.rs:39-67 | src/pipeline/src/etl/processor/json_path.rs:34-81 | src/pipeline/src/etl/processor/letter.rs:85-116 | src/pipeline/src/etl/processor/regex.rs:90-131 | src/pipeline/src/etl/processor/select.rs:64-90 | src/pipeline/src/etl/processor/simple_extract.rs:42-76 | src/pipeline/src/etl/processor/urlencoding.rs:81-117 | src/pipeline/src/etl/transform.rs:547-643 \u2014 These 17 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 17 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 17 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pipeline/src/etl/processor/cmcd.rs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"93b15b576622740234e09bcaa006a5bbb8399ebaf35fb4256ece17ff91c018db"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (11 members, 50\u002B identical tokens): src/catalog/src/system_schema/information_schema/cluster_info.rs:154-172 | src/catalog/src/system_schema/information_schema/columns.rs:175-193 | src/catalog/src/system_schema/information_schema/key_column_usage.rs:163-181 | src/catalog/src/system_schema/information_schema/partitions.rs:182-200 | src/catalog/src/system_schema/information_schema/procedure_info.rs:112-130 | src/catalog/src/system_schema/information_schema/recycle_bin.rs:133-151 | src/catalog/src/system_schema/information_schema/region_peers.rs:120-138 | src/catalog/src/system_schema/information_schema/region_statistics.rs:153-173 | src/catalog/src/system_schema/information_schema/schemata.rs:108-126 | src/catalog/src/system_schema/information_schema/statistics.rs:150-168 | src/catalog/src/system_schema/information_schema/table_constraints.rs:117-135 \u2014 These 11 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 11 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 11 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/cluster_info.rs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"efdaf79c521a5667d3c64adce6d7765400aa6e7988fc91e05e44957f362bebd9"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): src/table/src/metadata.rs:553-607 | src/table/src/metadata.rs:613-667 | src/table/src/metadata.rs:776-926 | src/table/src/metadata.rs:932-1022 | src/table/src/metadata.rs:1028-1190 | src/table/src/metadata.rs:1196-1261 | src/table/src/metadata.rs:1315-1366 | src/table/src/metadata.rs:1372-1409 \u2014 These 8 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 8 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 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/table/src/metadata.rs"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"a32d30dad13ea55ea13fdbcfe2f677060ff7bf4fd27c1166cd13949538b49c54"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): src/common/meta/src/key.rs:758-819 | src/common/meta/src/key.rs:828-901 | src/common/meta/src/key.rs:1488-1540 | src/common/meta/src/key.rs:1550-1585 | src/common/meta/src/key.rs:1705-1754 | src/common/meta/src/key/schema_name.rs:301-320 \u2014 These 6 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 6 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 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/key.rs"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"c00d88684dac75ed6baa8e9681ca44831a65aae308ba86dbbd4a174af6431d1a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): src/catalog/src/system_schema/information_schema/flow_statistics.rs:123-141 | src/catalog/src/system_schema/information_schema/flows.rs:210-228 | src/catalog/src/system_schema/information_schema/table_semantics.rs:250-268 | src/catalog/src/system_schema/information_schema/tables.rs:154-172 | src/catalog/src/system_schema/information_schema/views.rs:117-135 \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/catalog/src/system_schema/information_schema/flow_statistics.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"b24a9077382ffb8754b29363235674de560001a5304417ab78dc4ba8be541aa0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): src/cmd/src/datanode.rs:306-417 | src/cmd/src/flownode.rs:186-245 | src/cmd/src/frontend.rs:261-366 | src/cmd/src/metasrv.rs:230-318 | src/cmd/src/standalone.rs:375-447 \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/cmd/src/datanode.rs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"818b9045eddd09a20b5d75fbeb983c14070f44e5c15bacd631d16664f09958a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): src/common/function/src/scalars/vector/elem_avg.rs:35-49 | src/common/function/src/scalars/vector/elem_product.rs:48-62 | src/common/function/src/scalars/vector/elem_sum.rs:35-49 | src/common/function/src/scalars/vector/vector_dim.rs:48-62 | src/common/function/src/scalars/vector/vector_norm.rs:51-65 \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/common/function/src/scalars/vector/elem_avg.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"09e981c3c78e4eee1f0408344af65276f9deef875b2b2c710fc626e5346ba1bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): src/common/meta/src/key/schema_name.rs:282-293 | src/common/meta/src/key/table_info.rs:181-193 | src/common/meta/src/key/table_repart.rs:212-224 | src/common/meta/src/key/table_route.rs:660-672 | src/common/meta/src/key/view_info.rs:180-192 \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/common/meta/src/key/schema_name.rs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd9dd8d16892c55e49c70069913a547f5c05fd55a9a99762927f3ddc34077a80"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): src/pipeline/src/etl/processor/csv.rs:196-226 | src/pipeline/src/etl/processor/date.rs:196-227 | src/pipeline/src/etl/processor/dissect.rs:612-642 | src/pipeline/src/etl/processor/letter.rs:128-158 | src/pipeline/src/etl/processor/urlencoding.rs:129-158 \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/pipeline/src/etl/processor/csv.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"b03a9c614deace50231d6195a7b61c0a092d4c71f9bfd76adbde873a4f01def8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): src/pipeline/src/etl/processor/dissect.rs:612-642 | src/pipeline/src/etl/processor/join.rs:98-128 | src/pipeline/src/etl/processor/letter.rs:128-158 | src/pipeline/src/etl/processor/regex.rs:200-230 | src/pipeline/src/etl/processor/urlencoding.rs:129-158 \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/pipeline/src/etl/processor/dissect.rs"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b37c66254efb816760e1501a1620249b557fcacdb175b43eb57167b90c750ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): src/catalog/src/system_schema/information_schema/columns.rs:257-295 | src/catalog/src/system_schema/information_schema/key_column_usage.rs:230-281 | src/catalog/src/system_schema/information_schema/statistics.rs:229-334 | src/catalog/src/system_schema/information_schema/table_constraints.rs:172-212 \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/catalog/src/system_schema/information_schema/columns.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"033f479aa25fe0369799dfe5da89ab1996afcf90a8988a2b3a9b3771d93851aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): src/cmd/src/bin/query_regression_runner/direct.rs:359-408 | src/cmd/src/bin/query_regression_runner/remote/ingest.rs:280-307 | src/cmd/src/bin/query_regression_runner/remote/read_bench.rs:280-306 | src/cmd/src/bin/query_regression_runner/remote/storage.rs:30-82 \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/cmd/src/bin/query_regression_runner/direct.rs"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2c66b4a75f467841599eec9f84bf4678927c34b92a38bd9d9344aefd8da72f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): src/common/function/src/scalars/geo/measure.rs:64-93 | src/common/function/src/scalars/geo/measure.rs:127-166 | src/common/function/src/scalars/geo/s2.rs:82-117 | src/common/function/src/scalars/json/json_path_exists.rs:63-102 \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/common/function/src/scalars/geo/measure.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"511efdab8ac26112d872e1005cd0c497e6124a2f7ea57d46c7f5e617bfbf2f59"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): src/common/function/src/scalars/vector/vector_add.rs:62-89 | src/common/function/src/scalars/vector/vector_div.rs:63-90 | src/common/function/src/scalars/vector/vector_mul.rs:62-89 | src/common/function/src/scalars/vector/vector_sub.rs:61-88 \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/common/function/src/scalars/vector/vector_add.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"13435adb1189c1264583e6bce6efa368a6b45b55d28eea1e1d29008e3b339541"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): src/common/meta/src/key/table_info.rs:218-244 | src/common/meta/src/key/table_info.rs:250-276 | src/common/meta/src/key/view_info.rs:209-235 | src/common/meta/src/key/view_info.rs:241-267 \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/common/meta/src/key/table_info.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"41cb3529c11f28b85e41dfec44d2a3dd4d3630b5b6428001395e63a0db8b5985"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): src/common/meta/src/reconciliation/reconcile_catalog.rs:180-207 | src/common/meta/src/reconciliation/reconcile_database.rs:220-247 | src/common/meta/src/reconciliation/reconcile_logical_tables.rs:196-223 | src/common/meta/src/reconciliation/reconcile_table.rs:307-334 \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/common/meta/src/reconciliation/reconcile_catalog.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d1280956a33d9bfdc63a035a9f61bccaf4ab9b469caaa846f29d75c8dbd8d9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): src/pipeline/src/etl/processor/decolorize.rs:108-130 | src/pipeline/src/etl/processor/digest.rs:204-226 | src/pipeline/src/etl/processor/epoch.rs:184-209 | src/pipeline/src/etl/processor/gsub.rs:122-144 \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/pipeline/src/etl/processor/decolorize.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1f8ccd63d9aa9711bd180329d8ac1d749e4bb7c7b3f39370e6cd0a6dc503a37"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): src/promql/src/functions/double_exponential_smoothing.rs:137-213 | src/promql/src/functions/idelta.rs:63-166 | src/promql/src/functions/predict_linear.rs:61-213 | src/promql/src/functions/quantile.rs:56-196 \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/promql/src/functions/double_exponential_smoothing.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5039ada3c3dee2b2e6a43bc6875558cb9510d7a75f6ce84853f3721a518060c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): src/promql/src/functions/native_histogram.rs:1118-1189 | src/promql/src/functions/native_histogram.rs:1195-1289 | src/promql/src/functions/native_histogram.rs:2472-2655 | src/promql/src/functions/native_histogram.rs:2748-2849 \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/promql/src/functions/native_histogram.rs"},"region":{"startLine":1118}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7db4843c95afd76227f78849ba90f833e85faf9414448821f19d22a5243712c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 2): src/index/src/bloom_filter/reader.rs:56-91 | src/index/src/inverted_index/format/reader.rs:50-85 \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/index/src/bloom_filter/reader.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec933bab9e22963f2257c379a1ce37b50812be45d7f4f5dba1a54046c8bb24e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30\u201335 lines \u00D7 2): src/mito2/src/worker/handle_write.rs:377-411 | src/mito2/src/worker/handle_write.rs:511-540 \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/mito2/src/worker/handle_write.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e39fcb089f3e0ce89f5e0f3edbce0035315cd8d5bf953f2d96cb55a8357932d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2): src/common/function/src/aggrs/geo/encoding.rs:106-139 | src/common/function/src/aggrs/geo/geo_path.rs:128-161 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/geo/encoding.rs\u0060 and \u0060src/common/function/src/aggrs/geo/geo_path.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 121 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/common/function/src/aggrs/geo/encoding.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b04249799661befea14c1df57111cb2ae0c017b888b2198246203de8212d196"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 2): src/servers/src/otlp/logs.rs:578-609 | src/servers/src/otlp/logs.rs:701-732 \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/servers/src/otlp/logs.rs"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"61af5c3c4ae57088f9df585bae1887b8faf25d43ec5ae95c34406e36fd4e6cd5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30\u201331 lines \u00D7 2): src/mito2/src/sst/parquet/reader.rs:966-996 | src/mito2/src/sst/parquet/reader.rs:1227-1256 \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/mito2/src/sst/parquet/reader.rs"},"region":{"startLine":966}}}],"partialFingerprints":{"codehealthFindingId/v1":"842a2d883dbdc69910de7205537009aa354f30274a0f46c5cdd2aa2dc6420793"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): src/common/meta/src/key/flow.rs:237-266 | src/common/meta/src/key/flow.rs:333-362 \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/common/meta/src/key/flow.rs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e88480a3eee6c2cbfdc6197d3a0cf80c0c5261bb19c8e268ca8a0335f66d9c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27\u201330 lines \u00D7 2): src/mito2/src/worker/handle_write.rs:336-365 | src/mito2/src/worker/handle_write.rs:483-509 \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/mito2/src/worker/handle_write.rs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"93b88a6ef3cf7b2f2d3e923905c977d37b93efaa6ce2c9754d0ed45139de302c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): src/table/src/metadata.rs:578-607 | src/table/src/metadata.rs:638-667 \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/table/src/metadata.rs"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbaf4edbced29e5555619afb18ab8b1cdeb21f818e4a366d1af887bf858f5a66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): src/flow/src/batching_mode/engine.rs:228-256 | src/flow/src/batching_mode/engine.rs:371-399 \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/flow/src/batching_mode/engine.rs"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"29a07a3eca023d4093597d9bbed06717f8103d89893883e01b786ba26cbfd37d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 3): src/cmd/src/datanode/objbench.rs:259-286 | src/cmd/src/datanode/parquetbench.rs:449-476 | src/cmd/src/datanode/scanbench.rs:1239-1266 \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":"src/cmd/src/datanode/objbench.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"be05c252c1a7a113e16df3f76229ec09242917de649a6720b301d1ca69ad751e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27\u201328 lines \u00D7 3): src/promql/src/functions/native_histogram.rs:1119-1145 | src/promql/src/functions/native_histogram.rs:1196-1222 | src/promql/src/functions/native_histogram.rs:2749-2776 \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/promql/src/functions/native_histogram.rs"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"e367d6d8ac0be3b729d28ef5c745d450bb66b4783fc3a7c8428dd2d7d874e51e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): src/operator/src/expr_helper.rs:325-352 | src/query/src/sql/show_create_table.rs:118-145 \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/operator/src/expr_helper.rs"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"89cc3ef755ffff55f2f20ab1e0589d1d9089494c26c6b1b04cab7beb961b2cc4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): src/operator/src/req_convert/common.rs:375-402 | src/operator/src/req_convert/insert.rs:38-65 \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/operator/src/req_convert/common.rs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"833282efde20c3ba1bafd69a5dc1d45f7b48ba3d063082450d2b19ccd97ead01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 4): src/common/meta/src/reconciliation/reconcile_catalog.rs:181-207 | src/common/meta/src/reconciliation/reconcile_database.rs:221-247 | src/common/meta/src/reconciliation/reconcile_logical_tables.rs:197-223 | src/common/meta/src/reconciliation/reconcile_table.rs:308-334 \u2014 before extracting anything, compare \u0060src/common/meta/src/reconciliation/reconcile_catalog.rs\u0060 and \u0060src/common/meta/src/reconciliation/reconcile_database.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 49 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/common/meta/src/reconciliation/reconcile_catalog.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cde04d9fdd69c368ec69d8147004032e155566aaf00d5e4444a89e439dda186"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): src/common/telemetry/src/metric.rs:119-145 | src/common/telemetry/src/metric.rs:159-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":"src/common/telemetry/src/metric.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d2d3090d1ba8eee2b0d01bf7e22fe8a95f395d30182e95b4c6feaaace39dac8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): src/servers/src/http/prometheus.rs:413-438 | src/servers/src/http/prometheus.rs:544-569 \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/servers/src/http/prometheus.rs"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"690d0a3d7fef173253853f03522a451136275d19f492769e2bb4a37ef2c350de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): src/common/function/src/aggrs/geo/encoding.rs:221-245 | src/common/function/src/aggrs/geo/geo_path.rs:250-274 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/geo/encoding.rs\u0060 and \u0060src/common/function/src/aggrs/geo/geo_path.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 121 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/common/function/src/aggrs/geo/encoding.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"351d6a60ed166e2cb9249e8cc903fed2e9179be4a1e4442dc1a7c3052bd42563"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): src/flow/src/adapter.rs:579-603 | src/flow/src/adapter.rs:608-632 \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/flow/src/adapter.rs"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"b871c5e0bca27605b1c5a5dd9ec87972e11c4bd45201618300363e8c596d4537"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): src/cmd/src/datanode/objbench.rs:219-242 | src/cmd/src/datanode/parquetbench.rs:311-334 \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/cmd/src/datanode/objbench.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce6dab1b208dcd2a6fde46b5a4b1481bd693963c9a29924916acf2248500fe91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201323 lines \u00D7 2): src/pipeline/src/etl/processor/cmcd.rs:265-287 | src/pipeline/src/etl/processor/csv.rs:205-226 \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/pipeline/src/etl/processor/cmcd.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c10028f255c178963e16ba955d2a4a52e52f3324f0581d15403bf965b67e7a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201323 lines \u00D7 2): src/query/src/promql/planner.rs:1005-1027 | src/query/src/promql/planner.rs:1074-1094 \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/query/src/promql/planner.rs"},"region":{"startLine":1005}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0ebeec497680e8926d0a53a4d6cb1b87183c25e088f726eba349f36dfa53c49"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): src/servers/src/postgres/types.rs:1248-1270 | src/servers/src/postgres/types.rs:1351-1373 \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/servers/src/postgres/types.rs"},"region":{"startLine":1248}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b55ea6513e144997ce4c6339d0231a1348fffe1bff46a121cdfdd28eba4becb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201322 lines \u00D7 3): src/pipeline/src/etl/processor/cmcd.rs:215-236 | src/pipeline/src/etl/processor/decolorize.rs:70-90 | src/pipeline/src/etl/processor/json_parse.rs:40-59 \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":"src/pipeline/src/etl/processor/cmcd.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"da093621213985c09c29cfb36d92df190e2e0df40df5c97df0de002bc54931df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): src/cmd/src/bin/query_regression_runner/otlp.rs:330-351 | src/cmd/src/bin/query_regression_runner/remote/ingest.rs:427-448 \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/cmd/src/bin/query_regression_runner/otlp.rs"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd70b361cedd8736a162abd5f95e48c3f05969080d86ee0a0835b4539d4d3599"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): src/cmd/src/flownode.rs:187-208 | src/cmd/src/frontend.rs:262-283 \u2014 before extracting anything, compare \u0060src/cmd/src/flownode.rs\u0060 and \u0060src/cmd/src/frontend.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 50 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/cmd/src/flownode.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"03e4e2432558912f6cccbe848b1e499de2e9200b20fcfbe30268844cfd539c27"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201322 lines \u00D7 2): src/mito2/src/sst/index/bloom_filter/applier.rs:69-88 | src/mito2/src/sst/index/inverted_index/applier.rs:67-88 \u2014 \u0060src/mito2/src/sst/index/bloom_filter/applier.rs\u0060 and \u0060src/mito2/src/sst/index/inverted_index/applier.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 65 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/applier.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d6727e0dd247e4e3d765e858aeb7c3a1b64b13acaa875f99e090af287b1141b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 5): src/pipeline/src/etl/processor/dissect.rs:623-642 | src/pipeline/src/etl/processor/join.rs:108-128 | src/pipeline/src/etl/processor/letter.rs:138-158 | src/pipeline/src/etl/processor/regex.rs:210-230 | src/pipeline/src/etl/processor/urlencoding.rs:139-158 \u2014 before extracting anything, compare \u0060src/pipeline/src/etl/processor/dissect.rs\u0060 and \u0060src/pipeline/src/etl/processor/letter.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. 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/pipeline/src/etl/processor/dissect.rs"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b0ce8216e68076fff2a43d88b0e539523e9677197dabf6eda81799d545aa5b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): src/common/meta/src/election/rds/mysql.rs:734-754 | src/common/meta/src/election/rds/postgres.rs:571-591 \u2014 before extracting anything, compare \u0060src/common/meta/src/election/rds/mysql.rs\u0060 and \u0060src/common/meta/src/election/rds/postgres.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 64 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/common/meta/src/election/rds/mysql.rs"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"32b68cd580de1e5ae5c9621df7fd8e651500c69c915be3de615f29f13f235ff9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): src/common/meta/src/key/table_repart.rs:285-305 | src/common/meta/src/key/table_route.rs:749-769 \u2014 before extracting anything, compare \u0060src/common/meta/src/key/table_repart.rs\u0060 and \u0060src/common/meta/src/key/table_route.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 48 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/common/meta/src/key/table_repart.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aa5e1e257b549edebd7953976bb427a9eba97ae99a537c363e31612845b352f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): src/mito2/src/flush.rs:1582-1601 | src/mito2/src/flush.rs:1622-1642 \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/mito2/src/flush.rs"},"region":{"startLine":1582}}}],"partialFingerprints":{"codehealthFindingId/v1":"970e0b1d5564b48046e74b38c139c4df8a0ff41af8f6c2190f02627edc9733d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): src/mito2/src/read/scan_util.rs:825-845 | src/mito2/src/sst/parquet/reader.rs:1562-1582 \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/mito2/src/read/scan_util.rs"},"region":{"startLine":825}}}],"partialFingerprints":{"codehealthFindingId/v1":"260e2be9c2d72ee845ede987249422b240c6e389f18d3adbdc30727a99eb8c30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): src/query/src/promql/planner.rs:1051-1071 | src/query/src/promql/planner.rs:1118-1138 \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/query/src/promql/planner.rs"},"region":{"startLine":1051}}}],"partialFingerprints":{"codehealthFindingId/v1":"df2e26c63ccc14781c70eecaba1ce18b4bde05ae283cab6574638c9a6a688077"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201321 lines \u00D7 2): src/servers/src/otlp/metrics.rs:1307-1324 | src/servers/src/otlp/metrics.rs:1332-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":"src/servers/src/otlp/metrics.rs"},"region":{"startLine":1307}}}],"partialFingerprints":{"codehealthFindingId/v1":"51201bdf3080a5a2fc8da6a1ca439f94875bbb3c400fa800812485c2fbea3001"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): src/common/function/src/scalars/anomaly/mad.rs:101-120 | src/common/function/src/scalars/anomaly/zscore.rs:93-111 \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/common/function/src/scalars/anomaly/mad.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"af7e9cbbcb6fa3310b021ab0f28de3fc813e7adfb38f63e6945a9002998c1491"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): src/partition/src/utils/split.rs:274-293 | src/partition/src/utils/split.rs:314-332 \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/partition/src/utils/split.rs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1cc3162421c919bb6bc09cb5004b847e879cd856afd51eddd4da1c71f31ba98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): src/pipeline/src/etl/processor/json_path.rs:136-155 | src/pipeline/src/etl/processor/simple_extract.rs:107-126 \u2014 before extracting anything, compare \u0060src/pipeline/src/etl/processor/json_path.rs\u0060 and \u0060src/pipeline/src/etl/processor/simple_extract.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 40 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/pipeline/src/etl/processor/json_path.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f6b9ee6cba8eef51366c9cff90669fcf30e89fa0fb65d2eaa90a29e567d4f7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201319 lines \u00D7 3): src/mito2/src/sst/index/bloom_filter/applier.rs:344-359 | src/mito2/src/sst/index/fulltext_index/applier.rs:719-737 | src/mito2/src/sst/index/inverted_index/applier.rs:295-310 \u2014 \u0060src/mito2/src/sst/index/bloom_filter/applier.rs\u0060 and \u0060src/mito2/src/sst/index/fulltext_index/applier.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 45 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/applier.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"e72a1c24fb2fb05e56c1d3fe9fb0661288293ae61a8ecad649b23077689c4521"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/cmd/src/frontend.rs:276-294 | src/cmd/src/standalone.rs:380-398 \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/cmd/src/frontend.rs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"02f33683eb5f022b757b876ca8521b2f0aac6199a8178a0c0122e5adb8a81cbf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/common/function/src/aggrs/geo/encoding.rs:80-98 | src/common/function/src/aggrs/geo/geo_path.rs:102-120 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/geo/encoding.rs\u0060 and \u0060src/common/function/src/aggrs/geo/geo_path.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 121 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/common/function/src/aggrs/geo/encoding.rs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcaca1c9cc16dd8a58f691971f94f9266d10ce4b17555593860505ade579b209"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/common/meta/src/reconciliation/reconcile_database/reconcile_logical_tables.rs:47-65 | src/common/meta/src/reconciliation/reconcile_database/reconcile_tables.rs:45-63 \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/common/meta/src/reconciliation/reconcile_database/reconcile_logical_tables.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fada4b7568d515043d3e2993822d1e0ca75e2ea4202993587299ad56186ac12"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/common/recordbatch/src/filter.rs:542-560 | src/common/recordbatch/src/filter.rs:593-611 \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/common/recordbatch/src/filter.rs"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4fb3b76c04dd03ee2de29d6f0f486be34656d3fbdc6a089b0987714606b0afa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/flow/src/batching_mode/frontend_client.rs:385-403 | src/flow/src/batching_mode/frontend_client.rs:542-560 \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/flow/src/batching_mode/frontend_client.rs"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa52b9e3afef30e2a6f0a087c412d25e9ec3391b154c177107bcc8f66dce151a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/flow/src/batching_mode/frontend_client.rs:466-484 | src/flow/src/batching_mode/frontend_client.rs:711-729 \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/flow/src/batching_mode/frontend_client.rs"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"48f69ed76b79146c4c13e55f5c711bc5928a29587c4091a56d4896c15727038e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/flow/src/batching_mode/frontend_client.rs:615-633 | src/flow/src/batching_mode/frontend_client.rs:696-714 \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/flow/src/batching_mode/frontend_client.rs"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"2449134ceb9e4a8995c226b4e1bc94437aeae87d494c3c1d91733e543ecf956b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/frontend/src/instance/otlp/trace_ingest.rs:1151-1169 | src/frontend/src/instance/otlp/trace_ingest.rs:1329-1347 \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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":1151}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fb060212a1fce2619d89d3c6e376316cebb7ffdd8a6c4ec9fd5651b355818f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201319 lines \u00D7 2): src/mito2/src/flush.rs:1023-1041 | src/mito2/src/flush.rs:1066-1081 \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/mito2/src/flush.rs"},"region":{"startLine":1023}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1bc11fd2204984ec2473af387a5ec6a408ea98043e7c128e305037b81ca738d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/mito2/src/memtable/bulk/part_reader.rs:121-139 | src/mito2/src/memtable/bulk/part_reader.rs:149-167 \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/mito2/src/memtable/bulk/part_reader.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c332c5394c200f9ed34bb89cdd8aff7a46f20f8f6475299b447f916870eff57"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/mito2/src/memtable/bulk/part_reader.rs:194-212 | src/mito2/src/memtable/bulk/part_reader.rs:355-373 \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/mito2/src/memtable/bulk/part_reader.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d89395859e407b6ab6801f0b9bfccbb88e9271eac42c25542d4a048a9b0f597"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/servers/src/http/prometheus.rs:442-460 | src/servers/src/http/prometheus.rs:573-591 \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/servers/src/http/prometheus.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"16271b8c72dd60d6e33b3d7d1fd2df2e6a78dd1a89807275e7d9ddb26b44af9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201319 lines \u00D7 2): src/servers/src/otlp/metrics.rs:1495-1513 | src/servers/src/otlp/metrics.rs:1521-1536 \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/servers/src/otlp/metrics.rs"},"region":{"startLine":1495}}}],"partialFingerprints":{"codehealthFindingId/v1":"682ea4128e7eebdbd5b3ab105c305cc26bbdd488f5d6fa57ca14daa0de94f851"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/table/src/metadata.rs:554-572 | src/table/src/metadata.rs:614-632 \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/table/src/metadata.rs"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"af6615dbe453ee5ee38270f25f30bd15554169ed569fff8d927e56aeefd34e65"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 3): src/promql/src/functions/idelta.rs:78-95 | src/promql/src/functions/predict_linear.rs:79-96 | src/promql/src/functions/quantile.rs:77-94 \u2014 before extracting anything, compare \u0060src/promql/src/functions/idelta.rs\u0060 and \u0060src/promql/src/functions/quantile.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 42 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/promql/src/functions/idelta.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbfd215291537c6e9b9019bf90b9ccf3acf26d513bedac14d51fadfa468a0bdb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/catalog/src/system_schema/information_schema/columns.rs:317-336 | src/catalog/src/system_schema/information_schema/tables.rs:354-371 \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/catalog/src/system_schema/information_schema/columns.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"393d0acf5a090fd6122d8b839de5ff834cfebd15ce3b4159bfbe6675ba7fe763"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/cmd/src/flownode.rs:296-313 | src/cmd/src/frontend.rs:436-453 \u2014 before extracting anything, compare \u0060src/cmd/src/flownode.rs\u0060 and \u0060src/cmd/src/frontend.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 50 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/cmd/src/flownode.rs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"f29012b6f4cf34a8bfd1374d699ffe61d54842520370a05e9426a0dd5341de74"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/common/function/src/aggrs/geo/encoding.rs:181-198 | src/common/function/src/aggrs/geo/geo_path.rs:210-227 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/geo/encoding.rs\u0060 and \u0060src/common/function/src/aggrs/geo/geo_path.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 121 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/common/function/src/aggrs/geo/encoding.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef985edfcd87017c5f0a095698c3374ad482f6aa5c961a106a65ea3c3246203a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): src/common/meta/src/election/rds/mysql.rs:706-722 | src/common/meta/src/election/rds/postgres.rs:539-556 \u2014 before extracting anything, compare \u0060src/common/meta/src/election/rds/mysql.rs\u0060 and \u0060src/common/meta/src/election/rds/postgres.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 64 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/common/meta/src/election/rds/mysql.rs"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"d65b90d6f59b289a1a0468ee23f069519bfd4417c528d755e2d0de191bdf59ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/datanode/src/datanode.rs:625-642 | src/datanode/src/datanode.rs:689-706 \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/datanode/src/datanode.rs"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b45f7179da436de6206f64898408853f84a756b1f2fc4130dbb7042eba1b2d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/datanode/src/datanode.rs:668-685 | src/datanode/src/datanode.rs:719-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":"src/datanode/src/datanode.rs"},"region":{"startLine":668}}}],"partialFingerprints":{"codehealthFindingId/v1":"210951136fc6267793fa2405b70871e8489604776127ec7768c4b962365a9579"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/flow/src/batching_mode/frontend_client.rs:447-464 | src/flow/src/batching_mode/frontend_client.rs:692-709 \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/flow/src/batching_mode/frontend_client.rs"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eaaea72fe22e92fa8409114f9d198bbef8f4b3092e7a9dee303f497c6bb968f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/flow/src/heartbeat.rs:195-212 | src/frontend/src/heartbeat.rs:582-599 \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/flow/src/heartbeat.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e2426da1cef444c944c60813cf41d8170b0d576b0772f8c0f48e6070b8c43cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/meta-srv/src/gc/handler.rs:345-362 | src/meta-srv/src/gc/handler.rs:378-395 \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/meta-srv/src/gc/handler.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f372612879c34b897385e852686d0bb4c1d00c5593fe316648773430fdc4d5c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/operator/src/statement.rs:731-748 | src/operator/src/statement.rs:750-767 \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/operator/src/statement.rs"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"7222e0ce276750520ab58c976949a69896203d11b7fedb2bb3cfe9abde0bf848"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201318 lines \u00D7 2): src/servers/src/grpc/flight/stream.rs:322-339 | src/servers/src/grpc/flight/stream.rs:340-352 \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/servers/src/grpc/flight/stream.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"e021d647d5cbfb3a9e9f41d9702f20e6d82e94591610c8d7c816e2634c146d9e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): src/servers/src/otlp/trace/v1.rs:65-82 | src/servers/src/otlp/trace/v2.rs:61-77 \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/servers/src/otlp/trace/v1.rs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e1a876dc2bb04d1e4bdddc1ff70e546bf95fac782fbd8f4a028d1e36359cd32"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 5): src/servers/src/postgres/types.rs:631-646 | src/servers/src/postgres/types.rs:675-690 | src/servers/src/postgres/types.rs:722-737 | src/servers/src/postgres/types.rs:790-806 | src/servers/src/postgres/types.rs:841-857 \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":"src/servers/src/postgres/types.rs"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"125705c1ef47b22aa21127a9ecf0a2b3eb26f5183a128cd812984d95dbd8d9ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): src/mito2/src/sst/index/bloom_filter/applier.rs:70-86 | src/mito2/src/sst/index/fulltext_index/applier.rs:79-95 | src/mito2/src/sst/index/inverted_index/applier.rs:68-84 \u2014 \u0060src/mito2/src/sst/index/bloom_filter/applier.rs\u0060 and \u0060src/mito2/src/sst/index/fulltext_index/applier.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 45 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/applier.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"b76180fc55da875249e2d6a7fb6a5835e2f0cf38e174d81ddfdaf24aaf56de23"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): src/servers/src/otlp/metrics.rs:1128-1144 | src/servers/src/otlp/metrics.rs:1167-1183 | src/servers/src/otlp/metrics.rs:1426-1442 \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/servers/src/otlp/metrics.rs"},"region":{"startLine":1128}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ec1afde75f8f9460b198b0ea6aa3e686776449632461fbf182599d8908fd4a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): src/common/datasource/src/file_format/csv.rs:163-179 | src/common/datasource/src/file_format/json.rs:91-107 \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/common/datasource/src/file_format/csv.rs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"46c917a6d9e9d954ea74f9c69b1b4ccdbf350a2a5e2b9a3a735309ed167e9d26"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): src/common/function/src/scalars/geo/geohash.rs:50-66 | src/common/function/src/scalars/geo/geohash.rs:147-163 \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/common/function/src/scalars/geo/geohash.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"b61940f5b7195cc01282eb50e77eed4888e2c30d8186053da1935e40e702ae2b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): src/common/function/src/scalars/geo/h3.rs:62-78 | src/common/function/src/scalars/geo/h3.rs:153-169 \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/common/function/src/scalars/geo/h3.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cc512f7a81ca5027626d457121af27453fe694defeb8760892cc42d52558b57"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): src/common/meta/src/key/table_info.rs:260-276 | src/common/meta/src/key/view_info.rs:251-267 \u2014 before extracting anything, compare \u0060src/common/meta/src/key/table_info.rs\u0060 and \u0060src/common/meta/src/key/view_info.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 53 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/common/meta/src/key/table_info.rs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f640e2ae423d367c0d7e08cbcfa65cbf60e1f5a607858a8c90a0173b824a02a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): src/common/time/src/timestamp.rs:78-94 | src/common/time/src/timestamp.rs:114-130 \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/common/time/src/timestamp.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"b56663d892f8156caafd2fbdb486230ee8e6b3837625032f133388197d639dcd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 2): src/frontend/src/instance.rs:324-340 | src/frontend/src/instance.rs:943-957 \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/frontend/src/instance.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"5130698d1d0c08222437ee507e2a870bf2910c039025753fc65652e51ec6f2ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): src/log-store/src/raft_engine/log_store.rs:367-383 | src/log-store/src/raft_engine/log_store.rs:401-416 \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/log-store/src/raft_engine/log_store.rs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ed6ceddbaf0fae034e306a283dc4545c480707656472b331306a0c6e6e3d36d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): src/meta-client/src/client/cluster.rs:176-192 | src/meta-client/src/client/procedure.rs:210-226 \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/meta-client/src/client/cluster.rs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c8d2efd105f795fadd6c0e3b35334e0b087be0258f00583dc50086b12a90792"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): src/sql/src/parsers/create_parser/trigger.rs:392-408 | src/sql/src/parsers/create_parser/trigger.rs:433-449 \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/sql/src/parsers/create_parser/trigger.rs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc8ac3583819269267c98570f53df342a8c1c0fdbfeee1dbd998dbca52b6d6db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): src/common/meta/src/key/table_info.rs:222-237 | src/common/meta/src/key/table_info.rs:254-269 | src/common/meta/src/key/view_info.rs:213-228 | src/common/meta/src/key/view_info.rs:245-260 \u2014 before extracting anything, compare \u0060src/common/meta/src/key/table_info.rs\u0060 and \u0060src/common/meta/src/key/view_info.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 53 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/common/meta/src/key/table_info.rs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"8092538f3f36f84252ab566cd09134171787fcdec47dad4c762bc3c952491969"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 4): src/servers/src/otlp/metrics.rs:1306-1320 | src/servers/src/otlp/metrics.rs:1331-1345 | src/servers/src/otlp/metrics.rs:1495-1509 | src/servers/src/otlp/metrics.rs:1521-1536 \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/servers/src/otlp/metrics.rs"},"region":{"startLine":1306}}}],"partialFingerprints":{"codehealthFindingId/v1":"11fe3e41de7071ffaad63e7ca55b86609894a839d2ef832d2c432edd5e9d80ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): src/meta-srv/src/handler/collect_cluster_info_handler.rs:60-75 | src/meta-srv/src/handler/collect_cluster_info_handler.rs:102-117 | src/meta-srv/src/handler/collect_cluster_info_handler.rs:159-174 \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/meta-srv/src/handler/collect_cluster_info_handler.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fbc43801df36119e750c031139a4b64a43771e9ac806b36e82ccba36e1ad6a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201316 lines \u00D7 2): src/catalog/src/system_schema/information_schema/information_memory_table.rs:111-126 | src/catalog/src/system_schema/information_schema/information_memory_table.rs:130-141 \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/catalog/src/system_schema/information_schema/information_memory_table.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"474f329fe8f765abecbf283dce19576441b8f6d4aa8ecca203593373d26addb2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/cli/src/metadata/control/put/table.rs:100-115 | src/cli/src/metadata/control/put/table.rs:190-205 \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/src/metadata/control/put/table.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"94d95d7f8dcf93a5e95584db1b37631c1113a35c94ffaf200364c3d430665244"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/common/function/src/scalars/geo/h3.rs:112-127 | src/common/function/src/scalars/geo/h3.rs:203-218 \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/common/function/src/scalars/geo/h3.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"342fe7362961e4a3f848c3b2580934ddd0eb7e1e26fe9e9cfae43d5741d542f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/common/function/src/scalars/string/format.rs:68-83 | src/common/function/src/scalars/string/locate.rs:57-72 \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/common/function/src/scalars/string/format.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"dafc7e3e932906f184f71b879bfc7e43e5fc9ed8536d2e6503e1bc4147692d9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): src/common/function/src/scalars/string/insert.rs:56-70 | src/common/function/src/scalars/string/locate.rs:55-70 \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/common/function/src/scalars/string/insert.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fb759c6875e5fc7f733388de7a20648a38425530f79e4ae200680872c270396"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/common/function/src/scalars/uddsketch_calc.rs:86-101 | src/common/function/src/scalars/uddsketch_rank.rs:82-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":"src/common/function/src/scalars/uddsketch_calc.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bcf2eea7d0e89b473f9e9924995b8a9d02dc0fe8749ba104a81d91726ae3f00"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): src/common/meta/src/ddl/truncate_table.rs:199-214 | src/common/meta/src/ddl/utils.rs:406-420 \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/common/meta/src/ddl/truncate_table.rs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b1610ac0ec030d15f93bcba6589d7af2b730c08106b0c6d69a5df4bfda06e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/common/time/src/date.rs:110-125 | src/common/time/src/timestamp.rs:373-388 \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/common/time/src/date.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"6788251fb213dda47bf60dd6087bf7d6deb5a639fcf8f41cf934ee1864df579f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/datatypes/src/vectors/dictionary.rs:326-341 | src/datatypes/src/vectors/dictionary.rs:360-375 \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/datatypes/src/vectors/dictionary.rs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"4956991041b5f8e1036dbe0f8aa6f7863390243b254fecf9c0120de0ed1199e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): src/frontend/src/instance/prom_store.rs:533-548 | src/frontend/src/instance/prom_store.rs:776-790 \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/frontend/src/instance/prom_store.rs"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"23daa0ae208b2535b8cc2b9938ed4d7821bf5270037c0b81ec61047302b4a4ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 2): src/log-store/src/object_store_wal/store.rs:1253-1268 | src/log-store/src/object_store_wal/store.rs:1282-1295 \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/log-store/src/object_store_wal/store.rs"},"region":{"startLine":1253}}}],"partialFingerprints":{"codehealthFindingId/v1":"2557bd21f4be08d28c9c6c5fdc9aa5a2b369991c604917a953b2b2a59fca9188"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/mito2/src/read/compat.rs:421-436 | src/mito2/src/read/compat.rs:584-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":"src/mito2/src/read/compat.rs"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7b03238219a0c0ca73f7c36ada7dbc462b9eb40b26842629fa3c16d1d4c0f61"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): src/mito2/src/read/seq_scan.rs:349-363 | src/mito2/src/read/unordered_scan.rs:225-240 \u2014 before extracting anything, compare \u0060src/mito2/src/read/seq_scan.rs\u0060 and \u0060src/mito2/src/read/unordered_scan.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 54 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/mito2/src/read/seq_scan.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa91aefaef9a0be72bf09d959144e68c6549742f5983dfa1b0dfb8806b29844a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/mito2/src/sst/parquet/row_selection.rs:216-231 | src/mito2/src/sst/parquet/row_selection.rs:268-283 \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/mito2/src/sst/parquet/row_selection.rs"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5bdfdc6cca701a541462463f984170a79049f3175c75da296762050e3d6476f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): src/servers/src/postgres/handler.rs:592-607 | src/servers/src/postgres/handler.rs:610-624 \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/servers/src/postgres/handler.rs"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c279226c1d7b218a220f470c8407dac020ec051bea5543a06a67f08c74ad1c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/sql/src/statements/tql.rs:101-116 | src/sql/src/statements/tql.rs:136-151 \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/sql/src/statements/tql.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c77cb6f96826b3d5ab4b21cd8393b8261fc09dfbeebe6f9d24d40ac76a5ae7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): src/table/src/metadata.rs:911-926 | src/table/src/metadata.rs:1008-1022 \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/table/src/metadata.rs"},"region":{"startLine":911}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3b6ec506cc3149185224e3d5e7663659b1186deb6c4f55f39100e0622f03659"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): src/catalog/src/system_schema/information_schema/region_info.rs:72-86 | src/catalog/src/system_schema/information_schema/ssts.rs:95-109 | src/catalog/src/system_schema/information_schema/ssts.rs:155-169 | src/catalog/src/system_schema/information_schema/ssts.rs:215-229 \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/catalog/src/system_schema/information_schema/region_info.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"17f2fcf1e1256fc53a4ffee929487c0806f30c79181f8fcf66b2ac482776df7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): src/flow/src/batching_mode/frontend_client.rs:450-464 | src/flow/src/batching_mode/frontend_client.rs:614-628 | src/flow/src/batching_mode/frontend_client.rs:695-709 \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/flow/src/batching_mode/frontend_client.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e27d8cfa75977448242c3cc30c79b7394e18b785974cd39d27939207c49294"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 3): src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs:278-292 | src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:263-276 | src/meta-srv/src/procedure/repartition/group/remap_manifest.rs:144-157 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 129 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/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"eccdfee960e4658f3dd7d9ee436d1d8f25fdeef11a3afa353eecf0b9761ce903"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): src/catalog/src/system_schema/information_schema/flow_statistics.rs:183-196 | src/catalog/src/system_schema/information_schema/flows.rs:292-306 \u2014 before extracting anything, compare \u0060src/catalog/src/system_schema/information_schema/flow_statistics.rs\u0060 and \u0060src/catalog/src/system_schema/information_schema/flows.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 53 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/catalog/src/system_schema/information_schema/flow_statistics.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cdffd11c2ed2566db86a6e114437d06b20747870e523b03bb0fa560e3c5d2f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/cli/src/data/export.rs:215-229 | src/cli/src/data/import.rs:197-211 \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/src/data/export.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"8104b99584ef508d0431e4bbdf2090e261d6f045e6dc0a293cf559f352c8db54"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/common/function/src/aggrs/geo/encoding.rs:200-214 | src/common/function/src/aggrs/geo/geo_path.rs:229-243 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/geo/encoding.rs\u0060 and \u0060src/common/function/src/aggrs/geo/geo_path.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 121 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/common/function/src/aggrs/geo/encoding.rs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c8ffc75690bbd1f8357afaddfe9a20c1b5782f459a10d8d6f3fd8312ddbdbac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/common/function/src/scalars/anomaly/iqr.rs:119-133 | src/common/function/src/scalars/anomaly/mad.rs:109-123 \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/common/function/src/scalars/anomaly/iqr.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbe19f203798b426a42a4e12c3e81cc11907a0a4ea40854e0f6d285f0f7a1b31"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/common/meta/src/ddl/drop_table/executor.rs:323-337 | src/common/meta/src/ddl/drop_table/executor.rs:440-454 \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/common/meta/src/ddl/drop_table/executor.rs"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce8c903dd26385ab2fd5a1805d200af608609e68663c66f6f2fc5ec3c7aeb07d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/common/meta/src/reconciliation/reconcile_database/reconcile_logical_tables.rs:73-87 | src/common/meta/src/reconciliation/reconcile_database/reconcile_tables.rs:65-79 \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/common/meta/src/reconciliation/reconcile_database/reconcile_logical_tables.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"11a81e70c8e9b5cab543dc3271b6454966d48c0ffd681c7dfe1f53736e731269"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/common/meta/src/reconciliation/reconcile_table/resolve_column_metadata.rs:139-153 | src/common/meta/src/reconciliation/reconcile_table/resolve_column_metadata.rs:158-172 \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/common/meta/src/reconciliation/reconcile_table/resolve_column_metadata.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"277a0d647e0379774d344e17fa210ce5930021749686aab4b0320fc6f00a42fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/datatypes/src/vectors/list.rs:355-369 | src/datatypes/src/vectors/list.rs:381-395 \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/datatypes/src/vectors/list.rs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"93e45e731c159d7c132aaf0d462ed8829061dd396f8091d15e95965889b408bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): src/metric-engine/src/engine.rs:557-570 | src/store-api/src/region_engine.rs:976-990 \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/metric-engine/src/engine.rs"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"183288dc071e780fc09ecfbf75d0fe76e95b9b7cc8cf88c36fb0376575fb8123"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): src/mito2/src/cache/index/inverted_index.rs:110-124 | src/mito2/src/cache/index/inverted_index.rs:139-152 \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/mito2/src/cache/index/inverted_index.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a080ed2ca421e2fa503c6e4d8aa8b33d6f14dc183d59cddceef8c2ae71ff894"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/mito2/src/memtable/bulk.rs:692-706 | src/mito2/src/memtable/bulk.rs:1513-1527 \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/mito2/src/memtable/bulk.rs"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8a757234c130c5dd9557828e267ef02f43e8194b747c3ae67f32dc4928886bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/mito2/src/read/flat_merge.rs:863-877 | src/mito2/src/read/flat_merge.rs:1040-1054 \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/mito2/src/read/flat_merge.rs"},"region":{"startLine":863}}}],"partialFingerprints":{"codehealthFindingId/v1":"79f227d34f203c543ecc7cd0d75f554479be63027260176b50cfbf291a9d2e83"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201315 lines \u00D7 2): src/operator/src/statement/ddl.rs:2427-2439 | src/operator/src/statement/ddl.rs:2717-2731 \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/operator/src/statement/ddl.rs"},"region":{"startLine":2427}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac34a47aa2bac8c8f39a077900f98b57d146a5ed7b9f59b86e2774abf41f910f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/pipeline/src/etl/processor/decolorize.rs:116-130 | src/pipeline/src/etl/processor/digest.rs:212-226 \u2014 before extracting anything, compare \u0060src/pipeline/src/etl/processor/decolorize.rs\u0060 and \u0060src/pipeline/src/etl/processor/digest.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 52 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/pipeline/src/etl/processor/decolorize.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4e80264bdfd1cef610ae6fe0c882ed5d1684726628860d6e5b028d6b4c3a04f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201315 lines \u00D7 2): src/promql/src/extension_plan/instant_manipulate.rs:487-501 | src/promql/src/extension_plan/range_manipulate.rs:496-508 \u2014 before extracting anything, compare \u0060src/promql/src/extension_plan/instant_manipulate.rs\u0060 and \u0060src/promql/src/extension_plan/range_manipulate.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 43 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/promql/src/extension_plan/instant_manipulate.rs"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"a135f903471d454d4b871ea3ebe9e29c0be354d3ba977960c7485662d45992c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/promql/src/extension_plan/range_manipulate.rs:589-603 | src/promql/src/extension_plan/scalar_calculate.rs:496-510 \u2014 before extracting anything, compare \u0060src/promql/src/extension_plan/range_manipulate.rs\u0060 and \u0060src/promql/src/extension_plan/scalar_calculate.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 37 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/promql/src/extension_plan/range_manipulate.rs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"00ab6ddd545d63d0389ffd2caccaa3bdbd213bd6597cd20706fac0b985267448"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): src/query/src/part_sort.rs:1048-1061 | src/query/src/part_sort.rs:1111-1125 \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/query/src/part_sort.rs"},"region":{"startLine":1048}}}],"partialFingerprints":{"codehealthFindingId/v1":"02e4b7c660508436d64fdefaf55accb299d86061b1d48b3cf3daea13450a55c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/query/src/promql/planner.rs:1610-1624 | src/query/src/promql/planner.rs:1633-1647 \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/query/src/promql/planner.rs"},"region":{"startLine":1610}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa9b5f3126873b9d5b310c61b10ece26021dcc73547a129c63adea830502916b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/servers/src/http/prom_store.rs:450-464 | src/servers/src/http/prom_store.rs:578-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/servers/src/http/prom_store.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"92afa069c39588345cf45c11359c4e87bef0a000325d54a3ab0cf1d2419e10f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): src/servers/src/otlp/trace/v0.rs:68-81 | src/servers/src/otlp/trace/v1.rs:317-331 \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/servers/src/otlp/trace/v0.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"f27793af03973b0b79d611486109a152687b26388f9817335991c87984441349"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/servers/src/postgres/types.rs:1198-1212 | src/servers/src/postgres/types.rs:1267-1281 \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/servers/src/postgres/types.rs"},"region":{"startLine":1198}}}],"partialFingerprints":{"codehealthFindingId/v1":"0004abcb7e77a71b294216669826c69c6691038a2a270b5dc397a2cebdb18638"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/servers/src/postgres/types.rs:1310-1324 | src/servers/src/postgres/types.rs:1370-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":"src/servers/src/postgres/types.rs"},"region":{"startLine":1310}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb49606b288680de2ee2dd3dc216ebe8e669c0e820c39c815b37181c80b58f8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): src/sql/src/parsers/alter_parser/trigger.rs:305-319 | src/sql/src/parsers/create_parser/trigger.rs:383-396 \u2014 \u0060src/sql/src/parsers/alter_parser/trigger.rs\u0060 and \u0060src/sql/src/parsers/create_parser/trigger.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 45 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sql/src/parsers/alter_parser/trigger.rs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"a27c18d4872a7ba99ed800db28c9104b1c8921dc437e028566ff3fcf98b901c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/sql/src/parsers/alter_parser/trigger.rs:95-109 | src/sql/src/parsers/alter_parser/trigger.rs:114-128 \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/sql/src/parsers/alter_parser/trigger.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"197a0a2375b22b851aa2e69e4febb06bfd93b911f9a3d1b1d068ee215e3d1c82"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 5): src/common/function/src/scalars/vector/elem_avg.rs:36-49 | src/common/function/src/scalars/vector/elem_product.rs:49-62 | src/common/function/src/scalars/vector/elem_sum.rs:36-49 | src/common/function/src/scalars/vector/vector_dim.rs:49-62 | src/common/function/src/scalars/vector/vector_norm.rs:52-65 \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 5 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/scalars/vector/elem_avg.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"94a5a0af10ae43c674f3cca13f672ed89fa40fc0692944fcf5985ec546f28444"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): src/pipeline/src/etl/processor/decolorize.rs:109-122 | src/pipeline/src/etl/processor/digest.rs:205-218 | src/pipeline/src/etl/processor/epoch.rs:185-198 | src/pipeline/src/etl/processor/gsub.rs:123-136 \u2014 before extracting anything, compare \u0060src/pipeline/src/etl/processor/decolorize.rs\u0060 and \u0060src/pipeline/src/etl/processor/digest.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 52 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/pipeline/src/etl/processor/decolorize.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5622063eb10863e7db1a4fd65f077eb5f087ecba9641b668820457b639f76b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): src/promql/src/functions/double_exponential_smoothing.rs:165-178 | src/promql/src/functions/idelta.rs:82-95 | src/promql/src/functions/predict_linear.rs:83-96 | src/promql/src/functions/quantile.rs:81-94 \u2014 before extracting anything, compare \u0060src/promql/src/functions/idelta.rs\u0060 and \u0060src/promql/src/functions/quantile.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 42 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/promql/src/functions/double_exponential_smoothing.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3f8e79b15f5abe7586c1ce9854dedadaf5fc6394aaf79cd6b56c4da57cead9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 3): src/common/meta/src/ddl/drop_table/executor.rs:320-332 | src/common/meta/src/ddl/drop_table/executor.rs:361-374 | src/common/meta/src/ddl/drop_table/executor.rs:437-449 \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/common/meta/src/ddl/drop_table/executor.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"03371708069078019c08d55b423d42b984d6fc060f4aace9bf29d0946188557e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs:294-307 | src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:278-291 | src/meta-srv/src/procedure/repartition/group/remap_manifest.rs:159-172 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 129 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/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb3c44d49b48192b182562cdebb23ea059184383c9e120f80a43604e4e272bb0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): src/promql/src/functions/native_histogram.rs:1217-1230 | src/promql/src/functions/native_histogram.rs:2506-2519 | src/promql/src/functions/native_histogram.rs:2771-2784 \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/promql/src/functions/native_histogram.rs"},"region":{"startLine":1217}}}],"partialFingerprints":{"codehealthFindingId/v1":"af81f11356a6822d757f87dd8154e70563232f784106e42819991e3e2c0bce8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): src/sql/src/parsers/alter_parser/trigger.rs:321-334 | src/sql/src/parsers/alter_parser/trigger.rs:366-379 | src/sql/src/parsers/alter_parser/trigger.rs:411-424 \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/sql/src/parsers/alter_parser/trigger.rs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"d995e1d0295da8537388814ea73c79f203a889d821e68dbad4d14775f38b7b1e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/catalog/src/kvbackend/client.rs:233-246 | src/catalog/src/kvbackend/client.rs:253-266 \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/catalog/src/kvbackend/client.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"3de028a9ac04a8dff515df3b9d5f3c8952aa1090cc32e51d3a8a1d4cfb68c74e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): src/cmd/src/datanode/parquetbench.rs:741-753 | src/cmd/src/datanode/parquetbench.rs:811-824 \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/cmd/src/datanode/parquetbench.rs"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"264f35f8e58a6fe477e8a18f2a098e654e2554c28194235f00ddc351a3fdb500"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/common/function/src/scalars/geo/h3.rs:1213-1226 | src/common/function/src/scalars/geo/h3.rs:1279-1292 \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/common/function/src/scalars/geo/h3.rs"},"region":{"startLine":1213}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4c4b3e184eeab8e5000ce83bec509c3383b79afb1a9bec9eed1c864192afeaf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/common/function/src/scalars/ip/range.rs:220-233 | src/common/function/src/scalars/ip/range.rs:256-269 \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/common/function/src/scalars/ip/range.rs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"f895c22142d005f3cc314267a33967ef4ed5a24aba61559ceb87c73c7a988db8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/common/meta/src/election/rds/mysql.rs:935-948 | src/common/meta/src/election/rds/postgres.rs:784-797 \u2014 before extracting anything, compare \u0060src/common/meta/src/election/rds/mysql.rs\u0060 and \u0060src/common/meta/src/election/rds/postgres.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 64 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/common/meta/src/election/rds/mysql.rs"},"region":{"startLine":935}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eee3e9c90150a169afa6949a7890ec6b159dab71838004587e4f52aab985407"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/common/meta/src/key/flow/table_flow.rs:230-243 | src/common/meta/src/key/flow/table_flow.rs:268-281 \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/common/meta/src/key/flow/table_flow.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"e46bd39218fa43a48573426a55498482387e4086351d6cf4bc20adfd9411f96e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): src/common/meta/src/key.rs:957-970 | src/common/meta/src/key.rs:1673-1684 \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/common/meta/src/key.rs"},"region":{"startLine":957}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0e12135cc2dffc097d0611bcc0912d8ab4b78f17a13265f847f582854773e86"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs:82-93 | src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:83-96 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 129 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/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"b659e43e623b25b54773f2ddc1b3dc02de3f08bd5026494667ec84955343ab2d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:202-214 | src/meta-srv/src/procedure/repartition/group/sync_region.rs:182-195 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/sync_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 135 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/meta-srv/src/procedure/repartition/group/enter_staging_region.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"90371b93c62078e6a19b483d185bfd4cb9d9442931c240b6d299f0e94ea90d3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): src/meta-srv/src/procedure/repartition.rs:763-775 | src/meta-srv/src/procedure/repartition/group.rs:223-236 \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/meta-srv/src/procedure/repartition.rs"},"region":{"startLine":763}}}],"partialFingerprints":{"codehealthFindingId/v1":"4de8ebcd35a79ac5ea18653a1790091bde3511bb84e8e7924307f02eb3c1ae69"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): src/mito2/src/cache/index/bloom_filter_index.rs:132-145 | src/mito2/src/cache/index/bloom_filter_index.rs:163-175 \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/mito2/src/cache/index/bloom_filter_index.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb6c46d3254541f253617eaf73b982e30b0526cbf84255f30935623b7f68304"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/mito2/src/engine.rs:886-899 | src/mito2/src/engine.rs:1002-1015 \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/mito2/src/engine.rs"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a6a614f530c6e05494818ce0d58b74f95bf938db177a469c3df878eebc1ce0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/mito2/src/engine.rs:1562-1575 | src/mito2/src/engine.rs:1582-1595 \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/mito2/src/engine.rs"},"region":{"startLine":1562}}}],"partialFingerprints":{"codehealthFindingId/v1":"94480bdbd66010ab633d2386dc355ad427ca5661a8a9a1a465c37a8a1b73239d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/mito2/src/sst/index/bloom_filter/creator.rs:311-324 | src/mito2/src/sst/index/inverted_index/creator.rs:193-206 \u2014 \u0060src/mito2/src/sst/index/bloom_filter/creator.rs\u0060 and \u0060src/mito2/src/sst/index/inverted_index/creator.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 63 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/creator.rs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"d570abf4a48eeb972fb918aa632ecf561f76d31c81855abdec5759d6a0d76895"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/mito2/src/sst/parquet/file_range.rs:337-350 | src/mito2/src/sst/parquet/file_range.rs:371-384 \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/mito2/src/sst/parquet/file_range.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"81f66ada485e85a0959e0ccf4a5d0ec996290ae4be6d8f097c2b5afb4788967a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): src/pipeline/src/etl/processor/simple_extract.rs:51-62 | src/pipeline/src/etl/processor/urlencoding.rs:90-103 \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/pipeline/src/etl/processor/simple_extract.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1e85606c5b58913b7c12a17294f564a7c079736be07aa803883e5d811508e4f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/servers/src/http/prometheus.rs:398-411 | src/servers/src/http/prometheus.rs:529-542 \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/servers/src/http/prometheus.rs"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"109572303287df8ec78fc17a8ce4f531e1815ad9218c35682f85e1d5d707c0bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/servers/src/http.rs:1356-1369 | src/servers/src/http.rs:1391-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":"src/servers/src/http.rs"},"region":{"startLine":1356}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e3f996c13c7e948643838567ffff7c7d4c3a01ff92aa88878ba5461e5e24ed3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/store-api/src/metadata.rs:899-912 | src/store-api/src/metadata.rs:940-953 \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/store-api/src/metadata.rs"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"a93cc18546fc3ff0bf8d6c8a21095a5de6ab6b78c9bdc3cd0aa3b51844c121a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 17): src/pipeline/src/etl/processor/cmcd.rs:219-230 | src/pipeline/src/etl/processor/csv.rs:114-124 | src/pipeline/src/etl/processor/date.rs:101-113 | src/pipeline/src/etl/processor/decolorize.rs:74-85 | src/pipeline/src/etl/processor/digest.rs:136-147 | src/pipeline/src/etl/processor/dissect.rs:564-575 | src/pipeline/src/etl/processor/epoch.rs:143-154 | src/pipeline/src/etl/processor/gsub.rs:74-85 | src/pipeline/src/etl/processor/join.rs:60-71 | src/pipeline/src/etl/processor/json_parse.rs:44-54 | src/pipeline/src/etl/processor/json_path.rs:41-52 | src/pipeline/src/etl/processor/letter.rs:91-101 | src/pipeline/src/etl/processor/regex.rs:96-106 | src/pipeline/src/etl/processor/select.rs:69-79 | src/pipeline/src/etl/processor/simple_extract.rs:48-58 | src/pipeline/src/etl/processor/urlencoding.rs:87-98 | src/pipeline/src/etl/transform.rs:558-570 \u2014 before extracting anything, compare \u0060src/pipeline/src/etl/processor/decolorize.rs\u0060 and \u0060src/pipeline/src/etl/processor/digest.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 52 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/pipeline/src/etl/processor/cmcd.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"3acfabf905d8f3da602b06aa9a80ce5f313fa9a86b295a4fb927f9f02a8ecb30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): src/mito2/src/manifest/manager.rs:309-321 | src/mito2/src/manifest/manager.rs:470-482 | src/mito2/src/manifest/manager.rs:601-613 \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/mito2/src/manifest/manager.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"c357189c3e7cec29754861ef5bb91d462ec48a5e7fe691eb3a3f165a940ccb70"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201313 lines \u00D7 2): src/catalog/src/system_schema/information_schema/region_peers.rs:215-222 | src/catalog/src/system_schema/information_schema/tables.rs:292-304 \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/catalog/src/system_schema/information_schema/region_peers.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"096b9e388d5dcb4223a2b7372515cb9906dcaf276f6c6136fbc48b50ea6c012a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/catalog/src/system_schema/information_schema/table_semantics.rs:251-263 | src/catalog/src/system_schema/information_schema/tables.rs:155-167 \u2014 before extracting anything, compare \u0060src/catalog/src/system_schema/information_schema/table_semantics.rs\u0060 and \u0060src/catalog/src/system_schema/information_schema/tables.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 35 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/catalog/src/system_schema/information_schema/table_semantics.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee91310d25a602dd1cda0760549535c540b2432f73acf09bc1a249d8299a8ec0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/catalog/src/system_schema/information_schema/table_semantics.rs:419-431 | src/catalog/src/system_schema/information_schema/tables.rs:456-468 \u2014 before extracting anything, compare \u0060src/catalog/src/system_schema/information_schema/table_semantics.rs\u0060 and \u0060src/catalog/src/system_schema/information_schema/tables.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 35 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/catalog/src/system_schema/information_schema/table_semantics.rs"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"6aa2c6d5d15a9fae5283cd501506e0f148bc5aeccd751bfc29e3a93647790a6c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/common/datasource/src/file_format/csv.rs:78-90 | src/common/datasource/src/file_format/json.rs:56-68 \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/common/datasource/src/file_format/csv.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"14fafd67b263c097dcf57604e957d00c35351d0554de051c723a86e9a4e98c28"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): src/common/datasource/src/packed_writer.rs:160-171 | src/common/datasource/src/parquet_writer.rs:249-261 \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/common/datasource/src/packed_writer.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fc356a0c0818605fd7dc94d4a4beb38a10af80e9a87e166b24d3a923f1dcc05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/common/function/src/aggrs/vector/product.rs:153-165 | src/common/function/src/aggrs/vector/sum.rs:152-164 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/vector/product.rs\u0060 and \u0060src/common/function/src/aggrs/vector/sum.rs\u0060 as WHOLE FILES: this scan already matched 4 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. 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/common/function/src/aggrs/vector/product.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"1671e2c6fdbef4c62f3b7148679ae5ba70589b999922856f675fadd48629940c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/common/meta/src/cache/container.rs:254-266 | src/common/meta/src/cache/container.rs:330-342 \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/common/meta/src/cache/container.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"469ab929138bbdac1407f1c462949dae659dc057a8aff911c5c6a4e0e85be194"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/common/meta/src/ddl/create_flow.rs:598-610 | src/flow/src/batching_mode/eval_schedule.rs:306-318 \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/common/meta/src/ddl/create_flow.rs"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"f667ab3a92b9dd70f9e8dbaca1e1eed84356ca55c7b77db03284b87ac599663f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/common/meta/src/key/flow/flow_route.rs:248-260 | src/common/meta/src/key/flow/table_flow.rs:291-303 \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/common/meta/src/key/flow/flow_route.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"b99836776973cf6d56fa00aa8489adfadd65f583be953ef33c6b4409cbf8453a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/common/meta/src/key.rs:796-808 | src/common/meta/src/key.rs:878-890 \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/common/meta/src/key.rs"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"302c72dc7ad7386919c82ed2916a258710d5d0e7d155456e16a3c51ecb1bb917"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/common/meta/src/key.rs:790-802 | src/common/meta/src/key.rs:1732-1744 \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/common/meta/src/key.rs"},"region":{"startLine":790}}}],"partialFingerprints":{"codehealthFindingId/v1":"67f9861def5b9147e6d2381f797873132aea900662de804dc99e962cd5e1228c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/common/meta/src/kv_backend/rds/mysql.rs:143-155 | src/common/meta/src/kv_backend/rds/postgres.rs:175-187 \u2014 before extracting anything, compare \u0060src/common/meta/src/kv_backend/rds/mysql.rs\u0060 and \u0060src/common/meta/src/kv_backend/rds/postgres.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 43 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/common/meta/src/kv_backend/rds/mysql.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"e446da77e0fac3f0b338dade55b6a0f2bed4789ceb7a4fda3e527e8d70ceb307"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/common/meta/src/kv_backend/rds/postgres.rs:321-333 | src/common/meta/src/kv_backend/rds/postgres.rs:352-364 \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/common/meta/src/kv_backend/rds/postgres.rs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"20cb111c8afb0ac6038dbbd03fc44c83eea58f07aeb82f09d81d11f3910889d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/common/version/src/lib.rs:36-48 | src/common/version/src/lib.rs:79-91 \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/common/version/src/lib.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"940e3b01dd52d816152667f6eebd84b2227a1efa96b7ae7e658d857b7d86f03a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): src/datanode/src/service.rs:66-78 | src/flow/src/server.rs:417-428 \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/datanode/src/service.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"76211e5ec6eddfefa91d1655cc4cc3917e0323b322c6fb4e955639875260c91d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): src/flow/src/batching_mode/frontend_client.rs:595-606 | src/flow/src/batching_mode/frontend_client.rs:675-687 \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/flow/src/batching_mode/frontend_client.rs"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb2a8cbea7672d00f0dad531597e097292c18fa1de05146fa4b1829abfa56a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): src/frontend/src/instance/otlp/trace_ingest.rs:1325-1337 | src/frontend/src/instance/otlp/trace_ingest.rs:1408-1418 \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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":1325}}}],"partialFingerprints":{"codehealthFindingId/v1":"84c77a2d9008d185fc8b2f3f1557650ae52fd579205a9504cf5c87e1b4049da1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/meta-srv/src/cluster.rs:85-97 | src/meta-srv/src/cluster.rs:134-146 \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/meta-srv/src/cluster.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1a2579674d131e24943c360feb39d3346c7ca30f479a5e9268580f2c3318a61"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/meta-srv/src/gc/procedure.rs:71-83 | src/meta-srv/src/gc/procedure.rs:123-135 \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/meta-srv/src/gc/procedure.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"f26b22bc5d05a27dd1d60e12bb2507694b3dd12bb202ce480eb58758a2bfacd4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/mito2/src/engine.rs:842-854 | src/mito2/src/engine.rs:938-950 \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/mito2/src/engine.rs"},"region":{"startLine":842}}}],"partialFingerprints":{"codehealthFindingId/v1":"97dd1113e10405d42bbd2a58ea31c9ade3afa1eda88d736020006e13ae735b34"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/mito2/src/read/seq_scan.rs:85-97 | src/mito2/src/read/unordered_scan.rs:70-82 \u2014 before extracting anything, compare \u0060src/mito2/src/read/seq_scan.rs\u0060 and \u0060src/mito2/src/read/unordered_scan.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 54 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/mito2/src/read/seq_scan.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"1edd88ee6d375f4f9cfa0f1163c63349628b372a9a0cd97e4753756b90b42ef5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): src/mito2/src/read/seq_scan.rs:605-617 | src/mito2/src/read/unordered_scan.rs:389-400 \u2014 before extracting anything, compare \u0060src/mito2/src/read/seq_scan.rs\u0060 and \u0060src/mito2/src/read/unordered_scan.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 54 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/mito2/src/read/seq_scan.rs"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"c20008be3557d8ea6d8abb3601c77b649aedd3e6a90f60498b9d53b92560c9bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): src/mito2/src/read/series_scan.rs:1133-1145 | src/mito2/src/read/series_scan.rs:1149-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/mito2/src/read/series_scan.rs"},"region":{"startLine":1133}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbbefcd609a759ed327afa99c1806389336e5f5775516d91ada6f4dcefb60fe7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/mito2/src/sst/parquet/reader.rs:1170-1182 | src/mito2/src/sst/parquet/reader.rs:1256-1268 \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/mito2/src/sst/parquet/reader.rs"},"region":{"startLine":1170}}}],"partialFingerprints":{"codehealthFindingId/v1":"82eee2c18646121005a76cc0e2d2160bd5fb1f1c26acb4439fbf67decc7516c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/pipeline/src/etl/transform/transformer/greptime/coerce.rs:288-300 | src/pipeline/src/etl/transform/transformer/greptime/coerce.rs:345-357 \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/pipeline/src/etl/transform/transformer/greptime/coerce.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"3beaa109a74794d59dfc0df6aed4d0edf38c46148a3786f5e0b97b84b956ec16"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): src/promql/src/extension_plan/normalize.rs:295-307 | src/promql/src/extension_plan/series_divide.rs:358-369 \u2014 before extracting anything, compare \u0060src/promql/src/extension_plan/normalize.rs\u0060 and \u0060src/promql/src/extension_plan/series_divide.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 34 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/promql/src/extension_plan/normalize.rs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"684e0a1707ec0c16f1537e66fb3557921ef3717dcdb077a3ea8b30227065c3f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/query/src/datafusion.rs:675-687 | src/query/src/datafusion.rs:710-722 \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/query/src/datafusion.rs"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d62767d73de1ffbc525f70fdfc196ed869ffb8e4caaed8fa2947eba131778c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): src/query/src/dist_plan/analyzer.rs:1014-1024 | src/query/src/dist_plan/analyzer.rs:1034-1046 \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/query/src/dist_plan/analyzer.rs"},"region":{"startLine":1014}}}],"partialFingerprints":{"codehealthFindingId/v1":"408b46b831cb448ad210aaba61cb0307d50b94fec0ee3070c8b0b0922af03525"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/query/src/promql/planner.rs:1030-1042 | src/query/src/promql/planner.rs:1097-1109 \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/query/src/promql/planner.rs"},"region":{"startLine":1030}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd9960b2df720a867394df406fc75a1b4df78f4f9871c4c4cd245a5f5320febd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): src/query/src/promql/planner.rs:2342-2354 | src/query/src/promql/planner.rs:2977-2988 \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/query/src/promql/planner.rs"},"region":{"startLine":2342}}}],"partialFingerprints":{"codehealthFindingId/v1":"6184c1b42de3fab53ab73a9394f18a0354a0e773c66b47b118070123a4f237e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): src/query/src/sql.rs:729-741 | src/query/src/sql.rs:1067-1077 \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/query/src/sql.rs"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"6561f712c0892d5b17e52a330df710b30de0fdfabe6901f364ab70436710ed92"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/servers/src/http/prometheus.rs:759-771 | src/servers/src/http/prometheus.rs:1838-1850 \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/servers/src/http/prometheus.rs"},"region":{"startLine":759}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e1203ea8a8e9ed2c80716e09a07094d7cd50e880b2066822cad36f918ee41b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/servers/src/mysql/handler.rs:553-565 | src/servers/src/mysql/handler.rs:630-642 \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/servers/src/mysql/handler.rs"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"856e25d4caaf1b0cafc9f17381183550b685b6acdf6dc73dee198a44fb717681"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/servers/src/postgres/types.rs:1189-1201 | src/servers/src/postgres/types.rs:1301-1313 \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/servers/src/postgres/types.rs"},"region":{"startLine":1189}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f326ad0be7c4796b1fc60d5cb564d8214034d718400b09cf256ae564e2a2227"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/servers/src/postgres/types.rs:1205-1217 | src/servers/src/postgres/types.rs:1317-1329 \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/servers/src/postgres/types.rs"},"region":{"startLine":1205}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b8a6e6d9d6243da089a93afa80579282ec45a7f1343815d88ad1227f3464a2e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/sql/src/statements/copy.rs:78-90 | src/sql/src/statements/copy.rs:109-121 \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/sql/src/statements/copy.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f2b4c083f075684995f38b0b35e2eac56d77ede29c9af575d207a8b443b72b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): src/sql/src/parsers/alter_parser/trigger.rs:350-362 | src/sql/src/parsers/create_parser/trigger.rs:424-435 \u2014 \u0060src/sql/src/parsers/alter_parser/trigger.rs\u0060 and \u0060src/sql/src/parsers/create_parser/trigger.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 45 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sql/src/parsers/alter_parser/trigger.rs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"2328b7415654151f10e27cf8b133636c3f7441e925b9174becbaf7e0b4da6740"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/table/src/metadata.rs:1343-1355 | src/table/src/metadata.rs:1386-1398 \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/table/src/metadata.rs"},"region":{"startLine":1343}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ab62904aa4cedcca259e1c04c0cabe41aa094cb02cf30b3235e71a9b0e05c3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): src/cmd/src/datanode.rs:309-320 | src/cmd/src/metasrv.rs:233-244 | src/cmd/src/standalone.rs:376-387 \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":"src/cmd/src/datanode.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ff933e13ee80efbb35112659ac4c387f63e00ce60c45620f1c58bdd15246ba3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): src/common/time/src/duration.rs:203-214 | src/common/time/src/time.rs:191-202 | src/common/time/src/timestamp.rs:725-736 \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":"src/common/time/src/duration.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8716444c0d561b24b9d5cae03ca025b88113adaade2677aade4f3a771f5dffd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): src/promql/src/extension_plan/empty_metric.rs:203-214 | src/promql/src/extension_plan/range_manipulate.rs:270-281 | src/promql/src/extension_plan/scalar_calculate.rs:237-248 \u2014 before extracting anything, compare \u0060src/promql/src/extension_plan/range_manipulate.rs\u0060 and \u0060src/promql/src/extension_plan/scalar_calculate.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 37 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/promql/src/extension_plan/empty_metric.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"be60bd296c04248d322547ebb409f5cc046d2b49400d9d9bb5413c761b66d648"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): src/promql/src/extension_plan/normalize.rs:337-348 | src/promql/src/extension_plan/range_manipulate.rs:526-537 | src/promql/src/extension_plan/series_divide.rs:428-439 \u2014 before extracting anything, compare \u0060src/promql/src/extension_plan/normalize.rs\u0060 and \u0060src/promql/src/extension_plan/series_divide.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 34 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/promql/src/extension_plan/normalize.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"15b2b0217d338f36c70531a99b9d9c19d18f8def81994f5df1378bad23e61b85"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 2): src/catalog/src/system_schema/information_schema/region_peers.rs:181-192 | src/catalog/src/system_schema/information_schema/tables.rs:248-257 \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/catalog/src/system_schema/information_schema/region_peers.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c162a4204d4af7b0131e8347cb443fdaa2f7e88bba2628db0bb2afc7f750306"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/cli/src/data/export.rs:169-180 | src/cli/src/data/import.rs:100-111 \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/src/data/export.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"70dda93031ee0b6261521a4d58070599bb8889c448e132582df4a86f64830b68"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): src/cmd/src/datanode.rs:313-323 | src/cmd/src/flownode.rs:201-212 \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/cmd/src/datanode.rs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b8bacf404eff24583cbdaa16b0d5d39e938f2f5ecf4a13f3f9e27df97ea0fb5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/common/function/src/admin/reconcile_catalog.rs:58-69 | src/common/function/src/admin/reconcile_database.rs:65-76 \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/common/function/src/admin/reconcile_catalog.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"e55823a92cd36a9f2877a177d8e06b638241ce5e0bc1aa17f007065fed5e2395"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/common/meta/src/ddl/drop_table/executor.rs:295-306 | src/common/meta/src/ddl/drop_table/executor.rs:407-418 \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/common/meta/src/ddl/drop_table/executor.rs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec246005719990b3dbde9e4b8a2c844854e223e96b96b46fc8c23f01af76e397"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): src/common/meta/src/reconciliation/reconcile_logical_tables/reconcile_regions.rs:50-61 | src/common/meta/src/reconciliation/reconcile_table/reconcile_regions.rs:92-102 \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/common/meta/src/reconciliation/reconcile_logical_tables/reconcile_regions.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"744a6f3f7f08039c8762d23784da06c7982670a3ec99e79a01af5a99a4949dd7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/common/time/src/range.rs:41-52 | src/common/time/src/range.rs:54-65 \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/common/time/src/range.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bb7b9e068dc89f93833aba2bd2c52248fae8feaae4d8367580e446eb3802ef5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/common/time/src/range.rs:82-93 | src/common/time/src/range.rs:95-106 \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/common/time/src/range.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"370ad6cdc02ff15da70612e7bb8606329583b92e3e39965891bf7ece15c71a92"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201312 lines \u00D7 2): src/flow/src/batching_mode/task.rs:805-813 | src/flow/src/batching_mode/task.rs:1221-1232 \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/flow/src/batching_mode/task.rs"},"region":{"startLine":805}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3ab7a31866922443ab86f25b3e532abf6b9f3b29e24eaf8627608cc2b7b13be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): src/frontend/src/instance/promql.rs:113-124 | src/frontend/src/instance/promql.rs:330-340 \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/frontend/src/instance/promql.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca293442f8477f8eb16a5b90fbb086ad58499d8c3224bcdcbd396bfe0f5f889b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/index/src/fulltext_index/create/bloom_filter.rs:113-124 | src/mito2/src/sst/index/bloom_filter/creator.rs:420-431 \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/index/src/fulltext_index/create/bloom_filter.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bdab12b70eb86fc60e5c80c8ac2a5a1177b083dc0056c8f7aabf881d2265b0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201312 lines \u00D7 2): src/meta-srv/src/procedure/region_migration/close_downgraded_region.rs:101-112 | src/meta-srv/src/procedure/utils.rs:155-163 \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/meta-srv/src/procedure/region_migration/close_downgraded_region.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d0f8114ba29c03e6dd39fc44745befb8aa2b06113f7826b68b4e677fa6bc192"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs:212-223 | src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:201-212 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 129 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/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a4298e210390245bd90c37eb2a98e165bd1e8cfabdfe9103be804f92fdb3904"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/mito2/src/config.rs:702-713 | src/mito2/src/config.rs:789-800 \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/mito2/src/config.rs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"21916cac3453c021cda78b053e2fae01a8a4187fa3557e7246432197f084a925"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/mito2/src/engine.rs:829-840 | src/mito2/src/engine.rs:925-936 \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/mito2/src/engine.rs"},"region":{"startLine":829}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa50785a7e65fbc51b57f9d2b457c6ae04ab1a06733203ac9bb5058478bf753e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/mito2/src/engine.rs:902-913 | src/mito2/src/engine.rs:1018-1029 \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/mito2/src/engine.rs"},"region":{"startLine":902}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d4967bf0db6394564c8d015579119180caae1e9aa0c5890dd57be555fae75d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/mito2/src/series_index/writer.rs:418-429 | src/mito2/src/sst/range_index/writer.rs:441-452 \u2014 before extracting anything, compare \u0060src/mito2/src/series_index/writer.rs\u0060 and \u0060src/mito2/src/sst/range_index/writer.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 65 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":"src/mito2/src/series_index/writer.rs"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d2627ce42682cf5cc7e0a0d84b99cf9f5408a080a5dbe4459258162ee83b222"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/mito2/src/sst/index/bloom_filter/creator.rs:158-169 | src/mito2/src/sst/index/bloom_filter/creator.rs:181-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/mito2/src/sst/index/bloom_filter/creator.rs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"216dda5231acb569d41e4f3f9fd313b2a77dd82dcb9617358d57786c14d802a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/mito2/src/sst/index/fulltext_index/applier.rs:253-264 | src/mito2/src/sst/index/fulltext_index/applier.rs:317-328 \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/mito2/src/sst/index/fulltext_index/applier.rs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"409a59b31914d0f5caff097bfd279c34cae86280fb2d5bff308d388aa0a2a331"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/mito2/src/sst/index/fulltext_index/creator.rs:157-168 | src/mito2/src/sst/index/fulltext_index/creator.rs:179-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":"src/mito2/src/sst/index/fulltext_index/creator.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8da6603655c7a4446277c8633edc361d587e91d21769599b8034fafbbd6b8f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): src/operator/src/statement/copy_table_from.rs:335-345 | src/operator/src/statement/copy_table_from.rs:362-373 \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/operator/src/statement/copy_table_from.rs"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"71cbc9c0c55269c24c0f940c3e4db112873eaecc7af7c9f413125f098b0de98f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/pipeline/src/etl/transform/transformer/greptime/coerce.rs:303-314 | src/pipeline/src/etl/transform/transformer/greptime/coerce.rs:363-374 \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/pipeline/src/etl/transform/transformer/greptime/coerce.rs"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"98666686059c1dad493578a80ee9f91fb24965da7a83a05f81703c013910e18e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/promql/src/extension_plan/scalar_calculate.rs:450-461 | src/promql/src/extension_plan/series_divide.rs:438-449 \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/promql/src/extension_plan/scalar_calculate.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3cb8304645c9afcddf85be4d37046f1691c85b3ec01783fc1709a16510d01df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/promql/src/functions/quantile.rs:115-126 | src/promql/src/functions/quantile.rs:162-173 \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/promql/src/functions/quantile.rs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"4819600533b281759d801040d671a92678819353aee826ac7764ac4830b335c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/query/src/part_sort.rs:638-649 | src/query/src/part_sort.rs:885-896 \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/query/src/part_sort.rs"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5e6df7083e18851a983290b0c1d0eb2cafebdd5bb260b9d0f465c5e690e2fd1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 2): src/query/src/part_sort.rs:1134-1143 | src/query/src/part_sort.rs:1152-1163 \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/query/src/part_sort.rs"},"region":{"startLine":1134}}}],"partialFingerprints":{"codehealthFindingId/v1":"55d6041470ee0b95d3195f9b18f2b1885cc2b596753cf1be191a859595facfee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): src/query/src/sql.rs:968-979 | src/query/src/sql/show_create_table.rs:252-262 \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/query/src/sql.rs"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"26ed637397f2d580488ab61ade3ee67235b6aec4e00d4386bb3b7ce8c830ea5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/servers/src/http/prometheus.rs:738-749 | src/servers/src/http/prometheus.rs:2372-2383 \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/servers/src/http/prometheus.rs"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"107bcc0989594076d153f26dc8f1db6c5ddedcd22ed146ce856c8232ad42dd8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): src/servers/src/http/prometheus.rs:1829-1839 | src/servers/src/http/prometheus.rs:2396-2407 \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/servers/src/http/prometheus.rs"},"region":{"startLine":1829}}}],"partialFingerprints":{"codehealthFindingId/v1":"392f58f7175ec79f6ffe4840300f443d406a299a20bd6586147b47a952153e79"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/servers/src/otlp/logs.rs:547-558 | src/servers/src/otlp/logs.rs:683-694 \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/servers/src/otlp/logs.rs"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a2f96de277ec9217ea83958f245a542bb7f72aaa6b8c1cc31ff969ec69d4153"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/servers/src/elasticsearch.rs:180-191 | src/servers/src/elasticsearch.rs:204-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":"src/servers/src/elasticsearch.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"58290a525aaab266d045f74937e6886441210d1ecf6ba4fea2978fe2ccab5e0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/session/src/session_config.rs:118-129 | src/session/src/session_config.rs:175-186 \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/session/src/session_config.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5d427c7e0128404bae26ead90b28ef03890d94d53ad31c63a01f5b8adcd8f54"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 2): src/sql/src/statements/alter.rs:284-295 | src/sql/src/statements/alter.rs:422-431 \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/sql/src/statements/alter.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2f1f6413738627074ce4ea42c1736a7dc0d38cfa84296dec9747fe3aa542660"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 11): src/catalog/src/system_schema/information_schema/cluster_info.rs:162-172 | src/catalog/src/system_schema/information_schema/columns.rs:183-193 | src/catalog/src/system_schema/information_schema/key_column_usage.rs:171-181 | src/catalog/src/system_schema/information_schema/partitions.rs:190-200 | src/catalog/src/system_schema/information_schema/procedure_info.rs:120-130 | src/catalog/src/system_schema/information_schema/recycle_bin.rs:141-151 | src/catalog/src/system_schema/information_schema/region_peers.rs:128-138 | src/catalog/src/system_schema/information_schema/region_statistics.rs:162-173 | src/catalog/src/system_schema/information_schema/schemata.rs:116-126 | src/catalog/src/system_schema/information_schema/statistics.rs:158-168 | src/catalog/src/system_schema/information_schema/table_constraints.rs:125-135 \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 11 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/cluster_info.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e11c93f3f96236398b901b3e2443c55ef9630c7db17d72b53966e63dce4c715"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 5): src/common/meta/src/key/schema_name.rs:283-293 | src/common/meta/src/key/table_info.rs:183-193 | src/common/meta/src/key/table_repart.rs:214-224 | src/common/meta/src/key/table_route.rs:662-672 | src/common/meta/src/key/view_info.rs:182-192 \u2014 before extracting anything, compare \u0060src/common/meta/src/key/table_info.rs\u0060 and \u0060src/common/meta/src/key/view_info.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 53 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/common/meta/src/key/schema_name.rs"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"339c110bc139125e5b2c619d602a08ce7fbd8072a58df7d4c99e4fbf9ea52747"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): src/catalog/src/system_schema/information_schema/columns.rs:258-268 | src/catalog/src/system_schema/information_schema/key_column_usage.rs:231-241 | src/catalog/src/system_schema/information_schema/statistics.rs:230-240 | src/catalog/src/system_schema/information_schema/table_constraints.rs:173-183 \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 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/columns.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8f65f21f4144bc44cc7fbca83569fe1d80fd480e35b4c7075a5d0d3785e665e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): src/servers/src/grpc/flight/stream.rs:252-262 | src/servers/src/grpc/flight/stream.rs:322-332 | src/servers/src/grpc/flight/stream.rs:340-350 | src/servers/src/grpc/flight/stream.rs:591-601 \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/servers/src/grpc/flight/stream.rs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"73e454f631cbd088e9a58856efd2bfd23650aeb2c777268ccd4ed9b5ea268299"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): src/common/meta/src/ddl_manager.rs:1230-1240 | src/common/meta/src/ddl_manager.rs:1463-1473 | src/common/meta/src/ddl_manager.rs:1564-1574 \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/common/meta/src/ddl_manager.rs"},"region":{"startLine":1230}}}],"partialFingerprints":{"codehealthFindingId/v1":"f084de85b73ae1f4e79d997bddc73ae2f917a5915de952a2204c2fc7f3ebc0fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): src/frontend/src/instance/otlp.rs:96-106 | src/frontend/src/instance/otlp.rs:265-275 | src/frontend/src/instance/otlp.rs:303-313 \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/frontend/src/instance/otlp.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c90842890e3b70a29fe7fd1bd9d80943b63769e815fa6fa042e6a98f343698a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201311 lines \u00D7 3): src/meta-srv/src/procedure/region_migration/close_downgraded_region.rs:100-110 | src/meta-srv/src/procedure/region_migration/open_candidate_region.rs:163-172 | src/meta-srv/src/procedure/utils.rs:154-161 \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":"src/meta-srv/src/procedure/region_migration/close_downgraded_region.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"7630bee10f7bc9a1e99a631d5f83876b288e8fc6b4599007d54d85e43eb3bbea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/catalog/src/memory/manager.rs:325-335 | src/catalog/src/memory/manager.rs:368-378 \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/catalog/src/memory/manager.rs"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6e59296dfe760122a5a14d723479134f80aa249d7b7d2f9ec26858136f44b70"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/catalog/src/system_schema/information_schema/region_info.rs:63-73 | src/catalog/src/system_schema/information_schema/region_info.rs:89-99 \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/catalog/src/system_schema/information_schema/region_info.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6647833a2381e0e9c3afc50900162557561e95fa1fae4a4c32c3971fc35516e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/cmd/src/flownode.rs:307-317 | tests-integration/src/cluster.rs:500-510 \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/cmd/src/flownode.rs"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"d39cdf40192c9864c4a770c8a75c2d9fc8a15c27aa8a9ff0d13858a3b4f4514b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/common/function/src/aggrs/vector/avg.rs:104-114 | src/common/function/src/aggrs/vector/product.rs:124-134 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/vector/avg.rs\u0060 and \u0060src/common/function/src/aggrs/vector/product.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 33 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/common/function/src/aggrs/vector/avg.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"732caddaae4c61fd7e85e4ece27bb2f300f579daa1e095be2955098ac67957d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/common/function/src/scalars/string/locate.rs:147-157 | src/common/function/src/scalars/string/regexp_extract.rs:146-156 \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/common/function/src/scalars/string/locate.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cdb651c713255846ba1a29a39fbb879b1f761660ef583bfd7e6ea1516d467ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/common/meta/src/cache/container.rs:203-213 | src/common/meta/src/cache/container.rs:276-286 \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/common/meta/src/cache/container.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"d67c8c57724a1496cbdb7242ff6acafabc320fdca940a18a58cfea246dfa85df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/common/meta/src/ddl/drop_table/executor.rs:420-430 | src/common/meta/src/ddl/undrop_table.rs:506-516 \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/common/meta/src/ddl/drop_table/executor.rs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9ef7a626e456279dbad4cd2782f4b07efc5048fded4b7322763f14096552d41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/common/meta/src/election/rds/mysql.rs:625-635 | src/common/meta/src/election/rds/postgres.rs:431-441 \u2014 before extracting anything, compare \u0060src/common/meta/src/election/rds/mysql.rs\u0060 and \u0060src/common/meta/src/election/rds/postgres.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 64 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/common/meta/src/election/rds/mysql.rs"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6b0641466d99c13f1c8e4f4c98fa2e3476f180051076466835ccefa5186a6a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/common/meta/src/kv_backend/rds/mysql.rs:85-95 | src/common/meta/src/kv_backend/rds/postgres.rs:117-127 \u2014 before extracting anything, compare \u0060src/common/meta/src/kv_backend/rds/mysql.rs\u0060 and \u0060src/common/meta/src/kv_backend/rds/postgres.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 43 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/common/meta/src/kv_backend/rds/mysql.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"26c8972e18ed49c6077c95eb0ce2707c36939d1864115e729de384ca5f43e3a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/common/time/src/range.rs:51-61 | src/common/time/src/range.rs:92-102 \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/common/time/src/range.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9a51018201d73bf81cdfbb45b92959f2d4dfda11fb50b214d23dc69cf1be829"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/datatypes/src/vectors/string.rs:401-411 | src/datatypes/src/vectors/string.rs:441-451 \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/datatypes/src/vectors/string.rs"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"087ba145df2494b924e2e7a8a710424b792f0e47b57453d96d4211eeea2e385f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/frontend/src/service_config/pending_rows_batcher.rs:66-76 | src/frontend/src/service_config/prom_store.rs:70-80 \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/frontend/src/service_config/pending_rows_batcher.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"737af95f329bb516cfad12484aee81dfa727705129bc542d0337d07076e8941d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/meta-client/src/client/cluster.rs:194-204 | src/meta-client/src/client/procedure.rs:228-238 \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/meta-client/src/client/cluster.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"e267774b215e066d15a1d658f3f66e9981a414416ca344d8a9263af6ffe23475"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:190-199 | src/meta-srv/src/procedure/repartition/group/sync_region.rs:170-180 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/sync_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 135 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/meta-srv/src/procedure/repartition/group/enter_staging_region.rs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"490baca5e8c7a7ecae581004ac262e56b199ffb54c8fa64f56d835e698550010"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:221-231 | src/meta-srv/src/procedure/repartition/group/sync_region.rs:202-212 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/sync_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 135 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/meta-srv/src/procedure/repartition/group/enter_staging_region.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa0a58b9087c3bc3153c4d782978608e0f586f4170874df399447186b5a706e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/metric-engine/src/engine.rs:250-260 | src/metric-engine/src/engine.rs:263-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":"src/metric-engine/src/engine.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"5044f119d544e2f545fd80191cc39ea1e084f7ee4d8b2e401e21a57977ca762f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201311 lines \u00D7 2): src/mito2/src/read/flat_dedup.rs:215-222 | src/mito2/src/read/flat_dedup.rs:448-458 \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/mito2/src/read/flat_dedup.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd1aaa12ad4a0aa93dba2920262637f599135d2b3e7b33a0fd94a3dba99ec389"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/mito2/src/request.rs:678-688 | src/mito2/src/request.rs:693-703 \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/mito2/src/request.rs"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f7b1314efed512ee9385d5246145da4576dd1f0aff6f2fcc75cf466b98d5302"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/mito2/src/series_index/writer.rs:216-226 | src/mito2/src/sst/range_index/writer.rs:209-219 \u2014 before extracting anything, compare \u0060src/mito2/src/series_index/writer.rs\u0060 and \u0060src/mito2/src/sst/range_index/writer.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 65 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":"src/mito2/src/series_index/writer.rs"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fcc442b4b0e9954060e68370991734882de5ad8e2c0346d60042ebca301569b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201311 lines \u00D7 2): src/mito2/src/series_index/writer.rs:329-339 | src/mito2/src/sst/range_index/writer.rs:350-357 \u2014 before extracting anything, compare \u0060src/mito2/src/series_index/writer.rs\u0060 and \u0060src/mito2/src/sst/range_index/writer.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 65 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":"src/mito2/src/series_index/writer.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"b006175047053d0b859eef59a4851f1345dff5e65640aaca077673b293b1bb77"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/mito2/src/sst/index/bloom_filter/creator.rs:202-212 | src/mito2/src/sst/index/inverted_index/creator.rs:260-270 \u2014 \u0060src/mito2/src/sst/index/bloom_filter/creator.rs\u0060 and \u0060src/mito2/src/sst/index/inverted_index/creator.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 63 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/creator.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"46a812925786e7f4fadc45d402d9fd6196af42828cf9e48a6c01c3cfc7b2a6be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): src/mito2/src/sst/index/fulltext_index/applier/builder.rs:204-212 | src/mito2/src/sst/index/fulltext_index/applier/builder.rs:246-256 \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/mito2/src/sst/index/fulltext_index/applier/builder.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"159b9efd303beea2ad96ce168033b3d3aa1fac0ed53bcdb0041c740dedc8f46d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/mito2/src/sst/index/fulltext_index/applier.rs:666-676 | src/mito2/src/sst/index/fulltext_index/applier.rs:683-693 \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/mito2/src/sst/index/fulltext_index/applier.rs"},"region":{"startLine":666}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f3179a64e1b031ce348c5edae919385c91fced7fc686a78de8347f6e9fc544c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/pipeline/src/etl/transform/transformer/greptime/coerce.rs:227-237 | src/pipeline/src/etl/transform/transformer/greptime/coerce.rs:429-439 \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/pipeline/src/etl/transform/transformer/greptime/coerce.rs"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3c10f22ff7aa0adf820d8d260a88e97339aa762657ec73e9df36d3f4ae6a9b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/promql/src/extension_plan/instant_manipulate.rs:186-196 | src/promql/src/extension_plan/normalize.rs:140-150 \u2014 before extracting anything, compare \u0060src/promql/src/extension_plan/instant_manipulate.rs\u0060 and \u0060src/promql/src/extension_plan/normalize.rs\u0060 as WHOLE FILES: this scan already matched 4 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. 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/promql/src/extension_plan/instant_manipulate.rs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"580bed7e79a72a472f03562d5ae86830dbe2999a30d20b633be680dc02f24877"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/promql/src/extension_plan/instant_manipulate.rs:655-665 | src/promql/src/extension_plan/normalize.rs:500-510 \u2014 before extracting anything, compare \u0060src/promql/src/extension_plan/instant_manipulate.rs\u0060 and \u0060src/promql/src/extension_plan/normalize.rs\u0060 as WHOLE FILES: this scan already matched 4 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. 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/promql/src/extension_plan/instant_manipulate.rs"},"region":{"startLine":655}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f228821a581b89654611b7ee6896e959322c5970c6e8df15bd432c4e5d07f5b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): src/promql/src/functions/native_histogram.rs:1143-1152 | src/promql/src/functions/native_histogram.rs:2780-2790 \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/promql/src/functions/native_histogram.rs"},"region":{"startLine":1143}}}],"partialFingerprints":{"codehealthFindingId/v1":"d89a4eef51e077c84a966a5f9cb96fc763685cd523585378dd7fee58ce752009"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): src/puffin/src/puffin_manager/stager/bounded_stager.rs:151-160 | src/puffin/src/puffin_manager/stager/bounded_stager.rs:207-217 \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/puffin/src/puffin_manager/stager/bounded_stager.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d071db2e1ad7cf1e1f11bdcc885c0b08a42bbcf9a8c7069d200b6f132abddfb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): src/servers/src/grpc/flight/stream.rs:229-238 | src/servers/src/grpc/flight/stream.rs:613-623 \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/servers/src/grpc/flight/stream.rs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c82541ed248322e692ac358cae03a863dc4a42151f059a53a4445f5dddf4410"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/servers/src/mysql/handler.rs:643-653 | src/servers/src/mysql/handler.rs:659-669 \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/servers/src/mysql/handler.rs"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"f93faa8a5a8a4335e06fb6d90f7f3922578e22eb11f8dce3f86530a40b2076f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/servers/src/postgres/types.rs:1221-1231 | src/servers/src/postgres/types.rs:1333-1343 \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/servers/src/postgres/types.rs"},"region":{"startLine":1221}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d28269e366741f68398b71bb6e466a5623a6fae9f741ad1f2e1f0058056552e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/sql/src/parsers/create_parser.rs:953-963 | src/sql/src/parsers/create_parser.rs:1004-1014 \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/sql/src/parsers/create_parser.rs"},"region":{"startLine":953}}}],"partialFingerprints":{"codehealthFindingId/v1":"5758a7c2dfbb718e67a6e94228c5444134e148877b3df1f8cceea08788a1c84f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/store-api/src/metadata.rs:855-865 | src/store-api/src/metadata.rs:875-885 \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/store-api/src/metadata.rs"},"region":{"startLine":855}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca0f1d4ff44c0345b1c5503282f43e6e0f7710a8b744b2f3930d388a9677e413"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 4): src/servers/src/postgres/types.rs:664-672 | src/servers/src/postgres/types.rs:708-717 | src/servers/src/postgres/types.rs:774-783 | src/servers/src/postgres/types.rs:825-834 \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/servers/src/postgres/types.rs"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd9c49502a38660ad885fe75214288a9d7dd62e2fe029a06727e7dab2b885db7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs:232-241 | src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:221-230 | src/meta-srv/src/procedure/repartition/group/sync_region.rs:202-211 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 129 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/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"225e2af28e76e5ac7c21742193b71a01c0523452e45bb74286f44b94c7c7cee0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): src/promql/src/extension_plan/instant_manipulate.rs:573-582 | src/promql/src/extension_plan/range_manipulate.rs:585-594 | src/promql/src/extension_plan/scalar_calculate.rs:492-501 \u2014 before extracting anything, compare \u0060src/promql/src/extension_plan/instant_manipulate.rs\u0060 and \u0060src/promql/src/extension_plan/range_manipulate.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 43 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/promql/src/extension_plan/instant_manipulate.rs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"6586656a3a900e0a0f5df761ff0997203e2bd2bd488972f4003708512229a00a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/cli/src/data/export_v2/command.rs:565-574 | src/cli/src/data/export_v2/command.rs:641-650 \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/src/data/export_v2/command.rs"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d9e50285f07e1af8db6eba3ac8e5ea6d5eb6ed4d8744b94604126360f1ce05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/common/function/src/scalars/geo/geohash.rs:111-120 | src/common/function/src/scalars/geo/geohash.rs:212-221 \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/common/function/src/scalars/geo/geohash.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"5010c311130525eac97630c4eb4f4c4885b5fe62b65615406a6ffdb489261dfc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/common/function/src/scalars/geo/h3.rs:900-909 | src/common/function/src/scalars/geo/h3.rs:959-968 \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/common/function/src/scalars/geo/h3.rs"},"region":{"startLine":900}}}],"partialFingerprints":{"codehealthFindingId/v1":"66aa68d97bb0115c8b62b1dc09fa1dc733bdb0e523febfbe16a6fc894bff3fe6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/common/function/src/scalars/vector/scalar_add.rs:97-106 | src/common/function/src/scalars/vector/scalar_mul.rs:97-106 \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/common/function/src/scalars/vector/scalar_add.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"2745c9b9f782d738ec15aee683ff7d00d575fbafbb37c09099461d361f15ccc3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/common/function/src/scalars/vector.rs:128-137 | src/common/function/src/scalars/vector.rs:160-169 \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/common/function/src/scalars/vector.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b510ee811e3abdd1b557158b147467fd6dc9760b5e2d6073758d89d52667b81"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/common/macro/src/row/into_row.rs:47-56 | src/common/macro/src/row/to_row.rs:47-56 \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/common/macro/src/row/into_row.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6befd4de3eff16025e9bac7311e106e7b4bc6959f6c98eb224a05ce7b97941e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/common/macro/src/range_fn.rs:78-87 | src/common/macro/src/range_fn.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/common/macro/src/range_fn.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"faceb40215c09dad35341b776d10017e96684de6a882406b8fc7145f6d370b2e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/common/meta/src/ddl/alter_logical_tables/executor.rs:59-68 | src/common/meta/src/reconciliation/reconcile_logical_tables/reconcile_regions.rs:57-66 \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/common/meta/src/ddl/alter_logical_tables/executor.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d71d0d5077bc265b81a962ade323f6c52b7ce48141a2efe61274f710f95335a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/common/meta/src/ddl/drop_table/executor.rs:451-460 | src/common/meta/src/ddl/drop_table/executor.rs:530-539 \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/common/meta/src/ddl/drop_table/executor.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b40d939f75b151c85c4644c7033f305e80ee32cac1e38c298d112b0c7afaa29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/common/meta/src/ddl/drop_view.rs:205-214 | src/common/meta/src/ddl/truncate_table.rs:81-90 \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/common/meta/src/ddl/drop_view.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"f18fbd05f18834897aa099aa7b020740e533d3c3f8b490d7781d3e53e924034e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/common/procedure/src/local/runner.rs:382-391 | src/common/procedure/src/local/runner.rs:394-403 \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/common/procedure/src/local/runner.rs"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f7d9fa1fbb742eb0454ca2b29be46d605ad5e4100f6c7874376d78c885c88c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/common/runtime/src/runtime.rs:165-174 | src/common/runtime/src/runtime.rs:199-208 \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/common/runtime/src/runtime.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"8059091d002404dfc1c87b426125286f727532d8eb5e67a433decfeeede73597"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): src/datanode/src/service.rs:80-89 | src/flow/src/server.rs:429-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":"src/datanode/src/service.rs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d9c63f6fe339504026a88e907455ff8e971033d3ef2a0f0e244924b54d8f456"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/flow/src/batching_mode/engine.rs:199-208 | src/flow/src/batching_mode/engine.rs:337-346 \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/flow/src/batching_mode/engine.rs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f4056e9ba9ca60513f627c8aa5ac305e0779a4eb3194370b6241b8d077cd243"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/flow/src/batching_mode/state.rs:606-615 | src/flow/src/batching_mode/state.rs:754-763 \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/flow/src/batching_mode/state.rs"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc7c2c9603cc8de4ac6be057ecf6903be70df5a6ed7180e56681aa39816989a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/frontend/src/instance/otlp/trace_ingest.rs:482-492 | src/frontend/src/instance/otlp/trace_ingest.rs:1579-1588 \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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8898fd957f8a6cfdb23deee8c65d81281449ebb617ccc5eab99b8ac1bef6d3d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/index/src/inverted_index/create/sort/intermediate_rw/codec_v1.rs:77-86 | src/index/src/inverted_index/create/sort/intermediate_rw/codec_v1.rs:90-99 \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/index/src/inverted_index/create/sort/intermediate_rw/codec_v1.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"520d79f951d2f012d88fe2a608fb7b7be65dc52d2de650e833b4e7314c67066e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): src/meta-srv/src/handler/collect_stats_handler.rs:187-196 | src/meta-srv/src/handler/remap_flow_peer_handler.rs:74-82 \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/meta-srv/src/handler/collect_stats_handler.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"694e818648a33e7d8d2cef8211931de45af608b9bb24d29a69f0a2a295237485"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs:225-234 | src/meta-srv/src/procedure/region_migration/upgrade_candidate_region.rs:253-262 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs\u0060 and \u0060src/meta-srv/src/procedure/region_migration/upgrade_candidate_region.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 31 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/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"5600421207082493574a102c9db3a30051da83a977df57cb91af8c5e5175400f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/mito2/src/memtable/simple_bulk_memtable.rs:109-118 | src/mito2/src/memtable/time_series.rs:287-297 \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/mito2/src/memtable/simple_bulk_memtable.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0bfb4599d30af8910146f12cae32d08b16551161ce69ae9828de7d6a0f11d05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/mito2/src/memtable/time_series.rs:1180-1189 | src/mito2/src/memtable/time_series.rs:1322-1331 \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/mito2/src/memtable/time_series.rs"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"328ebcbdeface43ffb0406f4938f649aaf9316286a021949d43f8cd62d240764"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/mito2/src/read/scan_util.rs:847-856 | src/mito2/src/sst/parquet/reader.rs:1584-1593 \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/mito2/src/read/scan_util.rs"},"region":{"startLine":847}}}],"partialFingerprints":{"codehealthFindingId/v1":"744a18377431a5180afc8febaeed28ae2289e2883feca53389440b8e9b47902c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/mito2/src/read/seq_scan.rs:79-88 | src/mito2/src/read/series_scan.rs:150-159 \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/mito2/src/read/seq_scan.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"abcf4d27dc4d2c419736321ee7d6be600d9b69adad1a170217f5302ec40c0c6a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201310 lines \u00D7 2): src/mito2/src/series_index/writer.rs:297-306 | src/mito2/src/sst/range_index/writer.rs:320-326 \u2014 before extracting anything, compare \u0060src/mito2/src/series_index/writer.rs\u0060 and \u0060src/mito2/src/sst/range_index/writer.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 65 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":"src/mito2/src/series_index/writer.rs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"e556a8ef22b37f53da8ffb51c886e0e374e583b3e33719c998c478bd988033bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/mito2/src/sst/index/fulltext_index/applier.rs:312-321 | src/mito2/src/sst/index/fulltext_index/applier.rs:333-342 \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/mito2/src/sst/index/fulltext_index/applier.rs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c9cdd41b575ed4c61b4ef4eae179dbdb3005f1d3c7945142dd7d9858c0237f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): src/mito2/src/worker.rs:1048-1056 | src/mito2/src/worker.rs:1101-1110 \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/mito2/src/worker.rs"},"region":{"startLine":1048}}}],"partialFingerprints":{"codehealthFindingId/v1":"0479cc88440608e7a6f74e525234708a0afb9d024a9cd80d6a1a5a584e894cfe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/pipeline/src/etl/processor/digest.rs:150-159 | src/pipeline/src/etl/processor/digest.rs:165-174 \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/pipeline/src/etl/processor/digest.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"defc33780d50e8e4157c8f6551d05456e426e0d337b6a84e7387e597f4b3f607"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/promql/src/extension_plan/instant_manipulate.rs:522-531 | src/promql/src/extension_plan/range_manipulate.rs:530-539 \u2014 before extracting anything, compare \u0060src/promql/src/extension_plan/instant_manipulate.rs\u0060 and \u0060src/promql/src/extension_plan/range_manipulate.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 43 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/promql/src/extension_plan/instant_manipulate.rs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"558405e335cfa7a9e9b6e8e7513868320cd920afe63130208df8132893d1ae43"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): src/query/src/promql/planner.rs:1521-1529 | src/query/src/promql/planner.rs:6223-6232 \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/query/src/promql/planner.rs"},"region":{"startLine":1521}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d897aed5580eae7db486cdd02d33f40b48765b18810ddcc430872b6c83cfcfb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/servers/src/prom_remote_write/decode.rs:85-94 | src/servers/src/prom_remote_write/decode.rs:223-232 \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/servers/src/prom_remote_write/decode.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"865bf61798970f0881b62680b68bd67cc2cdb6a1fc050d35119953e2244bafd1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/servers/src/http/influxdb.rs:55-64 | src/servers/src/http/influxdb.rs:79-88 \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/servers/src/http/influxdb.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"dae79b07afcf2c19dbba50d53def65761711732fa48ef8b413320e46c7691a0d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/sql/src/parsers/alter_parser.rs:613-622 | src/sql/src/parsers/create_parser/trigger.rs:561-570 \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/sql/src/parsers/alter_parser.rs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9a897179c8bc5c6fb373e683aaa3b5b9c0b3189399cd7da9cc561a85ae44f29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/sql/src/parsers/alter_parser.rs:615-624 | src/sql/src/parsers/create_parser.rs:956-965 \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/sql/src/parsers/alter_parser.rs"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e5e7a5c3bf719420bef03bce9b439d3a23e21887d8c4b3efdf3202a526653f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/store-api/src/region_engine.rs:927-936 | src/store-api/src/region_engine.rs:951-960 \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/store-api/src/region_engine.rs"},"region":{"startLine":927}}}],"partialFingerprints":{"codehealthFindingId/v1":"80639f63b2ab42b4102ae46ff0455398c3604dcd518221e75758a6bf8c53e871"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 5): src/catalog/src/system_schema/information_schema/flow_statistics.rs:133-141 | src/catalog/src/system_schema/information_schema/flows.rs:220-228 | src/catalog/src/system_schema/information_schema/table_semantics.rs:260-268 | src/catalog/src/system_schema/information_schema/tables.rs:164-172 | src/catalog/src/system_schema/information_schema/views.rs:127-135 \u2014 before extracting anything, compare \u0060src/catalog/src/system_schema/information_schema/flow_statistics.rs\u0060 and \u0060src/catalog/src/system_schema/information_schema/flows.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 53 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/catalog/src/system_schema/information_schema/flow_statistics.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b7028ec4b0b3aa9e7ecfb2fd557fcc5be3015018057d75370e418ea4110a5df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): src/client/src/flow.rs:69-77 | src/client/src/flow.rs:96-104 | src/client/src/flow.rs:110-118 \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/client/src/flow.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"488bc232b2603e5f0c7b0331bff9798a6a3582e575ffe11a26f04f83315d8098"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 3): src/common/function/src/scalars/geo/h3.rs:889-895 | src/common/function/src/scalars/geo/h3.rs:948-954 | src/common/function/src/scalars/geo/h3.rs:1071-1079 \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/common/function/src/scalars/geo/h3.rs"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"27fd1790d5f8e790e0908e87522252b54d129cd966447524bb05ca6eb5998a54"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 3): src/common/function/src/scalars/ip/range.rs:74-82 | src/common/function/src/scalars/ip/range.rs:162-168 | src/common/function/src/scalars/json/json_path_match.rs:66-73 \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/common/function/src/scalars/ip/range.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"19521bdd81ec793fceeb698318e260ab68fc5a35a135fa96b1fd61873c7c3b0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 3): src/common/function/src/admin/build_index_table.rs:95-101 | src/common/function/src/admin/flush_compact_table.rs:68-74 | src/common/function/src/admin/purge_table.rs:54-62 \u2014 before extracting anything, compare \u0060src/common/function/src/admin/flush_compact_table.rs\u0060 and \u0060src/common/function/src/admin/purge_table.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 34 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/common/function/src/admin/build_index_table.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"59bf8c361d7ea980ea66643c5565c4f5d1040ad9685173cadc657fd39cfdfc5f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): src/index/src/fulltext_index/create/bloom_filter.rs:119-127 | src/mito2/src/sst/index/bloom_filter/creator.rs:426-434 | src/mito2/src/sst/index/inverted_index/creator.rs:408-416 \u2014 \u0060src/mito2/src/sst/index/bloom_filter/creator.rs\u0060 and \u0060src/mito2/src/sst/index/inverted_index/creator.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 63 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/index/src/fulltext_index/create/bloom_filter.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"68b7d11f6913b4ea51535b4c8d8bb500da3c7fd290c9097a7225b0d8839f60ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 3): src/operator/src/delete.rs:146-153 | src/operator/src/insert.rs:824-832 | src/operator/src/request.rs:373-380 \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":"src/operator/src/delete.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"1020acbf9b3f00560b302c03a766f6cfd5e1a11db0e849c34dba4a48ff8da6f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): src/promql/src/extension_plan/instant_manipulate.rs:149-157 | src/promql/src/extension_plan/normalize.rs:102-110 | src/promql/src/extension_plan/series_divide.rs:195-203 \u2014 before extracting anything, compare \u0060src/promql/src/extension_plan/instant_manipulate.rs\u0060 and \u0060src/promql/src/extension_plan/normalize.rs\u0060 as WHOLE FILES: this scan already matched 4 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. 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/promql/src/extension_plan/instant_manipulate.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3a491758eed1f397c6f242b730042d7adc63f298643b3611844afd9e3cfa83d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/cli/src/data/export_v2/command.rs:404-412 | src/cli/src/data/import_v2/command.rs:131-139 \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/src/data/export_v2/command.rs"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"72eac3443f83ad1a77061ca9643970cf7bcf01c82ea3de5d4040fe9c71da48c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/cmd/src/datanode/parquetbench.rs:309-317 | src/cmd/src/datanode/scanbench.rs:919-927 \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/cmd/src/datanode/parquetbench.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3fbc457f960629dd67c2ea51cc0d06306926f3b80ba93ca96070bc88d34764c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/common/function/src/scalars/geo/geohash.rs:95-103 | src/common/function/src/scalars/geo/h3.rs:194-202 \u2014 before extracting anything, compare \u0060src/common/function/src/scalars/geo/geohash.rs\u0060 and \u0060src/common/function/src/scalars/geo/h3.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 43 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/common/function/src/scalars/geo/geohash.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"93f556640672d4b5e0fa904a6748ba457680179f945f4cffeb2b3957a5349a23"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20139 lines \u00D7 4): src/common/function/src/scalars/geo/measure.rs:68-76 | src/common/function/src/scalars/geo/measure.rs:131-139 | src/common/function/src/scalars/ip/range.rs:70-73 | src/common/function/src/scalars/ip/range.rs:158-161 \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/common/function/src/scalars/geo/measure.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc02dcebd4ec5b500f46d992f5017e7e3a64f403a77401dfab17b4a27c801d12"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): src/common/function/src/scalars/hll_count.rs:81-89 | src/common/function/src/scalars/welford_stddev.rs:75-82 \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/common/function/src/scalars/hll_count.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"268f388fa9824584ae2a2f5999e27f2ac9bf31dd8d22a578112ebf7ec9a2e9de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/common/function/src/scalars/ip/cidr.rs:82-90 | src/common/function/src/scalars/ip/cidr.rs:220-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/common/function/src/scalars/ip/cidr.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaa0033743eff8976fb0a0f8a0ae9d4345efa08253aee372832ab20e6d1b4bd9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20139 lines \u00D7 3): src/common/function/src/scalars/ip/range.rs:83-91 | src/common/function/src/scalars/ip/range.rs:169-177 | src/common/function/src/scalars/json/json_path_match.rs:74-77 \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/common/function/src/scalars/ip/range.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebdf9fbc2baeabbdabf9d121208a1614b284dd8a0fd42c9788b2ba4e56409ec1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): src/common/function/src/admin/flush_compact_table.rs:172-180 | src/common/function/src/admin/reconcile_table.rs:64-71 \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/common/function/src/admin/flush_compact_table.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac8cb226cc7a5575c5b3712f04e995f3160124830efb0a496b10c3a6eb714545"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/common/meta/src/ddl/drop_table/executor.rs:432-440 | src/common/meta/src/ddl/undrop_table.rs:518-526 \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/common/meta/src/ddl/drop_table/executor.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f89836e9db3f01f3ca6bd4e85da154073d317dfe09cbb6c8d304f2da4bd364"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/common/meta/src/key/tombstone.rs:446-454 | src/common/meta/src/key/tombstone.rs:506-514 \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/common/meta/src/key/tombstone.rs"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5cf8b4dcbf0f3c2c90d44c95edc37bd256dec5188ae372fe8266a3b5be8983a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/common/meta/src/key.rs:1619-1627 | src/common/meta/src/key.rs:1788-1796 \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/common/meta/src/key.rs"},"region":{"startLine":1619}}}],"partialFingerprints":{"codehealthFindingId/v1":"791a9c30db5232afda700141349abc26291862ac3c8b80b77b68d19ab3845a2b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/common/meta/src/state_store.rs:299-307 | src/common/meta/src/state_store.rs:332-340 \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/common/meta/src/state_store.rs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fb285d8dcb81a25bb5a74c9f79edd3d8f1a7082d59706b39aaaea19e901418e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): src/common/query/src/native_histogram/encoding.rs:101-108 | src/common/query/src/native_histogram/encoding.rs:355-363 \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/common/query/src/native_histogram/encoding.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"df3f796b4e25efff9a0a7c894316e554ae5deec52e6c19cbee90ffb227a8eb7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20139 lines \u00D7 2): src/common/query/src/native_histogram.rs:1083-1088 | src/servers/src/otlp/metrics.rs:893-901 \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/common/query/src/native_histogram.rs"},"region":{"startLine":1083}}}],"partialFingerprints":{"codehealthFindingId/v1":"5545986c4e6d9159b035a686ab513339653f91a581890f49b12e28d2092e1802"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/flow/src/batching_mode/task.rs:928-936 | src/flow/src/batching_mode/task.rs:1066-1074 \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/flow/src/batching_mode/task.rs"},"region":{"startLine":928}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc4434fc3f5ef765b707dacf2e3c6bbfccfad5c9f81a902101794defadf5c1ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/frontend/src/instance/influxdb.rs:196-204 | src/servers/src/otlp/logs.rs:887-895 \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/frontend/src/instance/influxdb.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b32aae92081b19c4503306175eaa52ff60653d6f7fe69536dab1c24c24ef485"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/meta-srv/src/procedure/repartition.rs:921-929 | src/meta-srv/src/procedure/repartition.rs:939-947 \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/meta-srv/src/procedure/repartition.rs"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"3db22e9e8d688b1ca43c9f1b6a9db40687014b314cbddb9eb2ea01f31b2a95e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/metric-engine/src/batch_modifier.rs:71-79 | src/metric-engine/src/batch_modifier.rs:90-98 \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/metric-engine/src/batch_modifier.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9a2a428e168f03821f8067de93334d2586a1fd90913bf2b82a3b533abe31232"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/mito-codec/src/key_values.rs:149-157 | src/mito-codec/src/key_values.rs:162-170 \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/mito-codec/src/key_values.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b60a2ee9eb040a22e483d56dd11dee67c98193ede9400cc0d5d063f727e2332"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/mito2/src/memtable/bulk/part.rs:185-193 | src/mito2/src/memtable/bulk/part.rs:1818-1826 \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/mito2/src/memtable/bulk/part.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"475986e5dcc8557c75a9caba6bf33339dba84b34a1d1c6d272a82bcf3ad34ba9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/mito2/src/memtable/simple_bulk_memtable.rs:78-86 | src/mito2/src/memtable/time_series.rs:244-252 \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/mito2/src/memtable/simple_bulk_memtable.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f84b7206ff544a3c21be177162b57d926080f464944ec0057e9b3fa1fbe7109"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/mito2/src/read/compat.rs:411-419 | src/mito2/src/read/compat.rs:574-582 \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/mito2/src/read/compat.rs"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"04dba28ad42c060d1d2fdfe93217dd769571c19f9d25304a46c41492763a0f97"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/mito2/src/region/version.rs:130-138 | src/mito2/src/region/version.rs:208-217 \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/mito2/src/region/version.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"744b0aa95520fe80eebedfa3da49dee31da37a6e9fd597b6fc16e4537e3bcd89"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/mito2/src/sst/index/bloom_filter/applier/builder.rs:173-181 | src/mito2/src/sst/index/bloom_filter/applier/builder.rs:249-257 \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/mito2/src/sst/index/bloom_filter/applier/builder.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee76c4241e4e64bd1393bd83ef8f2d415f22ac23fd71f849c961bc02cbb5c594"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/mito2/src/sst/index/bloom_filter/applier.rs:219-227 | src/mito2/src/sst/index/fulltext_index/applier.rs:492-500 \u2014 \u0060src/mito2/src/sst/index/bloom_filter/applier.rs\u0060 and \u0060src/mito2/src/sst/index/fulltext_index/applier.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 45 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/applier.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"91327981bbba1e5773e4f4e73dcc7fb4bb34d6255c56e4b96724ed92c09a51b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/mito2/src/sst/index/bloom_filter/creator.rs:241-249 | src/mito2/src/sst/index/inverted_index/creator.rs:297-305 \u2014 \u0060src/mito2/src/sst/index/bloom_filter/creator.rs\u0060 and \u0060src/mito2/src/sst/index/inverted_index/creator.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 63 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/creator.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c8d1468740688cf66f4a4eec0917ffb478352dd8d9e0a377cf009e357ff94e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): src/operator/src/insert.rs:1239-1247 | src/operator/src/insert.rs:1290-1297 \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/operator/src/insert.rs"},"region":{"startLine":1239}}}],"partialFingerprints":{"codehealthFindingId/v1":"5230fb3b638d2c56e7796cc548ff91f0d5e37cb8d895fcc0b37863e5da6eaa9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/pipeline/src/etl/transform/transformer/greptime/coerce.rs:212-220 | src/pipeline/src/etl/transform/transformer/greptime/coerce.rs:414-422 \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/pipeline/src/etl/transform/transformer/greptime/coerce.rs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f3f5b0f9060185b018b7e55da685aea07cba4f357eb43664b50552e5f7724d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/query/src/part_sort.rs:1037-1045 | src/query/src/part_sort.rs:1100-1108 \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/query/src/part_sort.rs"},"region":{"startLine":1037}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc4e5357fb820acdd348ca8428a731db918515eca58a26bcabb9d2dae715b720"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/servers/src/batcher/logical_table/tables.rs:304-312 | src/servers/src/batcher/logical_table/tables.rs:405-413 \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/servers/src/batcher/logical_table/tables.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"81bbde827d5e65788c3c32baf364790b63b5866baeb80b84d61c0224a8e2e473"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/servers/src/http/prometheus.rs:749-757 | src/servers/src/http/prometheus.rs:1828-1836 \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/servers/src/http/prometheus.rs"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"831cc1e9725749148aad0f6556b16e43d86395e0ffca60897a1c4ed7d7302eff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/servers/src/http/result/csv_result.rs:115-123 | src/servers/src/http/result/json_result.rs:76-84 \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/servers/src/http/result/csv_result.rs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"834b389e0efcb49fd0d45e70d863e36f3dbccee3351a0ab3b9f20ef78b2b52db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/servers/src/postgres/types.rs:1177-1185 | src/servers/src/postgres/types.rs:1289-1297 \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/servers/src/postgres/types.rs"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"406ab6fe77031ee776a9c538a2a4d6a8e4b87ca8c0b9c219a94bbc2c60af9bc8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 8): src/table/src/metadata.rs:582-589 | src/table/src/metadata.rs:642-649 | src/table/src/metadata.rs:899-906 | src/table/src/metadata.rs:987-994 | src/table/src/metadata.rs:1164-1171 | src/table/src/metadata.rs:1239-1246 | src/table/src/metadata.rs:1351-1358 | src/table/src/metadata.rs:1394-1401 \u2014 all 8 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/table/src/metadata.rs"},"region":{"startLine":582}}}],"partialFingerprints":{"codehealthFindingId/v1":"455b506a0f969841977df778ac56490e831d35116ec8a301a698b2d1ab68e1cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 6): src/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs:225-232 | src/meta-srv/src/procedure/region_migration/upgrade_candidate_region.rs:253-260 | src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs:277-284 | src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:262-269 | src/meta-srv/src/procedure/repartition/group/remap_manifest.rs:143-150 | src/meta-srv/src/procedure/repartition/group/sync_region.rs:231-238 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs\u0060 and \u0060src/meta-srv/src/procedure/region_migration/upgrade_candidate_region.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 31 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/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe1d44530ac01cf2fe7adb8adf41021edb28353dd9a88a8ff3847a24b4ba3dc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): src/common/function/src/scalars/vector/vector_add.rs:67-74 | src/common/function/src/scalars/vector/vector_div.rs:68-75 | src/common/function/src/scalars/vector/vector_mul.rs:67-74 | src/common/function/src/scalars/vector/vector_sub.rs:66-73 \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 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/scalars/vector/vector_add.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"58bc06dfddef38628695c773cddee62e29bfa5b7a975d9e27db07341c0235715"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): src/common/function/src/scalars/geo/measure.rs:69-76 | src/common/function/src/scalars/geo/measure.rs:132-139 | src/common/function/src/scalars/geo/measure.rs:203-210 \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/common/function/src/scalars/geo/measure.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f3e4c6b1719be2caa730bbd108d3c404a15c6de4b6e267c03701199d04f753"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): src/common/function/src/scalars/ip/ipv6.rs:163-170 | src/common/function/src/scalars/json/parse_json.rs:59-66 | src/common/function/src/scalars/vector/convert/parse_vector.rs:60-67 \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":"src/common/function/src/scalars/ip/ipv6.rs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"62c01d91643921fa7f51a2a641cc097022ac2366023941ebeeaad3fc4d85dd41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): src/servers/src/grpc/flight/stream.rs:231-238 | src/servers/src/grpc/flight/stream.rs:354-361 | src/servers/src/grpc/flight/stream.rs:615-622 \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/servers/src/grpc/flight/stream.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"146ba94db4d7b9e098f5e537847f45a89dc421a2be2311ecc535cabe74168134"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 3): src/sql/src/parsers/alter_parser/trigger.rs:315-322 | src/sql/src/parsers/create_parser/trigger.rs:392-398 | src/sql/src/parsers/create_parser/trigger.rs:433-439 \u2014 \u0060src/sql/src/parsers/alter_parser/trigger.rs\u0060 and \u0060src/sql/src/parsers/create_parser/trigger.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 45 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sql/src/parsers/alter_parser/trigger.rs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"aafd5ac7de783a30ada3616cd97ce0897635de7c121070cb4eb0d463529e705e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): src/cli/src/database.rs:113-119 | src/cli/src/database.rs:177-184 \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/src/database.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"9616de98deb158fc4cdbad14612f9225435de3753aa62e6c97f29a2fa45aa941"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/function/src/aggrs/approximate/uddsketch.rs:72-79 | src/common/function/src/aggrs/approximate/uddsketch.rs:92-99 \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/common/function/src/aggrs/approximate/uddsketch.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a0325e400d603f51db48ffe17c3728f47c3ca23c3c0ad024dec078417471bda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/function/src/scalars/ip/cidr.rs:92-99 | src/common/function/src/scalars/ip/cidr.rs:231-238 \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/common/function/src/scalars/ip/cidr.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"9095f8b97349865e1e4e3d3b01fc326a46c14a7b1c2c46b65047c61faca6341f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/macro/src/row/schema.rs:130-137 | src/common/macro/src/row/schema.rs:171-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/common/macro/src/row/schema.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"245b7c1d3212b52704c49945ac18ef4f09bd908f88333ce5b2336c3998a0a7ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): src/common/procedure/src/error.rs:257-264 | src/common/procedure/src/error.rs:301-307 \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/common/procedure/src/error.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2d034e4ef5171c510ad6e4d31bc5515c8549335c6e87563030e5b6de56291dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/query/src/request.rs:109-116 | src/common/query/src/request.rs:225-232 \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/common/query/src/request.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"d524851d92fc834fa815c6deec82816e3fe891d28bac81ba1c15751ef03a7d7e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/datatypes/src/vectors/binary.rs:428-435 | src/datatypes/src/vectors/decimal.rs:232-239 \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/datatypes/src/vectors/binary.rs"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef727834ba171d75ec0862ca0e1b9a706d182c007910a7f3a6d7056e611d899e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/frontend/src/instance/otlp/trace_ingest.rs:536-543 | src/frontend/src/instance/otlp/trace_ingest.rs:1993-2000 \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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e54f332d2ae622dc416eba3db1638db10314409bd2b67bdc47eb91ab4450dca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/meta-srv/src/cluster.rs:240-247 | src/meta-srv/src/cluster.rs:269-276 \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/meta-srv/src/cluster.rs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"93f70e5c5ca1f4575a125a3d2402c0e92b99b01d84d68ff237b91c932201bc6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/meta-srv/src/metasrv.rs:807-814 | src/standalone/src/information_extension.rs:83-90 \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/meta-srv/src/metasrv.rs"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"93b534ad8e045937fdb6360a2115d28ae0c9d525e3021542e0983681aaa4b7f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs:234-241 | src/meta-srv/src/procedure/region_migration/open_candidate_region.rs:180-187 \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/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"518a1f9852a292fc5e52721bd2216875d47837d679f571e0784a8d5ae6ba908c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/mito2/src/cache/index/bloom_filter_index.rs:189-196 | src/mito2/src/cache/index/inverted_index.rs:159-166 \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/mito2/src/cache/index/bloom_filter_index.rs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad41bd3f3d5eb81914a4870b6340aed7e1c7389adc57a5657269c036ad5029a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/mito2/src/memtable/bulk.rs:651-658 | src/mito2/src/memtable/time_series.rs:430-437 \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/mito2/src/memtable/bulk.rs"},"region":{"startLine":651}}}],"partialFingerprints":{"codehealthFindingId/v1":"b58e6100bb5dde7ac42b3e1719a058863efd416be78baa08372961710686472c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/mito2/src/read/scan_util.rs:1433-1440 | src/mito2/src/read/series_reader.rs:421-428 \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/mito2/src/read/scan_util.rs"},"region":{"startLine":1433}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a56a33bfabb29db4fa3ef425cdc0287cc85c70128f0dbfbfed63d288efba2af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): src/mito2/src/read/series_reader.rs:344-350 | src/mito2/src/read/series_scan.rs:763-770 \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/mito2/src/read/series_reader.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f8a5ae6a6b5930b8ae1cc375047fbafaa03147b6b024e1a57cd57b878ed4e7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/mito2/src/worker/handle_write.rs:584-591 | src/mito2/src/worker/handle_write.rs:688-695 \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/mito2/src/worker/handle_write.rs"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dc63394cfe44447fda64f466a2f9deea412d52f96141c121dc87de30f7c9ad2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/partition/src/simplify.rs:249-256 | src/partition/src/simplify.rs:266-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":"src/partition/src/simplify.rs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"696a58cc49acc28832fe65e076b9dbedf8ae5f133beae261eb63313ac4d45807"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/promql/src/extension_plan/instant_manipulate.rs:410-417 | src/promql/src/extension_plan/range_manipulate.rs:236-243 \u2014 before extracting anything, compare \u0060src/promql/src/extension_plan/instant_manipulate.rs\u0060 and \u0060src/promql/src/extension_plan/range_manipulate.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 43 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/promql/src/extension_plan/instant_manipulate.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"c086dc2311d74b7c145f8b9da906f47041bfac2cf5498fc096d6061a6cc6e1cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): src/query/src/dist_plan/merge_scan.rs:1211-1218 | src/query/src/dist_plan/merge_scan.rs:1225-1231 \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/query/src/dist_plan/merge_scan.rs"},"region":{"startLine":1211}}}],"partialFingerprints":{"codehealthFindingId/v1":"c91052e00ae92270d96b96b8c5c666a2a97843e80f0e630709c0dbb8f46fac5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/query/src/promql/planner.rs:1170-1177 | src/query/src/promql/planner.rs:1178-1185 \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/query/src/promql/planner.rs"},"region":{"startLine":1170}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d30768589924474520b524808ed0b2aeb066a8a36249925507dad0e8bfa25f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/servers/src/http/authorize.rs:233-240 | src/servers/src/http/authorize.rs:275-282 \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/servers/src/http/authorize.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e0129c9bd90200288b497afd2debfcfc614323d6d6aa3f39ac46047ca030816"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): src/servers/src/mysql/handler.rs:883-890 | src/servers/src/mysql/handler.rs:914-920 \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/servers/src/mysql/handler.rs"},"region":{"startLine":883}}}],"partialFingerprints":{"codehealthFindingId/v1":"58201b3050b9e1e340ce0551358a4b2528f2b2563bd623cb7b77ab86cd1a7de9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/sql/src/parsers/alter_parser.rs:209-216 | src/sql/src/parsers/alter_parser.rs:259-266 \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/sql/src/parsers/alter_parser.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e09c03b4436339d1587ed7febc9cb9a9e8d39192070dc4103496c9ec7a8414"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/store-api/src/sst_entry.rs:178-185 | src/store-api/src/sst_entry.rs:382-389 \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/store-api/src/sst_entry.rs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf7a87b45b28c5fff086376e49890c43ad8649b764d3863f1b70b397a2c48607"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20137 lines \u00D7 5): src/servers/src/postgres/types.rs:622-627 | src/servers/src/postgres/types.rs:663-669 | src/servers/src/postgres/types.rs:707-713 | src/servers/src/postgres/types.rs:773-779 | src/servers/src/postgres/types.rs:824-830 \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":"src/servers/src/postgres/types.rs"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"a504260b3b2464de5c88c4c5485bdc46a2fc8c31e7444e97a5d72426a2433c69"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/common/function/src/scalars/geo/h3.rs:1007-1013 | src/common/function/src/scalars/geo/h3.rs:1218-1224 | src/common/function/src/scalars/geo/h3.rs:1284-1290 \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/common/function/src/scalars/geo/h3.rs"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"905aecd903c201d47c6445fd9533371803b342bd5d0c8219582ef8cd5f3a0c7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/mito2/src/read/seq_scan.rs:77-83 | src/mito2/src/read/series_scan.rs:148-154 | src/mito2/src/read/unordered_scan.rs:62-68 \u2014 before extracting anything, compare \u0060src/mito2/src/read/seq_scan.rs\u0060 and \u0060src/mito2/src/read/unordered_scan.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 54 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/mito2/src/read/seq_scan.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c9375e81d0e3fd4f0f50a3e09e62691a18e1e0a6e58a9841774ce9b1b7a8d5f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/pipeline/src/etl/processor/json_parse.rs:102-108 | src/pipeline/src/etl/processor/json_path.rs:134-140 | src/pipeline/src/etl/processor/simple_extract.rs:105-111 \u2014 before extracting anything, compare \u0060src/pipeline/src/etl/processor/json_path.rs\u0060 and \u0060src/pipeline/src/etl/processor/simple_extract.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 40 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/pipeline/src/etl/processor/json_parse.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"175aad5a7a8037104289d9cc188f96f855cf5d9daa615cf4c911f60251a4ac71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5\u20137 lines \u00D7 3): src/query/src/promql/planner.rs:1520-1524 | src/query/src/promql/planner.rs:5928-5934 | src/query/src/promql/planner.rs:6222-6227 \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/query/src/promql/planner.rs"},"region":{"startLine":1520}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc0437dd1f2b2e6b269fe6fd6a58d19cdfff864d44e931e69a8b0b4304f4b883"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/catalog/src/system_schema/information_schema/flows.rs:164-170 | src/query/src/sql.rs:1222-1230 \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/catalog/src/system_schema/information_schema/flows.rs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"903a6af874438f2940ddfd8900e3807ac386ac86b3db67ca06501856467e8cea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/cmd/src/bin/query_regression_runner/remote/ingest.rs:297-303 | src/cmd/src/bin/query_regression_runner/remote/storage.rs:69-75 \u2014 before extracting anything, compare \u0060src/cmd/src/bin/query_regression_runner/remote/ingest.rs\u0060 and \u0060src/cmd/src/bin/query_regression_runner/remote/storage.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 30 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/cmd/src/bin/query_regression_runner/remote/ingest.rs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"35d9661b57e6a1fbd9a08827ed5b85b6f55f912a2d33a5d9738ac8f255395ce6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5\u20137 lines \u00D7 2): src/cmd/src/bin/query_regression_runner/sql.rs:87-93 | src/cmd/src/bin/query_regression_runner/sql.rs:243-247 \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/cmd/src/bin/query_regression_runner/sql.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9c53ee72f6040676a8b69e839ee65ba923dae8885ab3ab40900aebe7c02650b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/function/src/aggrs/vector/avg.rs:89-95 | src/common/function/src/aggrs/vector/product.rs:109-115 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/vector/avg.rs\u0060 and \u0060src/common/function/src/aggrs/vector/product.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 33 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/common/function/src/aggrs/vector/avg.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e00a7d46a9b85759077d590683d708e65a0c8eeff54eda9653485b7367eeb76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/function/src/scalars/geo/h3.rs:104-110 | src/common/function/src/scalars/geo/h3.rs:829-835 \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/common/function/src/scalars/geo/h3.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"79c30ea515987aeabe764c31d2ce42999262197227b595b85d59fe02adf9d6c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/function/src/scalars/ip/ipv4.rs:86-92 | src/common/function/src/scalars/ip/ipv6.rs:69-75 \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/common/function/src/scalars/ip/ipv4.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1bee1c936b94f0af93d3764cb5b0dfe6fe7985174694c07e523f72e9009dffe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/function/src/scalars/vector.rs:173-179 | src/common/function/src/scalars/vector.rs:181-187 \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/common/function/src/scalars/vector.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fdfd8776cba93422ef60e67edee3ad0772c6cb9fe2cd2829c19a100b0295540"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/meta/src/cache/flow/table_flownode.rs:113-119 | src/common/meta/src/cache/flow/table_flownode.rs:147-153 \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/common/meta/src/cache/flow/table_flownode.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"78b9693ab321bec0f845b51b37e77cac6edd63e5c8a35b719be6887e18b3bcc9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/meta/src/ddl/drop_table.rs:421-427 | src/common/meta/src/ddl/truncate_table.rs:97-103 \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/common/meta/src/ddl/drop_table.rs"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d27ea62e977b335b3396bab7b1f0f82c45232cf24398dd63cf600e14e997ddd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/meta/src/election/rds/postgres.rs:760-766 | src/common/meta/src/election/rds/postgres.rs:802-808 \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/common/meta/src/election/rds/postgres.rs"},"region":{"startLine":760}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8525cf0d9a2130570a719bc7868809b88dade63834cb64345a37b525ab5afbf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/meta/src/key/tombstone.rs:418-424 | src/common/meta/src/key/tombstone.rs:470-476 \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/common/meta/src/key/tombstone.rs"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"22cd7fc248d0fdcecc6a1c75c4d9bb2f48835b6e22012c0c854cb28b239ffeb2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/flow/src/adapter/flownode_impl.rs:308-314 | src/flow/src/server.rs:480-486 \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/flow/src/adapter/flownode_impl.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"a996c4e8ec26d578d81ee5260c3cd901f39b2e156e4fda5e16acaeb290818bcb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/flow/src/batching_mode/table_creator.rs:143-149 | src/flow/src/batching_mode/table_creator.rs:158-164 \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/flow/src/batching_mode/table_creator.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf6b18c7bfd09ea9b58a9b0af5a6f976c52486deb4e138879f7c572f28f33b21"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/frontend/src/instance/jaeger.rs:212-218 | src/frontend/src/instance/jaeger.rs:279-285 \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/frontend/src/instance/jaeger.rs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"905344ed945c36331b3b4e001ade9c7c01f13fe23d006cd53795869630a1347c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/index/src/fulltext_index/create/tantivy.rs:119-125 | src/index/src/fulltext_index/create/tantivy.rs:143-149 \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/index/src/fulltext_index/create/tantivy.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee7095bef37bd1ceed4ef41f509ca9a0420cac6419fd072464bd6bfbaf3bdcc6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/mito2/src/engine.rs:876-882 | src/mito2/src/engine.rs:990-996 \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/mito2/src/engine.rs"},"region":{"startLine":876}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d6b638420bd566240070afe647dd38edeee8115bf9ea289a2f5e4ab53c48b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/mito2/src/gc.rs:932-938 | src/mito2/src/gc.rs:940-946 \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/mito2/src/gc.rs"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"c014c7983f798a904e7cbbf1faecc798f7d8f2c9803fa263cb18de84a36aa5b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/mito2/src/read/seq_scan.rs:288-294 | src/mito2/src/read/series_reader.rs:380-386 \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/mito2/src/read/seq_scan.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c06e462c537362a7cd1bb39f170a9dd44e82b80d2ec0c3eb65129889a14e962"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/mito2/src/region/version.rs:191-197 | src/mito2/src/region/version.rs:231-237 \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/mito2/src/region/version.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4de456f0e8ceeec6e031b281ababfa171622b77fdc2685f38e8ccf26514b32a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/mito2/src/sst/index/bloom_filter/creator.rs:153-159 | src/mito2/src/sst/index/inverted_index/creator.rs:148-154 \u2014 \u0060src/mito2/src/sst/index/bloom_filter/creator.rs\u0060 and \u0060src/mito2/src/sst/index/inverted_index/creator.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 63 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/creator.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a2df2c8b2d209afcd646e82016424cca3cfb4c056ebecffa1536675c62a0879"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/mito2/src/sst/index/fulltext_index/applier.rs:631-637 | src/mito2/src/sst/index/fulltext_index/applier.rs:676-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":"src/mito2/src/sst/index/fulltext_index/applier.rs"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b3bd9dd6fb56f2693eba0fdd7b11f2c351896f0a7744eae99eff9ca5325acc9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/mito2/src/sst/parquet/prefilter.rs:118-124 | src/mito2/src/sst/parquet/prefilter.rs:155-161 \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/mito2/src/sst/parquet/prefilter.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6a2b7ab33bd0c5c4f60e4252652e58593b3c8b8e989ec649cdd6d958e29006e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/query/src/log_query/planner.rs:142-148 | src/query/src/log_query/planner.rs:153-159 \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/query/src/log_query/planner.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"56951bc9f35d0068185ae2b78766ab553313739feee049328e73412032d0441b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/query/src/part_sort.rs:1174-1180 | src/query/src/part_sort.rs:1190-1196 \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/query/src/part_sort.rs"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"32fb79f14fc25deb662f3f1faaf80afc5391518dcd64f5c7010632c39a09e2f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/query/src/promql/planner.rs:1141-1147 | src/query/src/promql/planner.rs:1149-1155 \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/query/src/promql/planner.rs"},"region":{"startLine":1141}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9168e98ec85944aea0be91da616b66a2e6af9e2653abfe6b31d6753e678d946"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20137 lines \u00D7 2): src/query/src/promql/planner.rs:3787-3793 | src/query/src/promql/planner.rs:3797-3802 \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/query/src/promql/planner.rs"},"region":{"startLine":3787}}}],"partialFingerprints":{"codehealthFindingId/v1":"74dd7699553f916c6c27642a867c3611ddf5d024fa3f95d6e4aa085178d59c8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/query/src/sql.rs:954-960 | src/query/src/sql.rs:1000-1006 \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/query/src/sql.rs"},"region":{"startLine":954}}}],"partialFingerprints":{"codehealthFindingId/v1":"8beba19266f65939240ba0a6b151a4f304185c8ced784037a4f29f21b833017a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): src/common/time/src/duration.rs:84-89 | src/common/time/src/time.rs:98-103 | src/common/time/src/timestamp.rs:299-304 \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":"src/common/time/src/duration.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"59556695e1fefc947dc44e9440e57f0a66d9f07f0e16483d6ef1f6db4c229e94"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): src/servers/src/http/prometheus.rs:406-411 | src/servers/src/http/prometheus.rs:537-542 | src/servers/src/http/prometheus.rs:2386-2392 \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/servers/src/http/prometheus.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1b8a1cd9b7592b0893951b5e56d392319e581774e2f6d0c49b7db2a4f470cef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): src/sql/src/parsers/alter_parser/trigger.rs:111-116 | src/sql/src/parsers/alter_parser/trigger.rs:138-143 | src/sql/src/parsers/alter_parser/trigger.rs:171-176 \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/sql/src/parsers/alter_parser/trigger.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"a86292ba0ac38c081510c1dda42bcaf62f7fec044a1a0cf2de18f64b2a96738a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): src/store-api/src/region_info.rs:107-112 | src/store-api/src/sst_entry.rs:179-184 | src/store-api/src/sst_entry.rs:383-388 \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/store-api/src/region_info.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"f66e2156d98918868dad37fd3c48a49b582aedd5d337255d4ee7390210e97b40"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/cmd/src/datanode/objbench.rs:491-496 | src/mito2/src/worker.rs:215-220 \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/cmd/src/datanode/objbench.rs"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bff32061f0826e43611da9b004ebe1995c865b7f4016f832d80f15f5aa36594"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/cmd/src/datanode/objbench.rs:501-506 | src/mito2/src/worker.rs:225-230 \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/cmd/src/datanode/objbench.rs"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"48f95ffa0f71e2d67af10f8864dcc808da44213e26c8e11b458571498824fd02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/common/function/src/aggrs/vector/avg.rs:97-102 | src/common/function/src/aggrs/vector/product.rs:117-122 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/vector/avg.rs\u0060 and \u0060src/common/function/src/aggrs/vector/product.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 33 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/common/function/src/aggrs/vector/avg.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"05c2ce4be199662ac2cf0a8d07cf1f764f3d1b2f6457382addd8e6301227d531"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/common/function/src/scalars/vector/scalar_add.rs:90-95 | src/common/function/src/scalars/vector/scalar_mul.rs:90-95 \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/common/function/src/scalars/vector/scalar_add.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2ff9495c0127bd31096349a032c07a6db8b93530815334b6ee99c5054aea016"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/common/function/src/flush_flow.rs:81-86 | src/frontend/src/instance.rs:1792-1797 \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/common/function/src/flush_flow.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"4804459f2ba0656323548bb33e3239a3aef293eeeaa74f58af7b84a3d399b7a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20136 lines \u00D7 3): src/common/meta/src/election/rds/mysql.rs:839-844 | src/common/meta/src/election/rds/mysql.rs:858-861 | src/common/meta/src/election/rds/mysql.rs:871-876 \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/common/meta/src/election/rds/mysql.rs"},"region":{"startLine":839}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4b56329ac510bd4f1407f84677e60fd917f9a77185a7bbd58dc3d7f62937f35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/common/meta/src/key/flow/flow_state.rs:256-261 | src/common/meta/src/key/flow/flow_state.rs:328-333 \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/common/meta/src/key/flow/flow_state.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"904f391ed0094088331581c855efb550de96e8c72d25da054cb82219dcc0569a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/datatypes/src/value.rs:1247-1253 | src/datatypes/src/vectors/helper.rs:149-154 \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/datatypes/src/value.rs"},"region":{"startLine":1247}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e8c3911072092ff2b6ac2b31561e7465226033bfab7b27f94a1f05ec7544534"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/mito-codec/src/row_converter/dense.rs:79-84 | src/mito-codec/src/row_converter/dense.rs:326-331 \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/mito-codec/src/row_converter/dense.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"dabfc468670608d8034af27419182e6f52e5bd127e6f81316e558fc5a66bc3dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/mito2/src/memtable/simple_bulk_memtable.rs:127-132 | src/mito2/src/memtable/time_series.rs:261-266 \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/mito2/src/memtable/simple_bulk_memtable.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"f917c543214d998368a445a77d3b1f3a44fae9fc03138c3ab2d564fc358c86f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/mito2/src/read/flat_merge.rs:829-834 | src/mito2/src/read/flat_merge.rs:984-989 \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/mito2/src/read/flat_merge.rs"},"region":{"startLine":829}}}],"partialFingerprints":{"codehealthFindingId/v1":"e25964729d1292624be4873771f18ff8db86a3236281c78cffe93784ab0f99a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/mito2/src/sst/index/bloom_filter/applier/builder.rs:324-329 | src/mito2/src/sst/index/inverted_index/applier/builder.rs:246-251 \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/mito2/src/sst/index/bloom_filter/applier/builder.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"d420270f40112a38c3812f00b33e9d6251fffa072077cae66037fef7c768d68b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/promql/src/extension_plan/absent.rs:478-483 | src/promql/src/extension_plan/absent.rs:492-497 \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/promql/src/extension_plan/absent.rs"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"a284a492ee9d225e3d2bf942e5843de554c11b8bcf4d982b962a3a1ef4ac29d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/query/src/datafusion.rs:220-225 | src/query/src/datafusion.rs:236-241 \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/query/src/datafusion.rs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"23e199eb27dd39632a83e99f9b6bdea802304f5e27a08c701bf74bf3fd6e0d25"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/query/src/optimizer/count_nest_aggr.rs:291-296 | src/query/src/optimizer/count_nest_aggr.rs:311-316 \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/query/src/optimizer/count_nest_aggr.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcaa7484358a9a65a242a510eb24abe15ed143ca388aab3477232a7fdb37a092"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/servers/src/http/handler.rs:219-224 | src/servers/src/http/handler.rs:866-871 \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/servers/src/http/handler.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"43932b75c52f4aa48cb72f11712a719b56113e88f26947c9fdf45e943205a806"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/servers/src/http/memory_limit.rs:63-68 | src/servers/src/http/memory_limit.rs:148-153 \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/servers/src/http/memory_limit.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"88df2822d6089c0dd4253aca9d5cefa6cbd5a0df16aecfe0f2cdf5ec7c4b3880"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/sql/src/statements/create.rs:380-385 | src/sql/src/statements/create.rs:448-453 \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/sql/src/statements/create.rs"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac68fff25f90ba59c47774fbefc4a9e08b27af00a7f5833879ca87ce4cef4201"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 5): src/pipeline/src/etl/processor/csv.rs:197-203 | src/pipeline/src/etl/processor/date.rs:197-203 | src/pipeline/src/etl/processor/dissect.rs:613-617 | src/pipeline/src/etl/processor/letter.rs:129-133 | src/pipeline/src/etl/processor/urlencoding.rs:130-134 \u2014 before extracting anything, compare \u0060src/pipeline/src/etl/processor/dissect.rs\u0060 and \u0060src/pipeline/src/etl/processor/letter.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. 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/pipeline/src/etl/processor/csv.rs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa355fbb1fce1c1c13ddaf3357af40121f30efd4be5ffbdbf0bbdddc12adc23c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): src/common/function/src/scalars/geo/geohash.rs:95-99 | src/common/function/src/scalars/geo/geohash.rs:196-200 | src/common/function/src/scalars/geo/h3.rs:103-107 | src/common/function/src/scalars/geo/h3.rs:194-198 \u2014 before extracting anything, compare \u0060src/common/function/src/scalars/geo/geohash.rs\u0060 and \u0060src/common/function/src/scalars/geo/h3.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 43 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/common/function/src/scalars/geo/geohash.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"f09b5e9383cefb7e1beccea64444255c62a8e6e99f1540948fe9f7014c6da28d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): src/common/function/src/scalars/geo/geohash.rs:102-106 | src/common/function/src/scalars/geo/geohash.rs:203-207 | src/common/function/src/scalars/geo/h3.rs:110-114 | src/common/function/src/scalars/geo/h3.rs:201-205 \u2014 before extracting anything, compare \u0060src/common/function/src/scalars/geo/geohash.rs\u0060 and \u0060src/common/function/src/scalars/geo/h3.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 43 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/common/function/src/scalars/geo/geohash.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c3bb0c1c4ee5c82e71b34a5de26132d087f2ab561d03b5ca0311e8b59402997"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/common/function/src/scalars/geo/geohash.rs:99-103 | src/common/function/src/scalars/geo/h3.rs:198-202 | src/common/function/src/scalars/geo/wkt.rs:82-86 \u2014 before extracting anything, compare \u0060src/common/function/src/scalars/geo/geohash.rs\u0060 and \u0060src/common/function/src/scalars/geo/h3.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 43 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/common/function/src/scalars/geo/geohash.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e8a6787c63d00e4ff357d32c74b3707aa3206b8148f2230dcf233ad716cc3bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/common/meta/src/ddl/create_table.rs:396-400 | src/common/meta/src/ddl/create_view.rs:268-272 | src/common/meta/src/reconciliation/reconcile_table.rs:356-360 \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":"src/common/meta/src/ddl/create_table.rs"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6fb9f670deee8b1f5ca4424187a2ee1a0adbb335b3313b11230f00c753cb462"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/common/meta/src/ddl/drop_table.rs:404-408 | src/common/meta/src/ddl/drop_view.rs:205-209 | src/common/meta/src/ddl/truncate_table.rs:81-85 \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":"src/common/meta/src/ddl/drop_table.rs"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ce0029fa4b849f0bbcf313b6d7c8570d37729c1b424bee236097ad3d175843a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/query/src/sql.rs:651-655 | src/query/src/sql.rs:731-735 | src/query/src/sql.rs:1067-1071 \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/query/src/sql.rs"},"region":{"startLine":651}}}],"partialFingerprints":{"codehealthFindingId/v1":"df9444e41ddd3ae64d26a241d02e461bbaa91fc4a1027715aac230b1947ba074"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/catalog/src/system_schema/information_schema/partitions.rs:269-274 | src/catalog/src/system_schema/information_schema/tables.rs:279-283 \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/catalog/src/system_schema/information_schema/partitions.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"80ecb47596fd50706ac78bce4a44de60455e9c442f7e6f847391a8e55aaa187a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/common/datasource/src/parquet_writer.rs:148-152 | src/common/datasource/src/parquet_writer.rs:213-217 \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/common/datasource/src/parquet_writer.rs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"32e8602ae914010d99256eebd72e2a157a3ed8dc825f788c6aa7ce0b943c6d90"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/common/function/src/aggrs/geo/encoding.rs:173-177 | src/common/function/src/aggrs/geo/geo_path.rs:202-206 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/geo/encoding.rs\u0060 and \u0060src/common/function/src/aggrs/geo/geo_path.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 121 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/common/function/src/aggrs/geo/encoding.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"21cb521595844b8b2980aacca25520987c0e61a3d7cab1f593c507fcace481f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/common/function/src/scalars/geo/h3.rs:107-111 | src/common/function/src/scalars/geo/s2.rs:90-94 \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/common/function/src/scalars/geo/h3.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d4b88ad5ea0835a498afcbf8c7cdb772895e916586e311e68cf6ab6442e7cf4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20135 lines \u00D7 4): src/common/function/src/scalars/geo/measure.rs:77-81 | src/common/function/src/scalars/geo/measure.rs:140-144 | src/common/function/src/scalars/geo/s2.rs:95-98 | src/common/function/src/scalars/json/json_path_exists.rs:78-80 \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/common/function/src/scalars/geo/measure.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ee69e6ba96d217fcf86e3eb87ffd0702a5c32aaa7f9f76e511dc7e4cbcc6518"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20135 lines \u00D7 6): src/common/function/src/scalars/geo/geohash.rs:92-94 | src/common/function/src/scalars/geo/geohash.rs:193-195 | src/common/function/src/scalars/geo/h3.rs:100-102 | src/common/function/src/scalars/geo/h3.rs:191-193 | src/common/function/src/scalars/geo/s2.rs:86-90 | src/common/function/src/scalars/geo/wkt.rs:78-82 \u2014 before extracting anything, compare \u0060src/common/function/src/scalars/geo/geohash.rs\u0060 and \u0060src/common/function/src/scalars/geo/h3.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 43 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/common/function/src/scalars/geo/geohash.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6117d5d65d0a434e08f38788f54304f6a1ca9329e96bcc56cc44607c4b92d86"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/common/function/src/scalars/ip/cidr.rs:116-120 | src/common/function/src/scalars/ip/cidr.rs:245-249 \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/common/function/src/scalars/ip/cidr.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d8e269a70a9896c06469e276d7bc60f97613f07cd2ee80770c6029afa378142"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/common/function/src/scalars/primary_key.rs:109-113 | src/common/function/src/scalars/primary_key.rs:147-151 \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/common/function/src/scalars/primary_key.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0665fe77e502d81789900bbd36a532af4892ca2a9fdc0ab425d37a56562f793"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/common/macro/src/admin_fn.rs:50-54 | src/common/macro/src/range_fn.rs:39-43 \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/common/macro/src/admin_fn.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"bce83edb411cc4256fa9c6e2ff02873a20c6da841039b51656dd357ae257bbfc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/common/meta/src/kv_backend/rds/mysql.rs:130-134 | src/common/meta/src/kv_backend/rds/postgres.rs:162-166 \u2014 before extracting anything, compare \u0060src/common/meta/src/kv_backend/rds/mysql.rs\u0060 and \u0060src/common/meta/src/kv_backend/rds/postgres.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 43 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/common/meta/src/kv_backend/rds/mysql.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd80ff50b80bb8c64ce5997f5b116b8ab5383b93dd67b1c9f399a6de7f48406"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/common/meta/src/kv_backend/rds/mysql.rs:135-139 | src/common/meta/src/kv_backend/rds/postgres.rs:167-171 \u2014 before extracting anything, compare \u0060src/common/meta/src/kv_backend/rds/mysql.rs\u0060 and \u0060src/common/meta/src/kv_backend/rds/postgres.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 43 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/common/meta/src/kv_backend/rds/mysql.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"5882cd9a2a1255c02aebeaa3f2d9ffd131c6d8deb61009f313bf15dad482cd5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/common/meta/src/kv_backend/rds.rs:301-305 | src/common/meta/src/kv_backend/rds.rs:362-366 \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/common/meta/src/kv_backend/rds.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c53e0069b72961bffa355ce6fffce5fd54cf039a4eae13ff9c5e8900df479c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20135 lines \u00D7 3): src/common/recordbatch/src/filter.rs:470-474 | src/mito2/src/compaction/reader.rs:238-240 | src/query/src/promql/label_values.rs:62-66 \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":"src/common/recordbatch/src/filter.rs"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3a2c2500845297b865dd8e081a0efcf04520259baf13c9d41872018e6683259"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/meta-srv/src/event/repartition.rs:236-240 | src/meta-srv/src/event/repartition.rs:267-271 \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/meta-srv/src/event/repartition.rs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"a03743ab6ba871a4056add999db85f702ad65511f7cc4d078449770277d641a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/operator/src/insert.rs:523-527 | src/operator/src/insert.rs:775-779 \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/operator/src/insert.rs"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"443833763f6c274c670bd36cb2935d86469833c0a42d2541ca3d6aed05429057"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/operator/src/statement/show.rs:285-289 | src/operator/src/statement/show.rs:334-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":"src/operator/src/statement/show.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"168c8b6ef3f2faf09b557e8f900f2a50009f191d08422c66b915833502164fd9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/query/src/datafusion.rs:86-90 | src/query/src/datafusion.rs:115-119 \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/query/src/datafusion.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ad8a18d7b6185ca8af61143138d4f4b040f7be7e5c08d1db7dd6a90c10b168d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/query/src/promql/planner.rs:2036-2040 | src/query/src/promql/planner.rs:3087-3091 \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/query/src/promql/planner.rs"},"region":{"startLine":2036}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceede7fc0ada067a8380d72578527a087360be3980ce62aee69f4aa4a767ba00"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/catalog/src/system_schema/information_schema/flow_statistics.rs:80-98 | src/catalog/src/system_schema/information_schema/flows.rs:103-131 \u2014 before extracting anything, compare \u0060src/catalog/src/system_schema/information_schema/flow_statistics.rs\u0060 and \u0060src/catalog/src/system_schema/information_schema/flows.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 53 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/catalog/src/system_schema/information_schema/flow_statistics.rs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"1040a17614c8043d7601ba0fa217a4f518ca66ebdbc07750b9fa4d57c353c30d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/catalog/src/kvbackend/table_cache.rs:78-87 | src/common/meta/src/cache/table/table_name.rs:75-84 \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/catalog/src/kvbackend/table_cache.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7ff6afe2e89e4a879e20e79c969c0cf0ab9109216f15533d269580a369394ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/cli/src/common/store.rs:129-134 | src/meta-srv/src/metasrv.rs:421-426 \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/src/common/store.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"38487fb26586b0fd8ed351b835212226818f1ec93e9cd349cf33532aaad502c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/common/batcher/src/flush_limiter.rs:27-32 | src/common/batcher/src/request_limiter.rs:30-35 \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/common/batcher/src/flush_limiter.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"45ff521ae51a0f58f7af62f2a3257a7d98c02874be6c978a962b1b8c10827875"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/common/datasource/src/parquet_writer.rs:333-341 | src/mito2/src/sst/parquet/index_writer.rs:71-79 \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/common/datasource/src/parquet_writer.rs"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"38a549ea201969534604d12932e466e1e66768dcf4cbf7dac7c3065a0b075c8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/common/function/src/aggrs/approximate/avg.rs:80-84 | src/common/function/src/aggrs/approximate/welford.rs:262-266 \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/common/function/src/aggrs/approximate/avg.rs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"16c7624ef272ffabcf98923bf76ca93fee31e02ed0267bf1fb7c69f0f8f8a867"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/function/src/scalars/geo/h3.rs:1350-1357 | src/common/function/src/scalars/geo/s2.rs:269-276 \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/common/function/src/scalars/geo/h3.rs"},"region":{"startLine":1350}}}],"partialFingerprints":{"codehealthFindingId/v1":"624ed54449f9daebd46e81259b174641e6e1e218a3b2371dbabd3866b5106986"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/common/function/src/scalars/vector/scalar_add.rs:58-70 | src/common/function/src/scalars/vector/scalar_mul.rs:58-70 \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/common/function/src/scalars/vector/scalar_add.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"b807b90f49b6758b982215cf4b2a840a2ca04c919096c55f6f2f6eb3bc4e2847"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/common/function/src/system/database.rs:58-63 | src/common/function/src/system/pg_catalog.rs:89-94 \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/common/function/src/system/database.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"506427f0fe4b15203d3cc497c32cb59b5541fcee488d42e0d1b9a4b928b65619"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/function/src/system/database.rs:90-97 | src/common/function/src/system/pg_catalog.rs:113-120 \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/common/function/src/system/database.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"e40837698baec81b6d96bf38d003a635726846b0adb365a9ac7d0a51038e13d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): src/common/meta/src/cache/table/table_info.rs:72-81 | src/common/meta/src/cache/table/table_route.rs:104-113 | src/common/meta/src/cache/table/view_info.rs:64-73 \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":"src/common/meta/src/cache/table/table_info.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc149ab995f3196c943766959e75c085514d5b13c3a5b4cbed73cae6855038c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 7): src/common/meta/src/ddl/event/database.rs:215-220 | src/common/meta/src/ddl/event/flow.rs:156-161 | src/common/meta/src/ddl/event/view.rs:210-215 | src/common/meta/src/reconciliation/event.rs:212-217 | src/common/meta/src/reconciliation/event.rs:328-333 | src/common/meta/src/reconciliation/event.rs:442-447 | src/common/meta/src/reconciliation/event.rs:555-560 \u2014 there are 7 copies across 4 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 7 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/ddl/event/database.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b00d41649558aec91b8c11d38a7a1210e5174da64a8c85cb20f55603222af58"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/meta/src/instruction.rs:559-565 | src/meta-srv/src/procedure/region_migration.rs:89-95 \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/common/meta/src/instruction.rs"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"12ea89916854ce62ae9ff7417c439689e95a4fa35a6a354a262bbfa3e110d5b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/common/meta/src/key/schema_name.rs:267-272 | src/common/meta/src/key/topic_region.rs:345-349 \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/common/meta/src/key/schema_name.rs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"9270ef11d5de402e49f694a09f8927bf32fe35f91a57738bf8d6783f4606c514"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/common/meta/src/kv_backend/rds/mysql.rs:110-118 | src/common/meta/src/kv_backend/rds/postgres.rs:142-150 \u2014 before extracting anything, compare \u0060src/common/meta/src/kv_backend/rds/mysql.rs\u0060 and \u0060src/common/meta/src/kv_backend/rds/postgres.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 43 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/common/meta/src/kv_backend/rds/mysql.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"321d17359506986c62bc081dc0ecb1785f0632327019ca0f5b8eda6cf9753dd2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): src/common/meta/src/reconciliation/reconcile_catalog.rs:56-64 | src/common/meta/src/reconciliation/reconcile_database.rs:63-71 | src/common/meta/src/reconciliation/reconcile_logical_tables.rs:61-69 | src/common/meta/src/reconciliation/reconcile_table.rs:162-170 \u2014 before extracting anything, compare \u0060src/common/meta/src/reconciliation/reconcile_catalog.rs\u0060 and \u0060src/common/meta/src/reconciliation/reconcile_database.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 49 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/common/meta/src/reconciliation/reconcile_catalog.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7e897d11c6fc298228ae1d9cd026213b6b14e40de8757b1112bf6137e70b856"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 8): src/common/meta/src/reconciliation/reconcile_catalog.rs:264-268 | src/common/meta/src/reconciliation/reconcile_database.rs:316-320 | src/common/meta/src/reconciliation/reconcile_logical_tables.rs:319-323 | src/common/meta/src/reconciliation/reconcile_table.rs:416-420 | src/meta-srv/src/handler.rs:92-96 | src/meta-srv/src/procedure/region_migration.rs:782-786 | src/meta-srv/src/procedure/repartition.rs:496-500 | src/meta-srv/src/procedure/repartition/group.rs:609-613 \u2014 before extracting anything, compare \u0060src/common/meta/src/reconciliation/reconcile_catalog.rs\u0060 and \u0060src/common/meta/src/reconciliation/reconcile_database.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 49 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/common/meta/src/reconciliation/reconcile_catalog.rs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"f694bab6fa240a518f4a15330bb8bfd73d20977d61edbc604ca227b43152d702"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/common/meta/src/reconciliation/reconcile_database.rs:249-255 | src/common/meta/src/reconciliation/reconcile_logical_tables.rs:225-231 | src/common/meta/src/reconciliation/reconcile_table.rs:336-342 \u2014 before extracting anything, compare \u0060src/common/meta/src/reconciliation/reconcile_database.rs\u0060 and \u0060src/common/meta/src/reconciliation/reconcile_logical_tables.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 56 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/common/meta/src/reconciliation/reconcile_database.rs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"aae4c0bfd5c9af44f36e7984750e6d9c696bc9c61dd4a8222c47c84d6e3bea18"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/time/src/timestamp.rs:650-657 | src/promql/src/extension_plan.rs:62-69 \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/common/time/src/timestamp.rs"},"region":{"startLine":650}}}],"partialFingerprints":{"codehealthFindingId/v1":"634b8d24ce69e89954d210135543ac3223af1917024b59d00b9ef4ba82dc6719"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/datanode/src/service.rs:52-56 | src/flow/src/server.rs:410-414 \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/datanode/src/service.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1836b7d4adb0f08c386ca4f34142722f48cf0c2e5746a271acc5ff55bce27cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/datatypes/src/vectors/list.rs:312-319 | src/datatypes/src/vectors/struct_vector.rs:375-382 \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/datatypes/src/vectors/list.rs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"5769c979e1a89fbaf6c93003e22fe4e4672072f4b996459599c4b9c7d3748695"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/index/src/bloom_filter/reader.rs:96-102 | src/index/src/inverted_index/format/reader.rs:90-96 \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/index/src/bloom_filter/reader.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b1dd4a5ee7ada6fbb26d2bd33bf966b1cbeff21461984efa855dd3f120b1fab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/meta-client/src/client/config.rs:82-90 | src/meta-client/src/client/heartbeat.rs:207-215 \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/meta-client/src/client/config.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"70bdccfb3c14cfc326dc31a52629451d421d9e5235d6ae03f4668398e4d25804"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): src/meta-srv/src/event/gc.rs:120-127 | src/meta-srv/src/event/repartition.rs:121-128 | src/meta-srv/src/event/repartition.rs:330-337 \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/meta-srv/src/event/gc.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c62392c68008ace1ac05597c7d599708e5fa0a8899d2ddd3297067c532c360d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/mito2/src/manifest/action.rs:527-531 | src/mito2/src/manifest/action.rs:615-619 | src/mito2/src/manifest/storage/checkpoint.rs:52-56 \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/mito2/src/manifest/action.rs"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"d82a0bace2f7105865e0226ced37088dc3dab3ab955565266445e3563e6e0099"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/mito2/src/read/seq_scan.rs:556-562 | src/mito2/src/read/series_scan.rs:567-573 \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/mito2/src/read/seq_scan.rs"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d1b1347a1d0f962234479f999d2579c017db8bc5e964926ab71b93770d948b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/operator/src/delete.rs:237-245 | src/operator/src/req_convert/insert/stmt_to_region.rs:194-202 \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/operator/src/delete.rs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dc2b93eb71bc55c7e8b60713dd363bdff8270aa1cfac4ecd0142adce5937bf4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/promql/src/functions/aggr_over_time.rs:230-235 | src/promql/src/functions/idelta.rs:52-57 \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/promql/src/functions/aggr_over_time.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"77310b943e51c98792ec0f610d5f00accc6063447af22ee40bc134c824be8dda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/servers/src/mysql/handler.rs:136-140 | src/servers/src/postgres/handler.rs:63-67 \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/servers/src/mysql/handler.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"4df20c2bb13684570f738d67b5e5302b0fd7b8e0f01528942242d17f9c5a565f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): src/cli/src/metadata/control/del.rs:36-41 | src/cli/src/metadata/control/get.rs:41-46 | src/cli/src/metadata/control/put.rs:50-55 \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":"src/cli/src/metadata/control/del.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"839a999b770a1d470ff8e924ff6f78e5b753a5ef27a481b6897519d8503b1e71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/cmd/src/flownode.rs:169-179 | src/cmd/src/metasrv.rs:204-214 \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/cmd/src/flownode.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"06b44b7683600b4564571a5a76c89fdcbb32536d110662033a8b95d3e99998cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/common/function/src/scalars/date/date_add.rs:74-79 | src/common/function/src/scalars/date/date_sub.rs:72-77 \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/common/function/src/scalars/date/date_add.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"79d6f2b97ea5a49fb05353208135b0cb5bc9da49c2b71b8ece35b7cda8e2885a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/common/function/src/system/pg_catalog.rs:63-68 | src/common/function/src/system/timezone.rs:44-49 \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/common/function/src/system/pg_catalog.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"b831698b92923d706cb946d212b100e1c75c94c9a1ed0e72231fd800a5ff0bf7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): src/common/meta/src/cache/flow/table_flownode.rs:62-67 | src/common/meta/src/cache/table/table_name.rs:40-45 | src/common/meta/src/cache/table/view_info.rs:39-44 \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":"src/common/meta/src/cache/flow/table_flownode.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"183d07b43bcbed4543db782cb00f39aa352ff2217b39144bee9ee1ef04b88c3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/common/meta/src/cache/table/table_info.rs:40-52 | src/common/meta/src/cache/table/table_route.rs:65-77 \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/common/meta/src/cache/table/table_info.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"d04e9ca479db74a1b319754007fcd3c87087e2613ef08b881112e3ba4699d132"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/meta/src/ddl/create_database.rs:272-279 | src/common/meta/src/ddl/drop_database.rs:168-175 \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/common/meta/src/ddl/create_database.rs"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e7ac157fe1ea9763f3030110f1280dce5705c851af71bea7f3c95a03797d681"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/common/meta/src/key/catalog_name.rs:101-106 | src/common/meta/src/key/schema_name.rs:189-194 \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/common/meta/src/key/catalog_name.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ddced617a3dcc7e956c7527e6e244d6c73902cdec3d6d493e8141fa62877d9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): src/common/meta/src/key/flow/flow_info.rs:366-370 | src/common/meta/src/key/flow/flow_route.rs:162-166 | src/common/meta/src/key/flow/table_flow.rs:181-185 | src/common/meta/src/key/table_repart.rs:146-150 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 4 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 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/key/flow/flow_info.rs"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"760191af0fa6fa77a9d4953bb434666a9d1e25b91c0ca2be8ab60d61f7d0fb19"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/common/meta/src/key/flow/flow_route.rs:56-60 | src/common/meta/src/key/flow/flownode_flow.rs:70-74 | src/common/meta/src/key/flow/table_flow.rs:88-92 \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":"src/common/meta/src/key/flow/flow_route.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3a711d82e31a813e6d73ea86790df80d3a59b2c57a42a8057ed0c42a677e488"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): src/common/meta/src/key/table_info.rs:205-213 | src/common/meta/src/key/topic_name.rs:199-207 | src/common/meta/src/key/view_info.rs:198-206 \u2014 before extracting anything, compare \u0060src/common/meta/src/key/table_info.rs\u0060 and \u0060src/common/meta/src/key/view_info.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 53 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/common/meta/src/key/table_info.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ce894f09f2848b92bed9505317c7608b295ca2b99917574ce075d2e0b115d92"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/meta/src/key/table_repart.rs:231-238 | src/common/meta/src/key/table_route.rs:684-691 \u2014 before extracting anything, compare \u0060src/common/meta/src/key/table_repart.rs\u0060 and \u0060src/common/meta/src/key/table_route.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 48 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/common/meta/src/key/table_repart.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f193a4401f2f6bfb25955436f356366ab14cf7fc4fb729285914165de5ef7bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/meta/src/key/table_repart.rs:261-268 | src/common/meta/src/key/table_route.rs:719-726 \u2014 before extracting anything, compare \u0060src/common/meta/src/key/table_repart.rs\u0060 and \u0060src/common/meta/src/key/table_route.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 48 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/common/meta/src/key/table_repart.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"e095144a4d29b4b287dbaacff5754a21e8dbbccebb945e8a46fba84c583a13bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/common/meta/src/reconciliation/reconcile_catalog.rs:144-150 | src/common/meta/src/reconciliation/reconcile_logical_tables.rs:172-178 | src/common/meta/src/reconciliation/reconcile_table.rs:267-273 \u2014 before extracting anything, compare \u0060src/common/meta/src/reconciliation/reconcile_catalog.rs\u0060 and \u0060src/common/meta/src/reconciliation/reconcile_logical_tables.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 56 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/common/meta/src/reconciliation/reconcile_catalog.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"27534ee2ad642d2e8446fa5f969d254112a0962b0cc510d8aeb6a3a7d0ac0a15"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): src/common/meta/src/reconciliation/reconcile_catalog.rs:152-159 | src/common/meta/src/reconciliation/reconcile_database.rs:192-199 | src/common/meta/src/reconciliation/reconcile_logical_tables.rs:180-187 | src/common/meta/src/reconciliation/reconcile_table.rs:279-286 \u2014 before extracting anything, compare \u0060src/common/meta/src/reconciliation/reconcile_catalog.rs\u0060 and \u0060src/common/meta/src/reconciliation/reconcile_database.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 49 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/common/meta/src/reconciliation/reconcile_catalog.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd0fd61c32095a452c46df246902c308621343743f1d024750f9dc5f22b77af5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): src/common/meta/src/region_registry.rs:80-90 | src/common/meta/src/region_registry.rs:93-103 | src/store-api/src/region_engine.rs:649-659 | src/store-api/src/region_engine.rs:662-672 \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/common/meta/src/region_registry.rs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"50ed2203bba858c69eaa89ab68108f00b18bb3aeb22034b414fd8afddcfa570b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/datatypes/src/types/duration_type.rs:54-61 | src/datatypes/src/types/time_type.rs:58-65 \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/datatypes/src/types/duration_type.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"183d9b88d00d8fdef52893b7bea2eaa76905f60b03bec4a3dbd2e2b10979d95a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/datatypes/src/vectors/binary.rs:46-52 | src/datatypes/src/vectors/string.rs:47-53 \u2014 before extracting anything, compare \u0060src/datatypes/src/vectors/binary.rs\u0060 and \u0060src/datatypes/src/vectors/string.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 35 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/datatypes/src/vectors/binary.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"12fbbd82f9abe4778594b4b2da992ae09a006abb8b66328eb899b7a42fdcc133"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): src/datatypes/src/vectors/binary.rs:169-175 | src/datatypes/src/vectors/binary.rs:201-207 | src/datatypes/src/vectors/binary.rs:209-215 | src/datatypes/src/vectors/string.rs:154-160 \u2014 before extracting anything, compare \u0060src/datatypes/src/vectors/binary.rs\u0060 and \u0060src/datatypes/src/vectors/string.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 35 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/datatypes/src/vectors/binary.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a9308580d1447379b17148519d6153c1ca4ee9bf820c5165b37e55491a7a9f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/datatypes/src/vectors/binary.rs:193-199 | src/datatypes/src/vectors/string.rs:178-184 \u2014 before extracting anything, compare \u0060src/datatypes/src/vectors/binary.rs\u0060 and \u0060src/datatypes/src/vectors/string.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 35 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/datatypes/src/vectors/binary.rs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"abafff9cc3a63b7f5a844b179a128f0dfed7b5083594ee7e03c87da026ae68d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/datatypes/src/vectors/binary.rs:217-223 | src/datatypes/src/vectors/string.rs:202-208 \u2014 before extracting anything, compare \u0060src/datatypes/src/vectors/binary.rs\u0060 and \u0060src/datatypes/src/vectors/string.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 35 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/datatypes/src/vectors/binary.rs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfe741ed31f1d5ab5645b210ccff0e86364ceaeab5985a744cd52f65fe7d44b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/datatypes/src/vectors/binary.rs:305-311 | src/datatypes/src/vectors/string.rs:250-256 \u2014 before extracting anything, compare \u0060src/datatypes/src/vectors/binary.rs\u0060 and \u0060src/datatypes/src/vectors/string.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 35 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/datatypes/src/vectors/binary.rs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea4f12d3db9c67f54fca5d420dd18f93da73dffa31882bfb3656bceaed97a94a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/datatypes/src/vectors/decimal.rs:57-62 | src/datatypes/src/vectors/primitive.rs:69-74 \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/datatypes/src/vectors/decimal.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"c27468e5a2d749a34ea94246e9d1ccbf7c282e9da2f1c69f51c00bcacfd53243"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/datatypes/src/vectors/list.rs:203-209 | src/datatypes/src/vectors/struct_vector.rs:220-226 \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/datatypes/src/vectors/list.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ba3b92e72c7367eb5a9f6e462e975a09508844baa4fc9d623caa77e4ac9e0e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/index/src/inverted_index/format/reader/footer.rs:116-123 | src/puffin/src/file_format/reader/footer.rs:115-122 \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/index/src/inverted_index/format/reader/footer.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce5e585885ae9b897f8fd075b10c4d551c2154ee36227ec108bd62309ed33bb4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): src/meta-client/src/client/config.rs:128-138 | src/meta-client/src/client/heartbeat.rs:278-288 | src/meta-client/src/client/procedure.rs:185-195 | src/meta-client/src/client/store.rs:271-281 \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 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-client/src/client/config.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1e647a8b4e6558be440db256d99b82482c1493563a8f9e7b06c5a2c3a720850"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/meta-srv/src/key.rs:58-62 | src/meta-srv/src/key.rs:99-103 | src/meta-srv/src/key/datanode.rs:110-114 \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/meta-srv/src/key.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5220c7d6298976c534700c9d186471c5d8768131b74e849d923a5567d349531"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/meta-srv/src/procedure/repartition.rs:541-549 | src/meta-srv/src/procedure/repartition/group.rs:187-195 \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/meta-srv/src/procedure/repartition.rs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff768006a682929177715ec9885af5cfffef67163bca26398aed22ee54b5eb98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/mito2/src/sst/index/bloom_filter/applier/builder.rs:143-151 | src/mito2/src/sst/index/inverted_index/applier/builder.rs:158-166 \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/mito2/src/sst/index/bloom_filter/applier/builder.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b3b78f4f829da3abef06d9482fde907e2b91a7b75ca3e2885df07d7aa2dee54"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/mito2/src/sst/index/bloom_filter/applier.rs:102-107 | src/mito2/src/sst/index/inverted_index/applier.rs:104-110 \u2014 \u0060src/mito2/src/sst/index/bloom_filter/applier.rs\u0060 and \u0060src/mito2/src/sst/index/inverted_index/applier.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 65 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/applier.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b4d8337573ea972be67157874f5c1b132254670ac8c9c8f4fe39d7f97db5cb1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/operator/src/req_convert/delete/column_to_row.rs:23-30 | src/operator/src/req_convert/insert/column_to_row.rs:23-30 \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/operator/src/req_convert/delete/column_to_row.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dbe00742e722b25be45c836375ec13a491422d8332d0cc33189dbb53fe1f254"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/operator/src/req_convert/delete/column_to_row.rs:33-39 | src/operator/src/req_convert/insert/column_to_row.rs:33-39 \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/operator/src/req_convert/delete/column_to_row.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"94b02b6cc8e447324bd439ba74ba490edaf8a9a2767c954fae3e48fa11ba7460"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): src/pipeline/src/etl/processor/decolorize.rs:54-63 | src/pipeline/src/etl/processor/digest.rs:115-124 | src/pipeline/src/etl/processor/gsub.rs:52-61 \u2014 before extracting anything, compare \u0060src/pipeline/src/etl/processor/decolorize.rs\u0060 and \u0060src/pipeline/src/etl/processor/digest.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 52 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/pipeline/src/etl/processor/decolorize.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"6955376aacbf6529a5a9da46801108983328fc18ed84beb28afcedcd3b84197a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:352-375 | src/meta-srv/src/procedure/repartition/group/sync_region.rs:311-334 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/sync_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 135 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/meta-srv/src/procedure/repartition/group/enter_staging_region.rs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a33bbde6f53f3c46dd962ed1dfcc2a118829bf30a9ce382a9c688c365c91024"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): src/datanode/src/datanode.rs:946-962 | src/datanode/src/datanode.rs:1008-1025 \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/datanode/src/datanode.rs"},"region":{"startLine":946}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e7a41999e593969b029e1dfe35cfbe310d87a0fee7b5c3bce3fa0ee06722573"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/servers/src/grpc/database.rs:50-66 | src/servers/src/grpc/database.rs:122-131 \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/servers/src/grpc/database.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"7086022554c031232aa5c29e3b68f397d58179d69353b2a238caa579bb6259f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): src/promql/src/functions/native_histogram.rs:1121-1136 | src/promql/src/functions/native_histogram.rs:1198-1213 | src/promql/src/functions/native_histogram.rs:2475-2490 | src/promql/src/functions/native_histogram.rs:2751-2766 \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/promql/src/functions/native_histogram.rs"},"region":{"startLine":1121}}}],"partialFingerprints":{"codehealthFindingId/v1":"b289bbbec690a6f4b5c8f7ed62331892faf953167a71d300c2ab9470035be112"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/sql/src/parsers/create_parser/trigger.rs:297-311 | src/sql/src/parsers/create_parser/trigger.rs:352-367 \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/sql/src/parsers/create_parser/trigger.rs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac4a450c3ec5d3a6bdef082fc136ed5b436981da1f151411bbeacf339c631456"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/sql/src/parsers/create_parser/trigger.rs:188-199 | src/sql/src/parsers/create_parser/trigger.rs:343-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":"src/sql/src/parsers/create_parser/trigger.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"c91c81cee9e2876ddd6d65d931fa53a0375110099a603ba0dd14965a3329d073"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/frontend/src/instance/otlp/trace_ingest.rs:1210-1224 | src/frontend/src/instance/otlp/trace_ingest.rs:1292-1307 \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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":1210}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cbb4544acb7ce9734789b62a01e64e0f18f676b8d1f4bff562038ffbe6d909f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/mito2/src/sst/index/fulltext_index/applier.rs:77-92 | src/mito2/src/sst/parquet/reader.rs:1634-1649 \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/mito2/src/sst/index/fulltext_index/applier.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8a05c755b76ece3656b4e503ff13641cf16c426f4d89eaee6dcbf277bf71a12"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:172-184 | src/meta-srv/src/procedure/repartition/group/sync_region.rs:151-165 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/sync_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 135 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/meta-srv/src/procedure/repartition/group/enter_staging_region.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"a32fd904b7b2580050ff9d6d08dd20a6594cb0987a6f21fab6f903c74ab115d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs:180-193 | src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:172-184 | src/meta-srv/src/procedure/repartition/group/sync_region.rs:152-165 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 129 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/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"727594edb31041998485cd682a92e198dcc6b7c5c131f43b01b634d730efd148"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/mito2/src/sst/index.rs:515-528 | src/mito2/src/sst/index.rs:566-579 \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/mito2/src/sst/index.rs"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"d89ca54456bf3dceb256252e1a2ea62f7a8d281db2dce39bca39d5251c9b6e2e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/promql/src/extension_plan/normalize.rs:144-157 | src/promql/src/extension_plan/range_manipulate.rs:385-398 \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/promql/src/extension_plan/normalize.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"29551f348839041df45ddb77a27649b737b2dbe222ce24ae88cdb9758bc8e926"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/mito2/src/series_index/searcher.rs:209-220 | src/mito2/src/sst/range_index/searcher.rs:122-135 \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/mito2/src/series_index/searcher.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a8d63a7144ffc8872ae037d83d40f8f3ee4a7d1869d800fbd666408849cd979"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): src/common/function/src/admin/flush_compact_table.rs:55-67 | src/common/function/src/admin/purge_table.rs:42-55 | src/common/function/src/flush_flow.rs:60-72 | src/common/function/src/system/procedure_state.rs:51-63 \u2014 before extracting anything, compare \u0060src/common/function/src/admin/flush_compact_table.rs\u0060 and \u0060src/common/function/src/admin/purge_table.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 34 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/common/function/src/admin/flush_compact_table.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"013525c5c3240875d1d0be8566e9d0e11759ae6cfd7e4d993b1005c1ba339898"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/common/function/src/scalars/geo/geohash.rs:117-130 | src/common/function/src/scalars/geo/h3.rs:1019-1032 \u2014 before extracting anything, compare \u0060src/common/function/src/scalars/geo/geohash.rs\u0060 and \u0060src/common/function/src/scalars/geo/h3.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 43 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/common/function/src/scalars/geo/geohash.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"75dfa60f3049e859d8115497d9758621f167d42004eaf08ba546408e997ea3ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/meta-client/src/client/procedure.rs:275-287 | src/meta-client/src/client/procedure.rs:409-421 \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/meta-client/src/client/procedure.rs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdd3046e30540e7bb5c518968f556da82b656373fea9c8e5285b34176d0457e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/mito2/src/sst/index/bloom_filter/creator.rs:333-345 | src/mito2/src/sst/index/inverted_index/creator.rs:216-228 \u2014 \u0060src/mito2/src/sst/index/bloom_filter/creator.rs\u0060 and \u0060src/mito2/src/sst/index/inverted_index/creator.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 63 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/creator.rs"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"3132534d9b9108e8566bb3d252be176659aaeb7a1abaa04b96e6b42961c6d8fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/sql/src/parsers/alter_parser.rs:217-229 | src/sql/src/parsers/alter_parser.rs:270-282 \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/sql/src/parsers/alter_parser.rs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"efb4b35c1ac2560c70ea9a781cae904ce1ba06268b4adac12267dd47abe35cf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs:340-351 | src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:323-334 | src/meta-srv/src/procedure/repartition/group/remap_manifest.rs:191-203 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 129 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/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"84a4ed30f9092ff7f2c84827632d2c486e32425bc49ecff4ccafd763c36f567b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/mito2/src/cache/file_cache.rs:638-650 | src/mito2/src/cache/file_cache.rs:665-677 \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/mito2/src/cache/file_cache.rs"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"729c2f91a11efe1a6e1184e532f9e28b6f63817f88bdd524eb2c409189194e9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/promql/src/functions/predict_linear.rs:118-129 | src/promql/src/functions/quantile.rs:149-161 \u2014 before extracting anything, compare \u0060src/promql/src/functions/predict_linear.rs\u0060 and \u0060src/promql/src/functions/quantile.rs\u0060 as WHOLE FILES: this scan already matched 3 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/promql/src/functions/predict_linear.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdbbd3b8f74c25280246c586b3050705f698b994d4169b500b8a1b6bc4eedab8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/meta-srv/src/handler/collect_stats_handler.rs:207-219 | src/meta-srv/src/handler/remap_flow_peer_handler.rs:91-102 \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/meta-srv/src/handler/collect_stats_handler.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"f73bf83edb41107aa678534e402c7b4d557d2b47191890c42bbb32de1d166fff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/cli/src/data/export.rs:441-453 | src/cli/src/data/export.rs:556-568 \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/src/data/export.rs"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"ede6a6dc149dc6ea309d6686df7ce90d0f438c33395ddc9d85661daa15b40114"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs:259-271 | src/meta-srv/src/procedure/region_migration/upgrade_candidate_region.rs:286-298 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs\u0060 and \u0060src/meta-srv/src/procedure/region_migration/upgrade_candidate_region.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 31 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/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"41e3f66934599d360b6b1e0f30eef79364a0c15fa8073c1ba75d02039f5bd87f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/common/meta/src/rpc/ddl.rs:728-740 | src/common/meta/src/rpc/ddl.rs:1009-1021 \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/common/meta/src/rpc/ddl.rs"},"region":{"startLine":728}}}],"partialFingerprints":{"codehealthFindingId/v1":"0821675ab019df0bf04ba6270bacdc2d2a17cc686b66dc5baae7d9c9256f5431"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/meta-srv/src/procedure/repartition/repartition_start.rs:269-280 | src/meta-srv/src/procedure/repartition/repartition_start.rs:310-321 \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/meta-srv/src/procedure/repartition/repartition_start.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cafcc4bac9483e1a80e75d8a7349daaed06cb42387d1a7b1b9aa9cceab5aa60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/file-engine/src/engine.rs:277-288 | src/file-engine/src/engine.rs:310-321 \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/file-engine/src/engine.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"7efe07077c76487dcade2a994433984c439b5e639146dce8b3e0f3cf54ee6199"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/cli/src/data/export_v2/command.rs:709-720 | src/cli/src/data/export_v2/command.rs:748-758 \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/src/data/export_v2/command.rs"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"18518346a963c366112b61f4ab2f476778f2a1169bd2f7a6c99ee83055913059"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/frontend/src/instance/otlp/trace_ingest.rs:1374-1385 | src/frontend/src/instance/otlp/trace_ingest.rs:1415-1426 \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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":1374}}}],"partialFingerprints":{"codehealthFindingId/v1":"04bc6965274c696c1d53797f180298cc1d8eff29ca64610e4c96b151202f67eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/operator/src/statement/set.rs:72-83 | src/operator/src/statement/set.rs:110-120 \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/operator/src/statement/set.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1dc67429b61bad5b4c2720a405ceb63c3a8642ab92544a3f9cd7e05d9737659"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/flow/src/batching_mode/task.rs:814-825 | src/flow/src/batching_mode/task.rs:1233-1241 \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/flow/src/batching_mode/task.rs"},"region":{"startLine":814}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd471c696cd5bbe54ded4b082230a8b005c40acea7812a8651c937a1e3e6468b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/catalog/src/kvbackend/manager.rs:327-338 | src/catalog/src/kvbackend/manager.rs:387-398 \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/catalog/src/kvbackend/manager.rs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"012a283c83490b6db6c314f3dfc60697ca36ebabbc579754b18806f08fc9d649"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/sql/src/parsers/create_parser.rs:597-608 | src/sql/src/parsers/create_parser.rs:1082-1092 \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/sql/src/parsers/create_parser.rs"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e291e5eb3c0d8cd30593963ba20c4adac1471988b7448d94e971083c5261cb9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): src/meta-client/src/client/procedure.rs:299-309 | src/meta-client/src/client/procedure.rs:412-422 | src/meta-client/src/client/procedure.rs:460-470 \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/meta-client/src/client/procedure.rs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"65352249f6f94dea88b36a647180645a741f1415e93983f9bfd73b71fedf3002"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/mito2/src/sst/parquet/prefilter.rs:1312-1322 | src/mito2/src/sst/parquet/prefilter.rs:1334-1344 \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/mito2/src/sst/parquet/prefilter.rs"},"region":{"startLine":1312}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a67a1e7032586a4703e44c5d808bb117813bb4b269fcc37842b48c20bd069a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs:198-208 | src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:187-197 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 129 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/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"45a288f7c640c64a56fa8911b15bce749b64bbba617f41b8417757b2647aecf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 5): src/common/function/src/admin/flush_compact_table.rs:61-69 | src/common/function/src/admin/gc.rs:137-145 | src/common/function/src/admin/purge_table.rs:48-58 | src/common/function/src/flush_flow.rs:66-74 | src/common/function/src/system/procedure_state.rs:57-65 \u2014 before extracting anything, compare \u0060src/common/function/src/admin/flush_compact_table.rs\u0060 and \u0060src/common/function/src/admin/purge_table.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 34 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/common/function/src/admin/flush_compact_table.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c051a05e20c86cc27d7d94b622e8677a545ec5508ea7ed18a33956df531722b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/mito2/src/series_index/writer.rs:190-200 | src/mito2/src/sst/range_index/writer.rs:183-193 \u2014 before extracting anything, compare \u0060src/mito2/src/series_index/writer.rs\u0060 and \u0060src/mito2/src/sst/range_index/writer.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 65 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":"src/mito2/src/series_index/writer.rs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9b00483c6218a5572141260e57b38218b863930c8a8489daf68769f4900688b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/table/src/metadata.rs:908-917 | src/table/src/metadata.rs:996-1006 \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/table/src/metadata.rs"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"d721d8fbb920bdde44961d0e08e909027abb889a18af458d41e1bf0d95fefa74"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/common/function/src/aggrs/vector/product.rs:43-53 | src/common/function/src/aggrs/vector/sum.rs:43-53 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/vector/product.rs\u0060 and \u0060src/common/function/src/aggrs/vector/sum.rs\u0060 as WHOLE FILES: this scan already matched 4 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. 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/common/function/src/aggrs/vector/product.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7b7127a134ca062e265ce5f52ed9fc1c7312b1b83b4f41e01ce3bdbec57fd69"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/servers/src/http/jaeger.rs:427-436 | src/servers/src/http/jaeger.rs:615-625 \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/servers/src/http/jaeger.rs"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a0147e1b58126dffff195181575569ce4d84d2391bf0f2f9d797ef7c48c90bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/client/src/database.rs:672-682 | src/client/src/database.rs:699-709 \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/client/src/database.rs"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"efb05c9b7747703dfc09d325a5bc97f81240ad61b2934b3b8fbbe5603647f80a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): src/session/src/session_config.rs:119-129 | src/session/src/session_config.rs:176-186 | src/session/src/session_config.rs:233-243 \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/session/src/session_config.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4149574bf3677713a05818680008436ce6dd18a49f32e32a6f98e5d5f4f2585"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/servers/src/prom_remote_write/v2.rs:414-423 | src/servers/src/prom_remote_write/v2.rs:469-478 \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/servers/src/prom_remote_write/v2.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c763430399d1a620cb0413bac43865f301e84335e0ed0c28a1b3b8744c3ee1f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/mito2/src/memtable/time_partition.rs:594-603 | src/mito2/src/memtable/time_partition.rs:646-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":"src/mito2/src/memtable/time_partition.rs"},"region":{"startLine":594}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbf92965da02ab11208bdc65090b31b25bc5f9e6477be9fe0eaaeec7e1c61b58"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:252-261 | src/meta-srv/src/procedure/repartition/group/sync_region.rs:224-230 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/sync_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 135 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/meta-srv/src/procedure/repartition/group/enter_staging_region.rs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdfdb30ff6191574f6b193186ca401229965f80644874c54ce663ff90c3a4111"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/cmd/src/flownode.rs:254-263 | src/cmd/src/frontend.rs:379-388 \u2014 before extracting anything, compare \u0060src/cmd/src/flownode.rs\u0060 and \u0060src/cmd/src/frontend.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 50 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/cmd/src/flownode.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f3ce68528ab80cc7da904f547e384c7116687520fd2d32f904361103b17e628"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:149-157 | src/meta-srv/src/procedure/repartition/group/sync_region.rs:127-136 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/sync_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 135 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/meta-srv/src/procedure/repartition/group/enter_staging_region.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c16fa7ea54a30a2b0f58cf920d0c5060bc711e4c2c849082739b15ba831f6b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/mito2/src/series_index/writer.rs:513-522 | src/mito2/src/sst/range_index/writer.rs:495-504 \u2014 before extracting anything, compare \u0060src/mito2/src/series_index/writer.rs\u0060 and \u0060src/mito2/src/sst/range_index/writer.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 65 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":"src/mito2/src/series_index/writer.rs"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2f3666697fc15365dcf7f469898d7d7c4a9ad89395da111bceae027b83dd8fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): src/promql/src/extension_plan/histogram_fold.rs:222-230 | src/promql/src/extension_plan/instant_manipulate.rs:185-194 | src/promql/src/extension_plan/normalize.rs:139-148 \u2014 before extracting anything, compare \u0060src/promql/src/extension_plan/instant_manipulate.rs\u0060 and \u0060src/promql/src/extension_plan/normalize.rs\u0060 as WHOLE FILES: this scan already matched 4 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. 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/promql/src/extension_plan/histogram_fold.rs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"1751fce9e30d024cb4d5bcdaa386f710de09b1163c50804c11b3ccbf089cc1ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): src/promql/src/functions/idelta.rs:115-124 | src/promql/src/functions/quantile.rs:117-126 | src/promql/src/functions/quantile.rs:164-173 \u2014 before extracting anything, compare \u0060src/promql/src/functions/idelta.rs\u0060 and \u0060src/promql/src/functions/quantile.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 42 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/promql/src/functions/idelta.rs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"44d447caa5efdeb42dc239291e2d972a3d5af94ec85e0e55715a7e963ec625dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs:309-318 | src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:293-302 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 129 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/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"e84ff96f0417478761ee94d57686efade268567b90860be097047c7773b110b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/mito2/src/read/series_scan.rs:396-405 | src/mito2/src/read/series_scan.rs:431-440 \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/mito2/src/read/series_scan.rs"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b6eec2e96f8bbcdf445d1dcf1c2fbd628e7eefe461634f74d04ae8aeb4ce113"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/cmd/src/bin/query_regression_runner/remote/ingest.rs:287-296 | src/cmd/src/bin/query_regression_runner/remote/storage.rs:58-67 \u2014 before extracting anything, compare \u0060src/cmd/src/bin/query_regression_runner/remote/ingest.rs\u0060 and \u0060src/cmd/src/bin/query_regression_runner/remote/storage.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 30 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/cmd/src/bin/query_regression_runner/remote/ingest.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c701ef6555d7bd8d01cb36f76dd918a79ff849a1769e41128a2edebdfa086c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/query/src/dist_plan/analyzer.rs:686-692 | src/query/src/dist_plan/analyzer/fallback.rs:60-69 \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/query/src/dist_plan/analyzer.rs"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"e04c1eadc08f841b72772d896625020432522266cf7ea30e4377ec36f934e431"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): src/common/function/src/aggrs/vector/avg.rs:69-77 | src/common/function/src/aggrs/vector/product.rs:68-76 | src/common/function/src/aggrs/vector/sum.rs:68-76 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/vector/avg.rs\u0060 and \u0060src/common/function/src/aggrs/vector/product.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 33 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/common/function/src/aggrs/vector/avg.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"194c37963b41b86a1deca8e624867ff036178603d5edf8fdfe888db984ed106c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/common/meta/src/ddl/drop_table/executor.rs:301-309 | src/common/meta/src/ddl/drop_table/executor.rs:345-353 \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/common/meta/src/ddl/drop_table/executor.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"28a63b850445200fda7c20888b8e432b4a9472ac6f7d2c96ea9b535626800bed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/meta-srv/src/handler.rs:530-538 | src/meta-srv/src/handler.rs:557-565 \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/meta-srv/src/handler.rs"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"046aaaf2061f03f12d61c3d47c8bdbb10a3370b9da7ed24bf32e091c7d6ef6fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/mito2/src/series_index/builder.rs:109-117 | src/mito2/src/series_index/builder.rs:196-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/mito2/src/series_index/builder.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffa0a00e1c8972920a6288eacdc728a77b913728ee6b445a8e2309a64bd46dc6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/promql/src/functions/native_histogram.rs:2357-2365 | src/promql/src/functions/native_histogram.rs:2366-2374 \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/promql/src/functions/native_histogram.rs"},"region":{"startLine":2357}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c170133dfe61271950ef03f137366539ef6e83f95159b019baa5905c01d297c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/promql/src/extension_plan/absent.rs:138-146 | src/promql/src/extension_plan/series_divide.rs:227-235 \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/promql/src/extension_plan/absent.rs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"2799878473e69f411688de904b0bf9b92153057c652cc4c2f133c3d65c7d1622"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/servers/src/http/authorize.rs:97-105 | src/servers/src/http/authorize.rs:147-154 \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/servers/src/http/authorize.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a9213b307a70f87fcba6fb6dc2717a885fd8948d95993762b6f92d3e6c0dee9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/promql/src/functions/double_exponential_smoothing.rs:139-147 | src/promql/src/functions/quantile.rs:58-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":"src/promql/src/functions/double_exponential_smoothing.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"1887c98c974912e2ec4872e1e5509271c4957aa9411c1383658ac9f88a132d5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): src/common/function/src/scalars/matches.rs:565-572 | src/common/function/src/scalars/matches.rs:588-595 | src/common/function/src/scalars/matches.rs:611-619 \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/common/function/src/scalars/matches.rs"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"07e607ee7ce3bd435efc4bf49efe31596edc6f979ca18fadc3a1e1829356f55c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 6): src/sql/src/parsers/alter_parser/trigger.rs:309-317 | src/sql/src/parsers/alter_parser/trigger.rs:354-362 | src/sql/src/parsers/alter_parser/trigger.rs:399-407 | src/sql/src/parsers/create_parser/trigger.rs:166-174 | src/sql/src/parsers/create_parser/trigger.rs:387-394 | src/sql/src/parsers/create_parser/trigger.rs:428-435 \u2014 \u0060src/sql/src/parsers/alter_parser/trigger.rs\u0060 and \u0060src/sql/src/parsers/create_parser/trigger.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 45 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sql/src/parsers/alter_parser/trigger.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e85365cccb48777bc1efbb5399e7b456627c748f60aed09843e95d60c5d9ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/servers/src/http/jaeger.rs:564-570 | src/servers/src/http/jaeger.rs:621-629 \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/servers/src/http/jaeger.rs"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"682cd9767b70303b5f364cbfa27a5c4ed33b840522a98583a43f48d5a52cf439"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/servers/src/http/jaeger.rs:304-312 | src/servers/src/http/jaeger.rs:314-322 \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/servers/src/http/jaeger.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"152ce80203f107a48dd484289fce2766f999742d2255936b15cb682435c95560"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/common/meta/src/key.rs:794-802 | src/common/meta/src/key.rs:1524-1530 | src/common/meta/src/key.rs:1736-1744 \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/common/meta/src/key.rs"},"region":{"startLine":794}}}],"partialFingerprints":{"codehealthFindingId/v1":"01008a383c40515153d3e2dbc55a35e5541d57dfbb4d695d722892e987abdaa1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/function/src/scalars/string/format.rs:118-126 | src/common/function/src/scalars/string/space.rs:96-103 \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/common/function/src/scalars/string/format.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"817c22d7aef2f8cdab91cc50264b9c443419aff6b11fe55e1711a714d4d3f3d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/meta/src/key/schema_name.rs:201-209 | src/common/meta/src/key/table_name.rs:161-168 \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/common/meta/src/key/schema_name.rs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"405c2126b4e6cdb589b4374c43084ce5de9527e4fbc816639dd167d84bbf25e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/query/src/promql/planner.rs:3983-3989 | src/query/src/promql/planner.rs:3990-3997 \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/query/src/promql/planner.rs"},"region":{"startLine":3983}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb66531d5042c1c919e81bb69cbce9e0474f1e277aa929baf6320905821fffea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/table/src/metadata.rs:1359-1366 | src/table/src/metadata.rs:1402-1409 \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/table/src/metadata.rs"},"region":{"startLine":1359}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcd65f290d3e83f316d9feab5af553a81251465985be3c7e629ac9a3e2a53d1f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 6): src/common/meta/src/key.rs:799-805 | src/common/meta/src/key.rs:881-887 | src/common/meta/src/key.rs:1527-1533 | src/common/meta/src/key.rs:1573-1579 | src/common/meta/src/key.rs:1741-1747 | src/common/meta/src/key/schema_name.rs:306-313 \u2014 there are 6 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 6 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/key.rs"},"region":{"startLine":799}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3475f6af9477cf022755ea5922094996a2a0e69a5f7c92c59379e644127f4fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): src/common/macro/src/row/into_row.rs:28-35 | src/common/macro/src/row/schema.rs:30-37 | src/common/macro/src/row/to_row.rs:28-35 \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":"src/common/macro/src/row/into_row.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c86e2b000f0819e7273581af3e8714e1f011b72ccff8d541659060445d5c320"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/cmd/src/bin/query_regression_runner/direct.rs:238-245 | src/cmd/src/bin/query_regression_runner/direct.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":"src/cmd/src/bin/query_regression_runner/direct.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"e58d6d200f548f8d63bab9cd7447a74864a555cc2b63c8e3042786c92df16563"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/function/src/scalars/matches.rs:647-654 | src/common/function/src/scalars/matches.rs:666-673 \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/common/function/src/scalars/matches.rs"},"region":{"startLine":647}}}],"partialFingerprints":{"codehealthFindingId/v1":"2733c4610fcdbc956933aa8e27663737dff9da50e78c499e529fdff2aa8ec7f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/servers/src/http/result/json_result.rs:38-45 | src/servers/src/http/result/table_result.rs:39-46 \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/servers/src/http/result/json_result.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"791941cb4625213bd8212584933d5bea5d8f31eabe3cb88ecad6079e0612db6b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): src/servers/src/http/result/csv_result.rs:42-49 | src/servers/src/http/result/json_result.rs:38-45 | src/servers/src/http/result/table_result.rs:39-46 \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":"src/servers/src/http/result/csv_result.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e3ee07132652ee1cb802ad132505b865eb77ab7f1ca730cec8f6245d6f781c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/servers/src/http/authorize.rs:225-232 | src/servers/src/http/authorize.rs:267-274 \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/servers/src/http/authorize.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"1952d477722d7a4d0c715576cc73c4735c90a2c1af9dc8c5eefc5614af001c28"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs:287-294 | src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs:271-278 | src/meta-srv/src/procedure/repartition/group/remap_manifest.rs:152-159 | src/meta-srv/src/procedure/repartition/group/sync_region.rs:241-248 \u2014 before extracting anything, compare \u0060src/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs\u0060 and \u0060src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 129 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/meta-srv/src/procedure/repartition/group/apply_staging_manifest.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d38e54caa8d47a9650017f1c277a3b62d59bfa3e7ae88b646f9d7ffdae62745"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/file-engine/src/engine.rs:291-298 | src/file-engine/src/engine.rs:324-331 \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/file-engine/src/engine.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"23a4b22576c53478ff5881e9fa346f98151d6f739a936590943c35318f78d634"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): src/cmd/src/bin/query_regression_runner/direct.rs:388-395 | src/cmd/src/bin/query_regression_runner/remote/ingest.rs:286-293 | src/cmd/src/bin/query_regression_runner/remote/storage.rs:57-64 \u2014 before extracting anything, compare \u0060src/cmd/src/bin/query_regression_runner/remote/ingest.rs\u0060 and \u0060src/cmd/src/bin/query_regression_runner/remote/storage.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 30 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/cmd/src/bin/query_regression_runner/direct.rs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"d59f4f3fcdc97170a6981d6c8a13ba33113924443573429624c07d4984799daa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/function/src/aggrs/vector/product.rs:54-61 | src/common/function/src/aggrs/vector/sum.rs:54-61 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/vector/product.rs\u0060 and \u0060src/common/function/src/aggrs/vector/sum.rs\u0060 as WHOLE FILES: this scan already matched 4 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. 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/common/function/src/aggrs/vector/product.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9fb43aedd9cce6c12c0981a3cd0232ba05c8a075dc13d8268d7069d2ccf4d92"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/query/src/promql/planner.rs:3981-3987 | src/query/src/promql/planner.rs:4074-4080 \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/query/src/promql/planner.rs"},"region":{"startLine":3981}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8d2b8d4c69de367ffe5361122b06f90e31a2d5c2c5ad32f53fdbf0ec859f0f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/function/src/scalars/string/format.rs:206-212 | src/common/function/src/scalars/string/space.rs:158-164 \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/common/function/src/scalars/string/format.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f0c4b1548c30db6c8a34fa681cd8da41f3d74d35a19f5bda0102dc3e36d68f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/mito2/src/cache/index.rs:119-125 | src/mito2/src/cache/index.rs:131-136 \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/mito2/src/cache/index.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"44d4b239331808479f3554a8288f087eb0d57fd2b624ef428899c9bbb469077f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/common/function/src/scalars/math/clamp.rs:264-269 | src/common/function/src/scalars/math/clamp.rs:318-323 \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/common/function/src/scalars/math/clamp.rs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5ad6a3616ef679eb26f920a90f34f1fafe431ef554478daa3813d72db94db16"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/cli/src/data/export_v2/command.rs:675-680 | src/cli/src/data/export_v2/command.rs:681-686 \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/src/data/export_v2/command.rs"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8e41279c8fc63020e7334fe9f6f0e775337ba317e3d7af90a6e52518fa5dc11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/cmd/src/bin/query_regression_runner/direct.rs:233-237 | src/cmd/src/bin/query_regression_runner/direct.rs:250-254 \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/cmd/src/bin/query_regression_runner/direct.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"af25e129c15b7bb1dceab96d16e1ec6e0d6a5e27c1f6b28761fb99e8c5d33fc8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (2\u20135 lines \u00D7 4): src/cmd/src/bin/query_regression_runner/direct.rs:382-386 | src/cmd/src/bin/query_regression_runner/remote/ingest.rs:282-284 | src/cmd/src/bin/query_regression_runner/remote/read_bench.rs:283-284 | src/cmd/src/bin/query_regression_runner/remote/storage.rs:51-55 \u2014 before extracting anything, compare \u0060src/cmd/src/bin/query_regression_runner/remote/ingest.rs\u0060 and \u0060src/cmd/src/bin/query_regression_runner/remote/storage.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 30 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/cmd/src/bin/query_regression_runner/direct.rs"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"af2b26b65a8fbbc2c965a4be9e29e6dee8c20831636a0cead3c5270219ac83c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/common/function/src/aggrs/geo/encoding.rs:144-148 | src/common/function/src/aggrs/geo/geo_path.rs:166-170 \u2014 before extracting anything, compare \u0060src/common/function/src/aggrs/geo/encoding.rs\u0060 and \u0060src/common/function/src/aggrs/geo/geo_path.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 121 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/common/function/src/aggrs/geo/encoding.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc823da117d626724098e5f144811ce27e59961b2ac8fec03ebe378297e7d1d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/function/src/scalars/string/format.rs:191-197 | src/common/function/src/scalars/string/space.rs:140-146 \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/common/function/src/scalars/string/format.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"d26162af1a0054ee65bb2b35120c6e62090284eee75614e846bd89f2ce9210fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/common/meta/src/key.rs:612-619 | src/common/meta/src/key.rs:633-640 \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/common/meta/src/key.rs"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"421ff174df5fb484f4b83446a990fbc47ff57cc1a164bb356cb8654844207966"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/common/time/src/timestamp.rs:268-273 | src/common/time/src/timestamp.rs:283-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/common/time/src/timestamp.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb818960469c121f0190f8e34af4c0c80dc0b35f0403214122f87fa2ac0cd3f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/datatypes/src/value.rs:463-473 | src/partition/src/expr.rs:71-81 \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/datatypes/src/value.rs"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"48dfa089f7dfe90b636d5b6ae875c6377f530e95b0d88c2bcb24587d842f7621"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/mito2/src/read/seq_scan.rs:581-585 | src/mito2/src/read/unordered_scan.rs:365-369 \u2014 before extracting anything, compare \u0060src/mito2/src/read/seq_scan.rs\u0060 and \u0060src/mito2/src/read/unordered_scan.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 54 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/mito2/src/read/seq_scan.rs"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2a721c24e16159628e2cf3f2e138c0da6a5aa170e72b7bcb9c52f256bd0fff5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/operator/src/insert.rs:1788-1792 | src/servers/src/otlp/logs.rs:864-868 \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/operator/src/insert.rs"},"region":{"startLine":1788}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb10e568a791ba1cb09a60e8e47a72a88519f25985418bafadbce63c043d9750"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/partition/src/expr.rs:261-265 | src/partition/src/expr.rs:267-271 \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/partition/src/expr.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0075abe604cceabe273a5fcb739fb1a8364c5561bd0d4ee02f968bfc0c872a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/partition/src/overlap.rs:147-151 | src/partition/src/overlap.rs:162-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":"src/partition/src/overlap.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"485f3cb378a9dcffb5516cb7bde6124f6824ab70a3bd4f44684d17bff5c3e319"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/store-api/src/region_info.rs:90-94 | src/store-api/src/sst_entry.rs:142-146 | src/store-api/src/sst_entry.rs:365-369 \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/store-api/src/region_info.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"32e5dc240a7a2f4b0382d4be2c7972cc8b72d303f2267f6dcade341f15b23f89"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201321 lines \u00D7 3): .github/scripts/query-regression-run.py:314-322 | .github/scripts/query-regression-run.py:402-422 | .github/scripts/query-regression-run.py:496-504 \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. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just before the matched lines, \u0060.github/scripts/query-regression-run.py:495\u0060 calls \u0060ValueError\u0060 and \u0060.github/scripts/query-regression-run.py:313\u0060 does not \u2014 after which the two agree again for 3 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".github/scripts/query-regression-run.py"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"63fb2db253993d28210a3a8e825e47ede227769f7fc6fb52f42b7000af509f0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): .github/scripts/aliyun-ecs-runner-provision.py:247-261 | .github/scripts/aliyun-ecs-runner-teardown.py:108-122 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060.github/scripts/aliyun-ecs-runner-provision.py:247\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. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".github/scripts/aliyun-ecs-runner-provision.py"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ad13232da68d7a64952fa2e72c2f7d8b0e14d3c575ff47347a4717a94a96ac1"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (60 shared lines): tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:301-428 | tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:287-374 \u2014 These two members are variants of one another: 60 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":"tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5e26421557a290fc1ed3b0452ba325fe29e42a3ae8f3521babd163f4fae4f2c"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (31 shared lines): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:188-294 | tests-fuzz/targets/fuzz_insert_logical_table.rs:234-295 \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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"27473b4f90747bc530b669f5f415a84922d85a9f61d41d02f027397c15955a7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (44 corresponding lines): tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:188-233 | tests-fuzz/targets/wal/fuzz_remote_wal_logical_prune.rs:331-376 \u2014 These two members are one piece of code written twice and then edited apart: 44 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":"tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"a80a19e16bf2157d4695ae75860aee33eedc12854afdca9a6b0d112bdb4a018d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (9 members, 50\u002B identical tokens): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:118-238 | tests-fuzz/targets/ddl/fuzz_alter_table.rs:224-325 | tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:66-188 | tests-fuzz/targets/ddl/fuzz_create_table.rs:91-121 | tests-fuzz/targets/ddl/fuzz_repartition_table.rs:246-389 | tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:108-120 | tests-fuzz/targets/fuzz_insert_logical_table.rs:139-151 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:107-119 | tests-fuzz/targets/wal/fuzz_remote_wal_logical_prune.rs:251-276 \u2014 These 9 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 9 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 9 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e1a08aa7e0c8e0d266b072cf834cb410922ac28d190d93c7ddaf062953a31be"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:101-116 | tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:66-188 | tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:125-140 | tests-fuzz/targets/fuzz_insert_logical_table.rs:103-118 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:124-139 \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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"549aaac7c4e0f8a7b40b82d3aca1445f27ef71b7f6763300d49d7d5705bbe241"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:118-238 | tests-fuzz/targets/ddl/fuzz_alter_table.rs:224-325 | tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:66-188 | tests-fuzz/targets/ddl/fuzz_create_table.rs:91-121 | tests-fuzz/targets/unstable/fuzz_create_table_standalone.rs:198-216 \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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"71568f597e13cbe5130dc110b09d8305d8e6eac83dff56322a3b254ceb4018c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): src/common/meta/src/kv_backend/test.rs:549-576 | src/common/meta/src/kv_backend/test.rs:578-616 | src/common/meta/src/kv_backend/test.rs:618-656 | src/common/meta/src/kv_backend/test.rs:658-696 \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/common/meta/src/kv_backend/test.rs"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"333ff7a4d0c447a58c2afd196039df890a80d8430023042c91ff7f1f0caf9e50"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): tests-fuzz/src/translator/mysql/alter_expr.rs:89-99 | tests-fuzz/src/translator/mysql/create_expr.rs:61-71 | tests-fuzz/src/translator/postgres/alter_expr.rs:75-85 | tests-fuzz/src/translator/postgres/create_expr.rs:57-67 \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":"tests-fuzz/src/translator/mysql/alter_expr.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"e102a19def8bf024ddef00636f618360f434c6565f511e6f16163598ede3c749"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:118-238 | tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:66-188 | tests-fuzz/targets/ddl/fuzz_create_table.rs:91-121 | tests-fuzz/targets/fuzz_insert.rs:126-216 \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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"417d05b53d05feee491b1460cab9a9defde2087fccddadf55213eb7878773231"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 2): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:229-259 | tests-fuzz/targets/failover/fuzz_failover_mito_regions.rs:297-327 \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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cd2c6c7fd8916dcc4d5bde5983015d8f95833b969eb828e794436ba3581286b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): tests-fuzz/targets/fuzz_insert.rs:166-195 | tests-fuzz/targets/fuzz_insert_logical_table.rs:160-189 \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":"tests-fuzz/targets/fuzz_insert.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1bae7e8f2f6c1047642b235e233a4821950b7283c9810c33e00e5e4dcee4ef1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201326 lines \u00D7 2): tests-integration/src/test_util.rs:1186-1211 | tests-integration/src/test_util.rs:1231-1254 \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":"tests-integration/src/test_util.rs"},"region":{"startLine":1186}}}],"partialFingerprints":{"codehealthFindingId/v1":"98066028265c663af641af777ca2c810e5202f0f6f7dcfeeb0bbf1d2e9654494"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201325 lines \u00D7 2): tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:317-341 | tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:305-325 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 80 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":"tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"872641aa9d0eaf5ab314642603981bd5b84ccdb2bf2bf2ae9ac57d2adb1d7971"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:133-154 | tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:95-115 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_create_logical_table.rs\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 111 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"11f6d1c2ed9943c706758bf0bceecd5e12b4115f878222912035a22eb5b54393"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:165-186 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:164-185 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 205 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"89ee6ed9ffbc5f4ea265bed3969a7d148a3cfb82fc1a5f9f0514f3f825ba9adc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:215-234 | tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:164-183 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_create_logical_table.rs\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 111 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"daf516a4d1e74e0db1efbf6b68ae2639e8931d39b3bac8065e6c4a9fe805002d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): tests-integration/src/test_util.rs:1101-1120 | tests-integration/src/test_util.rs:1151-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":"tests-integration/src/test_util.rs"},"region":{"startLine":1101}}}],"partialFingerprints":{"codehealthFindingId/v1":"337ed701ff252bf4539630258215c5ba59c8de8fb96e33226e8ddfca694b7fae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201319 lines \u00D7 2): tests-fuzz/targets/fuzz_insert.rs:142-160 | tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:158-174 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/fuzz_insert.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs\u0060 as WHOLE FILES: this scan already matched 4 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":"tests-fuzz/targets/fuzz_insert.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f89f8ac8e5bf1c3ea8d47638ffe24ccafb0e0f738973c9149815551fc040192"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:194-212 | tests-fuzz/targets/wal/fuzz_remote_wal_logical_prune.rs:336-354 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs\u0060 and \u0060tests-fuzz/targets/wal/fuzz_remote_wal_logical_prune.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 42 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":"tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ca0185c2a37c9868e061486bb368399fb56ba60fb8868d0d734cb2e4f274807"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201318 lines \u00D7 2): tests-integration/src/test_util.rs:1082-1099 | tests-integration/src/test_util.rs:1135-1149 \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":"tests-integration/src/test_util.rs"},"region":{"startLine":1082}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9761df069de6c1aba5ccfab4da0e3c854751497b3d7844254ddfec46dbb9a23"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_repartition_metric_table.rs:442-456 | tests-fuzz/targets/ddl/fuzz_repartition_table.rs:398-414 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_repartition_metric_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_repartition_table.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 37 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":"tests-fuzz/targets/ddl/fuzz_repartition_metric_table.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d71ab6bf41b1b7b641c2113305d8968c1bdc855df69a1c095d66290b8a34406"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:274-290 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:408-424 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 205 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"947750aa2969ef1e264e24b5a556a40c6177524f82be854f82420d772e17eb79"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:81-96 | tests-fuzz/targets/fuzz_insert_logical_table.rs:83-98 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/fuzz_insert_logical_table.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 71 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c5d9a5ed4f0af7feac185320d9c3be738b8b79945427bf6195146ed7cce8483"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:375-390 | tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:346-361 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 80 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":"tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"897caba93e2e25188b85f586ac8740451b9d63fb0e4b8fa83c7b62e4a6d15eba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:218-233 | tests-fuzz/targets/wal/fuzz_remote_wal_logical_prune.rs:361-376 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs\u0060 and \u0060tests-fuzz/targets/wal/fuzz_remote_wal_logical_prune.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 42 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":"tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"27f7ea59b6133350827ae0026d57b8b9045d35ed05ed1bfef644007fd621ba74"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:102-116 | tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:126-140 | tests-fuzz/targets/fuzz_insert_logical_table.rs:104-118 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:125-139 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 as WHOLE FILES: this scan already matched 4 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"27e8e782e1cf1df8af854201f37ad4771e8ed7c5f79f953ec608cb8d8fcaae13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): src/common/meta/src/kv_backend/test.rs:603-616 | src/common/meta/src/kv_backend/test.rs:643-656 | src/common/meta/src/kv_backend/test.rs:683-696 \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/common/meta/src/kv_backend/test.rs"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"0237ae2faf96f9323cdf0c06638654051ff017b0c8631e170031b8949ed9ea94"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 3): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:81-93 | tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:71-84 | tests-fuzz/targets/fuzz_insert_logical_table.rs:83-95 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_create_logical_table.rs\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 111 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fb0017879c1c43087f65ceb8e0400e228ff416cc2d79b8143e7a10c0b3a4cdb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201314 lines \u00D7 3): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:226-238 | tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:175-188 | tests-fuzz/targets/ddl/fuzz_create_table.rs:112-121 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_create_logical_table.rs\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 111 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf8181b5827f05b9f768a6eac572bd1ad711b39d34f0640d0f93a10145fedb69"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_repartition_table.rs:101-114 | tests-fuzz/targets/ddl/fuzz_repartition_table_chaos.rs:132-145 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_repartition_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_repartition_table_chaos.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 33 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":"tests-fuzz/targets/ddl/fuzz_repartition_table.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"64a528bc45451700d662e7518be9622100858a9a01a692aa8dc2e9ac266e0ad1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_repartition_table.rs:145-158 | tests-fuzz/targets/ddl/fuzz_repartition_table_chaos.rs:167-180 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_repartition_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_repartition_table_chaos.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 33 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":"tests-fuzz/targets/ddl/fuzz_repartition_table.rs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e96471e3e44df95fe30a56047a346e8158343ef004d35a8987cfc7df8c73865"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:343-355 | tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:327-340 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 80 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":"tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd38d68ad05a0053079db841faa0468385b6a55dfe4d287a401f44c0cbb09c4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 5): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:102-113 | tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:116-128 | tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:126-137 | tests-fuzz/targets/fuzz_insert_logical_table.rs:104-115 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:125-136 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_create_logical_table.rs\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 111 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb282496eea63fa5220bfb9da8266903c194c5d788b8945a8d73431880ff2629"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201313 lines \u00D7 3): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:282-294 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:416-428 | tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:366-374 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 205 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"e667e9db6706261ef70b816aa9dc7a3fa545ed0dd4803b12bf54210cd136887f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): tests-fuzz/src/utils/cluster_info.rs:49-60 | tests-fuzz/src/utils/cluster_info.rs:82-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":"tests-fuzz/src/utils/cluster_info.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"22b6e2585da8f3968a6aa59b6e6777755f6f5fe591a65f1c41c17366832d73f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_create_table.rs:73-84 | tests-fuzz/targets/fuzz_insert.rs:90-101 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_create_table.rs\u0060 and \u0060tests-fuzz/targets/fuzz_insert.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 35 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":"tests-fuzz/targets/ddl/fuzz_create_table.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4132c8f0563a2608eaeb4c2aa1db2c1c96158880d1406318ffd52b9fd4fcded"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_repartition_metric_table.rs:221-232 | tests-fuzz/targets/ddl/fuzz_repartition_table.rs:196-207 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_repartition_metric_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_repartition_table.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 37 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":"tests-fuzz/targets/ddl/fuzz_repartition_metric_table.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b0506d37d6ac3d95af20d9d7a09f406a3fee1bc4bbe5138f1e05de5c22a3d3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:213-224 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:219-230 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 205 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"150f6c4b02ddf1b2ab0a57a82cfc6497b846977172212b89239d07435cd3d59c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:110-120 | tests-fuzz/targets/fuzz_insert_logical_table.rs:141-151 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:109-119 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/fuzz_insert_logical_table.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 93 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"283a604b649b1498a81a24a24834141afb566618d6456477349d2604afd15d88"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 3): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:201-211 | tests-fuzz/targets/fuzz_insert_logical_table.rs:248-258 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:208-216 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/fuzz_insert_logical_table.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 93 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"d791c27d86af658f321363ecddff12df15a4618c48f6a3d61f1474310f076811"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): tests-fuzz/src/ir/insert_expr.rs:89-99 | tests-fuzz/src/ir/insert_expr.rs:104-114 \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":"tests-fuzz/src/ir/insert_expr.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcd5ee688c404582c3c874bfe95e5c9a5ef9aedea607128985dad1073bd58910"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_alter_table.rs:315-325 | tests-fuzz/targets/ddl/fuzz_repartition_table.rs:379-389 \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":"tests-fuzz/targets/ddl/fuzz_alter_table.rs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeee25f87294420bb314349655fb1b04e126d482c499edb271a675ba3d611b97"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_repartition_table.rs:279-287 | tests-fuzz/targets/ddl/fuzz_repartition_table.rs:314-324 \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":"tests-fuzz/targets/ddl/fuzz_repartition_table.rs"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6b7ab92e625de53c163637b86592866e6553624382f6e47109e0b53d39ea00e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:93-103 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:92-102 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 205 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"4066a81b005f2570e5cc0a346eb32fb0778de5760d6468d1db809f1b24556959"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): tests-fuzz/targets/failover/fuzz_failover_mito_regions.rs:97-107 | tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:90-100 \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":"tests-fuzz/targets/failover/fuzz_failover_mito_regions.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd163649445403b09f5fe1178eb0f20cee80b9f9fb2df83bb2e3f22949c89431"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): tests-fuzz/targets/fuzz_insert.rs:128-138 | tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:289-299 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/fuzz_insert.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs\u0060 as WHOLE FILES: this scan already matched 4 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":"tests-fuzz/targets/fuzz_insert.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"025149d9aea00722a5452dd5f14a6217f9c0fba0006e34b883144b5badf3809c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): tests-fuzz/src/translator/mysql/alter_expr.rs:90-99 | tests-fuzz/src/translator/mysql/create_expr.rs:62-71 | tests-fuzz/src/translator/postgres/alter_expr.rs:76-85 | tests-fuzz/src/translator/postgres/create_expr.rs:58-67 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 4 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 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests-fuzz/src/translator/mysql/alter_expr.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b9791850318e45bcf666f84b48193b7bb623d8424a44253efcdc92b28ad6ee8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): tests-fuzz/src/ir.rs:266-275 | tests-fuzz/src/ir.rs:279-288 | tests-fuzz/src/ir.rs:292-301 \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":"tests-fuzz/src/ir.rs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9be325493d89e06d421a2417fa3e4ab01ad60bc3409c8ce1dedd6c8f6c0e64a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 3): tests-fuzz/targets/ddl/fuzz_alter_table.rs:83-91 | tests-fuzz/targets/ddl/fuzz_create_table.rs:72-81 | tests-fuzz/targets/fuzz_insert.rs:89-98 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_create_table.rs\u0060 and \u0060tests-fuzz/targets/fuzz_insert.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 35 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":"tests-fuzz/targets/ddl/fuzz_alter_table.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"aac50e8211244678d0fce051563a4d34c2ccc884e38c0437224ae414944a01db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): tests-integration/src/test_util.rs:1197-1206 | tests-integration/src/test_util.rs:1240-1249 | tests-integration/src/test_util.rs:1295-1304 \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":"tests-integration/src/test_util.rs"},"region":{"startLine":1197}}}],"partialFingerprints":{"codehealthFindingId/v1":"a016b539ac982a0a92b5430ef76e1f47e69fefab9d0eb5f032e343fb4c7c302a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/common/meta/src/kv_backend/test.rs:285-294 | src/common/meta/src/kv_backend/test.rs:297-306 \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/common/meta/src/kv_backend/test.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"3894545dce03778e6c50c2ac6e4f0dda6f6de2aa4d0a6052c00e6471401df927"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/table/src/test_util/memtable.rs:64-73 | src/table/src/test_util/table_info.rs:26-35 \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/table/src/test_util/memtable.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"934d45208c9650f7d0bfc4e3cc7f890cef930bb2a40f08d96d82df97eaae7689"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): tests-fuzz/src/ir.rs:305-314 | tests-fuzz/src/ir.rs:318-327 \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":"tests-fuzz/src/ir.rs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2d1832290c91ad8d20d5c897f9561cbc61e35c7a947da1651a036f0747d1a6a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:178-187 | tests-fuzz/targets/ddl/fuzz_alter_table.rs:249-257 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_alter_table.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 39 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f539952ff816005d33def693057fb23d63b1030f99d3a53602eca68e9c5b48d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201310 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_create_table.rs:94-103 | tests-fuzz/targets/ddl/fuzz_repartition_table.rs:251-257 \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":"tests-fuzz/targets/ddl/fuzz_create_table.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"1240ce3ce2a788d95700f9b7e7f5a78ad22171c1ad6d11f6cd8cda9c11ecb30a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:81-89 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:79-88 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 205 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"91533d9cb05ce21eac0e9df43fa9e58369503c25938ff34e9203532b26b18708"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:147-156 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:146-155 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 205 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd757b68215a4882dee0d10ea0630aa0a3bb60554ff8e35805aece24493c9457"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:261-270 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:288-297 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 205 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"c82239192ed01ad1e7ecd5a9968b9f73b40e3222bd99e80b5397a9206d55bbdc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:165-174 | tests-fuzz/targets/fuzz_insert.rs:140-149 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:164-173 | tests-fuzz/targets/wal/fuzz_remote_wal_logical_prune.rs:286-294 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 205 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"b458d468189ed32affb9fad5d42058bd0f0085bb6d5a8ea18c980cfa38d28460"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): src/common/meta/src/kv_backend/test.rs:273-281 | src/common/meta/src/kv_backend/test.rs:285-293 | src/common/meta/src/kv_backend/test.rs:297-305 \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/common/meta/src/kv_backend/test.rs"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0de2ac1847f5ca2c34a2ad0e04b19cd440295080f171622a2f7c8820bb05cdb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:164-172 | tests-fuzz/targets/fuzz_insert_logical_table.rs:208-216 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:163-171 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/fuzz_insert_logical_table.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 93 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"908428fe0179a084734c21b1ed54c675dffc1eb83f0cdc7475334ae712c4271d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/common/meta/src/kv_backend/test.rs:160-168 | src/common/meta/src/kv_backend/test.rs:206-214 \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/common/meta/src/kv_backend/test.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"47bd03b642f2f3bf764df903855a965bf8f3a67959ca68dbee4341e7d6dc5def"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (2\u20139 lines \u00D7 4): src/common/meta/src/kv_backend/test.rs:559-560 | src/common/meta/src/kv_backend/test.rs:589-597 | src/common/meta/src/kv_backend/test.rs:628-630 | src/common/meta/src/kv_backend/test.rs:669-677 \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/common/meta/src/kv_backend/test.rs"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"49527b8e6927aa5f9983778f77fd4d720cc3f6e8cc759fe3ada08635854a1821"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): tests-fuzz/src/generator/alter_expr.rs:211-219 | tests-fuzz/src/generator/alter_expr.rs:262-270 \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":"tests-fuzz/src/generator/alter_expr.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f8e9c4bf20d63ec2ed6c61a5b07e271e6a1261647776a9b2c71c83bc3f22579"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:191-198 | tests-fuzz/targets/fuzz_insert_logical_table.rs:237-245 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/fuzz_insert_logical_table.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 93 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"51a34f38e0976629b094d97397c9b3b310363ce7e78cc207e7f8e679a7a2aa5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): src/common/meta/src/kv_backend/test.rs:511-517 | src/common/meta/src/kv_backend/test.rs:540-547 \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/common/meta/src/kv_backend/test.rs"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"2369d74e8bfc866aa0e9576853223466ef61df0164e8455a5058aed4faa4f6e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): tests-fuzz/src/generator/repartition_expr.rs:36-43 | tests-fuzz/src/generator/repartition_expr.rs:88-95 \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":"tests-fuzz/src/generator/repartition_expr.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"81bc8c9ec356cd5be175f5a2de02cd29146dc6d83531ded480abb339605d52b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): tests-fuzz/src/utils/csv_dump_writer.rs:215-222 | tests-fuzz/src/utils/csv_dump_writer.rs:242-249 \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":"tests-fuzz/src/utils/csv_dump_writer.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1577f107a04e9a9a3fcf7d5c9f00a2ce971d6c5d10b9448ffcbe16476a0ff01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20138 lines \u00D7 5): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:190-197 | tests-fuzz/targets/ddl/fuzz_alter_table.rs:268-275 | tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:142-145 | tests-fuzz/targets/ddl/fuzz_create_table.rs:105-107 | tests-fuzz/targets/unstable/fuzz_create_table_standalone.rs:204-206 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_alter_table.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 39 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"93cbc9ab6d7d361f591c561cd7819d59c14bd89cf05e8edcaad8187268ff8290"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_repartition_metric_table.rs:473-480 | tests-fuzz/targets/ddl/fuzz_repartition_table.rs:78-85 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_repartition_metric_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_repartition_table.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 37 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":"tests-fuzz/targets/ddl/fuzz_repartition_metric_table.rs"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"b85c6dd8f90ac9ea3a2219ffd57d3a1b7b4ec97609f35fb8b3d64f5a74091fcb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:124-130 | tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:111-117 | tests-fuzz/targets/fuzz_insert_logical_table.rs:142-148 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:110-116 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 as WHOLE FILES: this scan already matched 4 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"23d79d8fda4e6b195201285b672f069aab4d8a1b9dd4e2308124cd46622be0b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): tests-fuzz/targets/ddl/fuzz_alter_table.rs:230-236 | tests-fuzz/targets/ddl/fuzz_create_table.rs:94-100 | tests-fuzz/targets/ddl/fuzz_repartition_table.rs:251-257 \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":"tests-fuzz/targets/ddl/fuzz_alter_table.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5c0d2df972e835ca568c7b970bbabecc7086ca40960f1c6beef9eb33aee5fe4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/meta/src/kv_backend/test.rs:566-572 | src/common/meta/src/kv_backend/test.rs:675-681 \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/common/meta/src/kv_backend/test.rs"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cd83df5359f19ec5b8cd0a724d15b3d39cbd5ee998d68888d385e7fd0f94fac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:71-77 | tests-fuzz/targets/ddl/fuzz_alter_table.rs:215-221 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_alter_table.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 39 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"224ce7c24a8397bee59804ab540941dbcef9026b67e7113f00a04f5cda2550c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:124-130 | tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:86-92 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_create_logical_table.rs\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 111 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f19d1e7db0c2e187e9b5b9208cf0841e02e0d9fa32e1966ba4b0d509fa978e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): tests-integration/src/test_util.rs:735-741 | tests-integration/src/test_util.rs:1127-1133 \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":"tests-integration/src/test_util.rs"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6dd3f61d8d062b2fc9965246ee0133510b1a6652ab8adbdfea1d0959c9bfd61"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 6): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:124-129 | tests-fuzz/targets/ddl/fuzz_alter_table.rs:230-235 | tests-fuzz/targets/ddl/fuzz_repartition_table.rs:251-256 | tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:111-116 | tests-fuzz/targets/fuzz_insert_logical_table.rs:142-147 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:110-115 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_alter_table.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 39 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1ed068f898bbcddc2e29b90839573266a44219b9256d32125ba18d0d0346154"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:82-87 | tests-fuzz/targets/failover/fuzz_failover_mito_regions.rs:91-96 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:80-85 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 205 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb17b7c3f5b1a31a5f981b1f8f98a34d9009eb810f7163e960fdfbfb7b7089fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): tests-fuzz/targets/failover/fuzz_failover_mito_regions.rs:88-93 | tests-fuzz/targets/fuzz_insert.rs:71-76 | tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:84-89 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/fuzz_insert.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs\u0060 as WHOLE FILES: this scan already matched 4 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":"tests-fuzz/targets/failover/fuzz_failover_mito_regions.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"27aa760e3f1498ef6f1a52fb2a61528875a7c040197c961dcb09013687295e25"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:68-75 | tests-fuzz/targets/ddl/fuzz_create_table.rs:70-75 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_create_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_create_table.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 59 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":"tests-fuzz/targets/ddl/fuzz_create_logical_table.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"341030baf62d5b084edaa09a73deead762d8bca19f5c9f732c78c30ed035064a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:207-213 | tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:225-229 | tests-fuzz/targets/wal/fuzz_remote_wal_logical_prune.rs:349-355 | tests-fuzz/targets/wal/fuzz_remote_wal_logical_prune.rs:368-372 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs\u0060 and \u0060tests-fuzz/targets/wal/fuzz_remote_wal_logical_prune.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 42 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":"tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f378e79df3fddddb868de901dcc27bee60bbe0de7ffc70a86681e510d448ce2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): tests-fuzz/src/utils/csv_dump_writer.rs:281-291 | tests-fuzz/src/utils/sql_dump_writer.rs:154-164 \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":"tests-fuzz/src/utils/csv_dump_writer.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"d313ddb0ebf1ba215eeed58ee927589626f85127554e3443096ac9a2fc9cfa99"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_repartition_table.rs:176-180 | tests-fuzz/targets/ddl/fuzz_repartition_table_chaos.rs:327-331 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_repartition_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_repartition_table_chaos.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 33 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":"tests-fuzz/targets/ddl/fuzz_repartition_table.rs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"40f2bf8f04f950544814f8acc851f5f9c871fbb048d1d7ce29fb4488d48e09ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): tests-fuzz/src/utils/network_chaos.rs:90-94 | tests-fuzz/src/utils/pod_failure.rs:64-68 \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":"tests-fuzz/src/utils/network_chaos.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"c36813437a2be576b2be7d438305125ef2c75345d61e98d13d54966f014de5db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:227-238 | tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:176-188 | tests-fuzz/targets/ddl/fuzz_create_table.rs:113-121 | tests-fuzz/targets/fuzz_insert.rs:205-216 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_create_logical_table.rs\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 111 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"163d51b7a1c36382946765e2c92ad3aee52c4cbee8f64e4f762174f283ec90c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): tests-fuzz/src/utils/network_chaos.rs:26-37 | tests-fuzz/src/utils/network_chaos.rs:40-51 \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":"tests-fuzz/src/utils/network_chaos.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"9911c12aa5c61e38a647ac2c65b7d63bb83935dd0b1fcf37cda1af8b31c4e288"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): tests-fuzz/src/validator/row.rs:48-59 | tests-fuzz/src/validator/row.rs:62-73 \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":"tests-fuzz/src/validator/row.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e7ce2fa720e8448e4576561ec9eeb3f93aab922609ed42f3d6a0996f40961dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): tests-fuzz/src/validator/column.rs:173-184 | tests-fuzz/src/validator/row.rs:48-59 \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":"tests-fuzz/src/validator/column.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"4000fd97f27929a500d9b892d603009c2d5436f7ed1b53b961600e13dc6839a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs:283-294 | tests-fuzz/targets/fuzz_insert_logical_table.rs:284-295 | tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs:417-428 | tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:367-374 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs\u0060 and \u0060tests-fuzz/targets/fuzz_insert_logical_table.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 93 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":"tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"f06e4556713e5e3daf097f6b277297f948f0264a6a78e0be97df09f38035f668"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:130-135 | tests-fuzz/targets/ddl/fuzz_create_table.rs:95-103 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_create_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_create_table.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 59 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":"tests-fuzz/targets/ddl/fuzz_create_logical_table.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bb4e00cc2c02573da2ea5c6c2960357d5c3b8d29619cecdf644bfcbd9aea8ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs:157-164 | tests-fuzz/targets/ddl/fuzz_alter_table.rs:239-246 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_alter_table.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 39 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":"tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"adaa6d72281053b1351ac9a730623d537f195b86399cdd282414fa91baee48a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_repartition_metric_table.rs:154-161 | tests-fuzz/targets/ddl/fuzz_repartition_metric_table.rs:182-189 \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":"tests-fuzz/targets/ddl/fuzz_repartition_metric_table.rs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcc6b0662fd9aaec3ee08953e6d56f73ae2a56d9f0a6f0f50c396e089cdab722"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/meta/src/kv_backend/test.rs:162-168 | src/common/meta/src/kv_backend/test.rs:178-184 \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/common/meta/src/kv_backend/test.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"2eb2f0e64230921edf066783861af16ef3efa55eb4a461fe6b77cc21e9f33012"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): tests-fuzz/targets/ddl/fuzz_create_logical_table.rs:86-91 | tests-fuzz/targets/ddl/fuzz_create_table.rs:94-99 | tests-fuzz/targets/wal/fuzz_remote_wal_logical_prune.rs:256-262 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/ddl/fuzz_create_logical_table.rs\u0060 and \u0060tests-fuzz/targets/ddl/fuzz_create_table.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 59 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":"tests-fuzz/targets/ddl/fuzz_create_logical_table.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"24908abe685803b17ee0e3c7b47e591c27d7430484f457b46372ee485a575711"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): tests-fuzz/targets/ddl/fuzz_repartition_table.rs:271-277 | tests-fuzz/targets/ddl/fuzz_repartition_table.rs:306-312 \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":"tests-fuzz/targets/ddl/fuzz_repartition_table.rs"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a8d59b416ac34344f7dd56e1669c886c1bb72d5bd0108fb6c1f8f63dbc34085"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/common/meta/src/kv_backend/test.rs:169-174 | src/common/meta/src/kv_backend/test.rs:185-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":"src/common/meta/src/kv_backend/test.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"bea57fc868b5ee2c7407d02166681530636a0e2de6c5faaa2aa48697835115d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): tests-fuzz/targets/failover/fuzz_failover_mito_regions.rs:89-93 | tests-fuzz/targets/fuzz_insert.rs:72-76 | tests-fuzz/targets/fuzz_insert_logical_table.rs:73-77 | tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs:85-89 \u2014 before extracting anything, compare \u0060tests-fuzz/targets/fuzz_insert.rs\u0060 and \u0060tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs\u0060 as WHOLE FILES: this scan already matched 4 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":"tests-fuzz/targets/failover/fuzz_failover_mito_regions.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"c85a53cf4b0ff33d8b38dfad8d3afd72d25abc53cec69aefc8940ba0b29fc546"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project cli: cli has instability 0.93 with 2 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"58e2b9e4f0bb0eaf8fe62b94fdc4985965649481a16556e16c1ed5e04fab200f"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project common-grpc-expr: common-grpc-expr has instability 0.83 with 2 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"400a7ffddc950d2bcf4cb53116933a29b948a004188750e04b266040065c27cc"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project datanode: datanode has instability 0.92 with 3 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2ca6bea3fa36a9c642eabcb3d1e6c545eefd4b3aebcbc1bf00adcf424d8357ec"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project flow: flow has instability 0.90 with 3 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4f73a2edafaee5f8223cc92f072a73296837f859cc13fd2c967e9aa301962c2d"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project frontend: frontend has instability 0.93 with 3 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"82ca537a9a327bbf2887eaa53ebfbc91fdaea10c6d6922aaa4aec9380d332475"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project index: index has instability 0.88 with 1 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0c3e2fb68d652a2f82d60e938ad6d9439df737284cb1a04d8266309f557564dd"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project meta-srv: meta-srv has instability 0.89 with 3 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7209119768f847b3651c60f075037232279252bf98c0f3b79153ad678ea7af2f"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project metric-engine: metric-engine has instability 0.88 with 2 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8918de153127ce52d3244ccf673ac42055ba11b4101d54c4af401d0dcd6d08fb"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project mito2: mito2 has instability 0.86 with 4 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b1ec4b3bdfd6729efeb1e98f1d6ab5ee67fdac9955c1278f22d0e63050c38f9a"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project operator: operator has instability 0.86 with 5 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c9e04b9b05f0be140cd5a042edf8f1eed8e1baaedb755bb3e6a7e2aaf0faaa8d"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project pipeline: pipeline has instability 0.84 with 3 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0fa35c1d6dc7106c956d1b581cf1dc18813112ba037601afe2eb91ad8a57d95e"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project plugins: plugins has instability 0.93 with 1 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"27d5d5223ceb22366233bb5236a311c88e01cdfb96fb599c27d58168df8adb2d"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project servers: servers has instability 0.83 with 7 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b25b961e78eb5b59e8734c950d51f25f1653441edc7de82ce3e4d050fc14cdd1"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project standalone: standalone has instability 0.91 with 3 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a4dd16b60629591056c55e37506fe087d648bae8f12bd09e42d594db2db0de09"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: common-version: common-version: abstractness 0.00, instability 0.00, distance 1.00 \u2014 the shape a shared-kernel / building-block library has BY DESIGN \u2014 concrete and widely depended-on is what makes it useful, and this dimension does not penalise it (the distance is reported for completeness, not as a defect). Worth a look only if it has grown past one coherent kernel into an everything-bucket."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"66a9796c2d3a719999d8b68e67215f4b2ff3d7601dc6b4364fe40aa333dbbc87"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: common-batcher: common-batcher: abstractness 0.11, instability 0.00, distance 0.89 \u2014 the shape a shared-kernel / building-block library has BY DESIGN \u2014 concrete and widely depended-on is what makes it useful, and this dimension does not penalise it (the distance is reported for completeness, not as a defect). Worth a look only if it has grown past one coherent kernel into an everything-bucket."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"623be016a49e62141a5b78509d27d9fb05995affb164b6d0fcbc557cd540d31e"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: common-telemetry: common-telemetry: abstractness 0.06, instability 0.07, distance 0.87 \u2014 the shape a shared-kernel / building-block library has BY DESIGN \u2014 concrete and widely depended-on is what makes it useful, and this dimension does not penalise it (the distance is reported for completeness, not as a defect). Worth a look only if it has grown past one coherent kernel into an everything-bucket."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5e67f1b1b15e4a053542e404ae2889309c783b4b5f46422cf068c03c96bc783d"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: api: api: abstractness 0.00, instability 0.16, distance 0.84 \u2014 zone of pain \u2014 concrete and depended on by 31 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"823ce4ae1e2ae4cb02f167a0613786104b965d0072e165472a4958b5d77d1a54"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: common-time: common-time: abstractness 0.14, instability 0.06, distance 0.80 \u2014 the shape a shared-kernel / building-block library has BY DESIGN \u2014 concrete and widely depended-on is what makes it useful, and this dimension does not penalise it (the distance is reported for completeness, not as a defect). Worth a look only if it has grown past one coherent kernel into an everything-bucket."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8a4321d7b2003f09952df3c5a98917b42bed46f60210b093355faf1f0d76b679"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: object-store: object-store: abstractness 0.00, instability 0.28, distance 0.72 \u2014 zone of pain \u2014 concrete and depended on by 13 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"869219dfe5b7c99083897bf6f9af80e060c62b9fc3764e2e254687704bc5e64f"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: common-runtime: common-runtime: abstractness 0.17, instability 0.12, distance 0.72 \u2014 the shape a shared-kernel / building-block library has BY DESIGN \u2014 concrete and widely depended-on is what makes it useful, and this dimension does not penalise it (the distance is reported for completeness, not as a defect). Worth a look only if it has grown past one coherent kernel into an everything-bucket."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e3fa2481188d5d0e09ba948281b66fcb4d2d7244aa13979fa4eddb49635e6208"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: common-decimal: common-decimal: abstractness 0.00, instability 0.29, distance 0.71 \u2014 the shape a shared-kernel / building-block library has BY DESIGN \u2014 concrete and widely depended-on is what makes it useful, and this dimension does not penalise it (the distance is reported for completeness, not as a defect). Worth a look only if it has grown past one coherent kernel into an everything-bucket."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e8788df9f78756e21e204e90e1e836b440b85a961c4320bf6e12ef998c2d3d57"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: common-base: common-base: abstractness 0.29, instability 0.00, distance 0.71 \u2014 the shape a shared-kernel / building-block library has BY DESIGN \u2014 concrete and widely depended-on is what makes it useful, and this dimension does not penalise it (the distance is reported for completeness, not as a defect). Worth a look only if it has grown past one coherent kernel into an everything-bucket."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0e0e5e0002f5a960ffc4a806576092da1502496a1f1b34e0966c2c3e18d48551"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MockKvBackend (LCOM4 7): MockKvBackend\u0027s methods fall into 7 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 7 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/common/meta/src/kv_backend/test_util.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"00e78d99179946ee338870985f8a3d51765a4487c1707d313d555fb1628bd5cb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CacheManager (LCOM4 6): CacheManager\u0027s methods fall into 6 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 6 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/mito2/src/cache.rs"},"region":{"startLine":1020}}}],"partialFingerprints":{"codehealthFindingId/v1":"353418e7c4848c00d055ee1677b158ee36021ff525ed6137d5662489c277e4b6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GrpcServerBuilder (LCOM4 6): GrpcServerBuilder\u0027s methods fall into 6 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 6 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/servers/src/grpc/builder.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"d53ec3ef53dc0e85e63cde0654ca171a024aab3694fa3c6bb10592cbd1ca1cab"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DatanodeTableManager (LCOM4 4): DatanodeTableManager\u0027s methods fall into 4 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 4 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/common/meta/src/key/datanode_table.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"01331fcd9798aa0a40550775209cf16ef43a052497d4df8f03f3102f8716c343"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RegionServerInner (LCOM4 4): RegionServerInner\u0027s methods fall into 4 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 4 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/datanode/src/region_server.rs"},"region":{"startLine":1041}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c26e25a08a7b2fd01b1d64e79c57e10ec82a4095e974d89c693799608295bf6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DefaultGcSchedulerCtx (LCOM4 4): DefaultGcSchedulerCtx\u0027s methods fall into 4 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 4 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/meta-srv/src/gc/ctx.rs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e1dd17b9c610b4ab9000ab9d4600dfb8bf2b1e3ef81a1fabb5790a5b2b0ff21"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WriteRequest (LCOM4 4): WriteRequest\u0027s methods fall into 4 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 4 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/mito2/src/request.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"657a1cddb4c8a3f0fc51da0bfa0a1ae062d42d0825f10924c49d9dc4ec202611"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DfContextProviderAdapter (LCOM4 4): DfContextProviderAdapter\u0027s methods fall into 4 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 4 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/query/src/datafusion/planner.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2b7b272880cbabc095d4ef1696b1dcf0f6fb87f463ea365b237e68d9e26c8df"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StandaloneInformationExtension (LCOM4 4): StandaloneInformationExtension\u0027s methods fall into 4 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 4 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/standalone/src/information_extension.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"1491831f0441fb88713e0f509d78f80f0c4e6cdf6a24230ff7f980d80654e8a8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ScannerProperties (LCOM4 4): ScannerProperties\u0027s methods fall into 4 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 4 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/store-api/src/region_engine.rs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"f246652565a5205927389694ef5184e32002c5f0fa86c2fd16b92e7507c38d36"}},{"ruleId":"D12","level":"warning","message":{"text":"Yanked release: mysql: \u0060mysql\u0060 resolves to 28.0.0 in the committed Cargo.lock, and crates.io reports that release as YANKED. A yanked release is one the publisher has withdrawn and asked you to stop using; it keeps resolving only so existing locks do not break. The current stable release is 28.0.3. Run \u0060cargo update -p mysql\u0060 and commit the updated lock."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"16ea8be5c4191dde3bdbd8cfabe4c0fac568087aa0b0c1650b38aed4768d1001"}},{"ruleId":"D13","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":"9fec7e932550278dae7418f9a497cc735fcbb8ec4a0b11770813d82bdbe17fe4"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/query/src/promql/planner.rs: src/query/src/promql/planner.rs changed 27 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 105 in PromPlanner::create_function_expr at line 3278. 12 of those changes were fix/bug commits, and the other 15 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/query/src/promql/planner.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/query/src/promql/planner.rs"},"region":{"startLine":3278}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e75e4ca990ccb46638bb5ef47c8e694b5b6b878823dcf6469baa42b59fdcbd5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/frontend/src/instance.rs: src/frontend/src/instance.rs changed 30 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 48 in frontend::instance::check_permission at line 1596. 8 of those changes were fix/bug commits, and the other 22 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/frontend/src/instance.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/frontend/src/instance.rs"},"region":{"startLine":1596}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1549cb5ec70915f375f9a7b3eb96b8703041630f27de023d138cfef3e8019c3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/operator/src/insert.rs: src/operator/src/insert.rs changed 21 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 46 in Inserter::create_or_alter_tables_on_demand at line 1041. 2 of those changes were fix/bug commits, and the other 19 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/operator/src/insert.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/operator/src/insert.rs"},"region":{"startLine":1041}}}],"partialFingerprints":{"codehealthFindingId/v1":"92ccdb09ff33e5f285de606ea35551f95734b18f2a8c44101cb7aec3407dda16"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/servers/src/postgres/types.rs: src/servers/src/postgres/types.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 131 in servers::postgres::types::parameters_to_scalar_values at line 556. 4 of those changes were fix/bug commits, so the churn is repair rather than feature work. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/servers/src/postgres/types.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/servers/src/postgres/types.rs"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cb2e7a5ad0865bf1d33ad9b8d7952bf2735d92ef9b6414c70671857cb10505d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/operator/src/statement.rs: src/operator/src/statement.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 57 in StatementExecutor::execute_sql at line 248. 3 of those changes were fix/bug commits, and the other 11 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/operator/src/statement.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/operator/src/statement.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a30032a42422b2d27bde011ef98c8d456b518cd82012211c5feb877b8960e88"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/operator/src/error.rs: src/operator/src/error.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 59 in Error::status_code at line 980. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/operator/src/error.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/operator/src/error.rs"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"9408290400d799ae7a448eb3f94b616140690766a7851cb041612083325ba0b6"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/error.rs: src/mito2/src/error.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 73 in Error::status_code at line 1434. 2 of those changes were fix/bug commits, and the other 7 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/error.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/mito2/src/error.rs"},"region":{"startLine":1434}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4477adbe2cc99b370fda1d93efaf5200ac479e82c1bc4165a1fc8d94686b8ef"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/sst/parquet/reader.rs: src/mito2/src/sst/parquet/reader.rs changed 22 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in ParquetReaderBuilder::build_reader_input_inner at line 432. 3 of those changes were fix/bug commits, and the other 19 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/sst/parquet/reader.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/mito2/src/sst/parquet/reader.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2586baa6771399d978894af6ecb63ecdfdcc2a3fe6aff67a37fdbf356c6202f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/query/src/dist_plan/merge_scan.rs: src/query/src/dist_plan/merge_scan.rs changed 17 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in MergeScanExec::to_stream at line 620. 10 of those changes were fix/bug commits, so the churn is repair rather than feature work. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/query/src/dist_plan/merge_scan.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/query/src/dist_plan/merge_scan.rs"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"663a96a4ba22ac4b99eedaaa749c687fd8d3c858d0eff949b44f79597250ca2c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/operator/src/statement/ddl.rs: src/operator/src/statement/ddl.rs changed 21 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in StatementExecutor::determine_flow_type at line 889. 4 of those changes were fix/bug commits, and the other 17 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/operator/src/statement/ddl.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/operator/src/statement/ddl.rs"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"822def82add4d699b8dababd8587b1d289fa581d3aa6d90e5d9a6440c4015625"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/common/query/src/native_histogram.rs: src/common/query/src/native_histogram.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 30 in NativeHistogram::fraction_with_info at line 740. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/common/query/src/native_histogram.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/common/query/src/native_histogram.rs"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"00b1001ec87982daf1009e599fc7352af42765f00a5dc01a5aecbe8c606a5f06"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/common/meta/src/ddl_manager.rs: src/common/meta/src/ddl_manager.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in DdlManager::submit_ddl_task at line 933. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/common/meta/src/ddl_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/common/meta/src/ddl_manager.rs"},"region":{"startLine":933}}}],"partialFingerprints":{"codehealthFindingId/v1":"d36772d67c545cce71f7a1744bb4fa9cc253fd54b292b2dac51b60704f7408b5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/region/opener.rs: src/mito2/src/region/opener.rs changed 15 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in mito2::region::opener::preload_parquet_meta_cache_for_files at line 1200. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/region/opener.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/mito2/src/region/opener.rs"},"region":{"startLine":1200}}}],"partialFingerprints":{"codehealthFindingId/v1":"43f7e84a874c48a8c5a91c11b1a829f3120c61edd28777d7f1cc2ae07fa09bf2"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/common/meta/src/error.rs: src/common/meta/src/error.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 36 in Error::status_code at line 1174. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/common/meta/src/error.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/common/meta/src/error.rs"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"1523d15142620ad8d17eb7fa80a24bf874fa971db44e2a381a3668e3f4bb37c1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/cmd/src/datanode/scanbench.rs: src/cmd/src/datanode/scanbench.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 42 in ScanbenchCommand::run at line 771. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/cmd/src/datanode/scanbench.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/cmd/src/datanode/scanbench.rs"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd2098c5e956950985a9973a15972e49bafd9f49cbac2edabc0c379fb86dc86c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/worker.rs: src/mito2/src/worker.rs changed 15 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in RegionWorkerLoop::handle_background_notify at line 1339. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/worker.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/mito2/src/worker.rs"},"region":{"startLine":1339}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac120c665bb61478e06d5e1a7c3c91d5b218adb49307c099cfc0b864b4bacb2b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/catalog/src/system_schema/information_schema.rs: src/catalog/src/system_schema/information_schema.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 45 in InformationSchemaProvider::system_table at line 203. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/catalog/src/system_schema/information_schema.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/catalog/src/system_schema/information_schema.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eed89af87924e5894c45fe9a4a49e60547de6ec730df503b5bc6e1a626463e3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/meta-srv/src/metasrv/builder.rs: src/meta-srv/src/metasrv/builder.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in MetasrvBuilder::build at line 207. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/meta-srv/src/metasrv/builder.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/meta-srv/src/metasrv/builder.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"febf477151288f0234efaaf72d9880fea25905f9f21ed277f64c874a798b499c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/datatypes/src/vectors/json/builder.rs: src/datatypes/src/vectors/json/builder.rs changed 12 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in datatypes::vectors::json::builder::json_variant_into_value 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/datatypes/src/vectors/json/builder.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/datatypes/src/vectors/json/builder.rs"},"region":{"startLine":804}}}],"partialFingerprints":{"codehealthFindingId/v1":"b56e0de86bfbf35ec4aaf9e4abf1cd5dd3fbee2f252ef2888a45f3d2123761b7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/sql/src/statements/statement.rs: src/sql/src/statements/statement.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 53 in Statement::fmt at line 239. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/sql/src/statements/statement.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/sql/src/statements/statement.rs"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"c31d3ac121c1f86a476a02c934a8e6986278ed892a5246534325c733625b9116"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/promql/src/functions/native_histogram.rs: src/promql/src/functions/native_histogram.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 26 in MixedRangeFunction::parse at line 1568. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/promql/src/functions/native_histogram.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/promql/src/functions/native_histogram.rs"},"region":{"startLine":1568}}}],"partialFingerprints":{"codehealthFindingId/v1":"d20a49bb48edc71bc448fd014339a6a7972b0b7dcb9ce5250cd215d5402cc2de"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/servers/src/error.rs: src/servers/src/error.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 40 in Error::status_code at line 751. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/servers/src/error.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/servers/src/error.rs"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ea582852a94c4d9273c8ee6323e19e6e3d5aae568aa3420b08c46630a46c7ab"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/request.rs: src/mito2/src/request.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in WorkerRequest::try_from_region_request at line 666. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/request.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/mito2/src/request.rs"},"region":{"startLine":666}}}],"partialFingerprints":{"codehealthFindingId/v1":"002af4f9af8a068fd526de0bf77046a0bf0f65f3bfbca319c387e21c069f68ba"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/table/src/metadata.rs: src/table/src/metadata.rs changed 12 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in TableMeta::set_table_options at line 357. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/table/src/metadata.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/table/src/metadata.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"eef35a7318452861b652e9e85f532df0a0c8dd0a0fd8f421862014fa7d89e484"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/compaction/compactor.rs: src/mito2/src/compaction/compactor.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in DefaultCompactor::merge_ssts at line 637. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/compaction/compactor.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/mito2/src/compaction/compactor.rs"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bf5da31199bb7c5c7cba012cef4206d24baa20c7d2ab5d1bdeed7c9cd1793cf"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/datatypes/src/value.rs: src/datatypes/src/value.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 37 in Value::try_from at line 1141. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/datatypes/src/value.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/datatypes/src/value.rs"},"region":{"startLine":1141}}}],"partialFingerprints":{"codehealthFindingId/v1":"44290e2c194c66e97c2ddaa012624e813bcc8e06b4161fa68c1e95a2e79bbff9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/sql/src/statements.rs: src/sql/src/statements.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in sql::statements::sql_data_type_to_concrete_data_type at line 219. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/sql/src/statements.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/sql/src/statements.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"9afb146b83605e6e158a847273eaeecde6f30ddf15aa26e2a6f15c25fc3b76b2"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/datatypes/src/vectors/json/array.rs: src/datatypes/src/vectors/json/array.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in JsonArray::try_get_value at line 46. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/datatypes/src/vectors/json/array.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/datatypes/src/vectors/json/array.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"68cc75a2779f0b987b6714530e539d12eb47472bed86d2c86cc8f7f71f3b51d2"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/frontend/src/instance/grpc.rs: src/frontend/src/instance/grpc.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in Instance::do_query at line 64. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/frontend/src/instance/grpc.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/frontend/src/instance/grpc.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"d369f556d4607ab6296c74e109d80d221c779d4924c70d1f986672674f9ea000"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/flow/src/batching_mode/task.rs: src/flow/src/batching_mode/task.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in BatchingTask::start_scheduled_loop at line 1620. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/flow/src/batching_mode/task.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/flow/src/batching_mode/task.rs"},"region":{"startLine":1620}}}],"partialFingerprints":{"codehealthFindingId/v1":"85fc2a9ce6c920b90f01310633d4872ba4561c3264e088087ff759ed8e5fa7d7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/worker/handle_write.rs: src/mito2/src/worker/handle_write.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in RegionWorkerLoop::handle_write_requests at line 43. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/worker/handle_write.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/mito2/src/worker/handle_write.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f140c15d6e1b203625424180df92d392bfd016acbbde5cf36cfafb3749b5426"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/worker/handle_alter.rs: src/mito2/src/worker/handle_alter.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in RegionWorkerLoop::handle_alter_region_options_fast at line 218. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/worker/handle_alter.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/mito2/src/worker/handle_alter.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe88fe0ba187357b711f8c1d1f273df344df804ec86863ab4cc0bec46fb688b5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/engine.rs: src/mito2/src/engine.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in EngineInner::scan_region at line 1054. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/engine.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/mito2/src/engine.rs"},"region":{"startLine":1054}}}],"partialFingerprints":{"codehealthFindingId/v1":"415a8d527e53fe8e8c06d511bb16427b702cac8bdaa4992b01fa08b218e728b1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/operator/src/expr_helper.rs: src/operator/src/expr_helper.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in operator::expr_helper::to_alter_table_expr at line 811. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/operator/src/expr_helper.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/operator/src/expr_helper.rs"},"region":{"startLine":811}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ed9ba17614cfe2bd557d2b3edc78234135470d3952fe5bec8bd887f068b717e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/frontend/src/instance/entity_graph.rs: src/frontend/src/instance/entity_graph.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in EntityGraphProviderImpl::enumerate at line 386. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/frontend/src/instance/entity_graph.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/frontend/src/instance/entity_graph.rs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"156b5f1555e9047f496b445c131e387a6ce7676d29924548103e42b235d3b384"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/sql/src/util.rs: src/sql/src/util.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 34 in sql::util::extract_tables_from_statement at line 211. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/sql/src/util.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/sql/src/util.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"470629ff52664a7204ed2ae7b91998262772d198f43fbdac18884e55d4c34e34"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/metric-engine/src/engine.rs: src/metric-engine/src/engine.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in MetricEngine::handle_request at line 210. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/metric-engine/src/engine.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/metric-engine/src/engine.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"705c696f23e2f2c2f9d59171cdf1a8e0b7dab1d4015155c34634216326d8c325"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/servers/src/http/prometheus.rs: src/servers/src/http/prometheus.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in servers::http::prometheus::label_values_query at line 1683. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/servers/src/http/prometheus.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/servers/src/http/prometheus.rs"},"region":{"startLine":1683}}}],"partialFingerprints":{"codehealthFindingId/v1":"87739510b90e78ca7f82d3826d3a77fe13870e2887716a6a6675381ea70f5346"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/meta-srv/src/error.rs: src/meta-srv/src/error.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 42 in Error::status_code at line 1165. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/meta-srv/src/error.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/meta-srv/src/error.rs"},"region":{"startLine":1165}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b1f8529e3e71b86bdfaf45beedd14424da4b3256aa53f2f8078774f7323ece7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/sst/parquet/prefilter.rs: src/mito2/src/sst/parquet/prefilter.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in mito2::sst::parquet::prefilter::build_reader_filter_plan at line 406. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/sst/parquet/prefilter.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/mito2/src/sst/parquet/prefilter.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"601423f08e607d93dc85964209944c19e7f18c9bd824445182ffc8eff5981d66"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/cmd/src/bin/query_perf_fixture/direct_sst.rs: src/cmd/src/bin/query_perf_fixture/direct_sst.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in cmd::bin::query_perf_fixture::direct_sst::run_direct_sst at line 360. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/cmd/src/bin/query_perf_fixture/direct_sst.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/cmd/src/bin/query_perf_fixture/direct_sst.rs"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"4db948c7f8fe600367edc716bd1fc31023bcf5e38d87eed7938ab121e863a305"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/servers/src/otlp/trace/v1.rs: src/servers/src/otlp/trace/v1.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in servers::otlp::trace::v1::write_attribute_with_schema at line 606. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/servers/src/otlp/trace/v1.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/servers/src/otlp/trace/v1.rs"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2731192662effe79574c8acf9e9526de3623ff6e23720385526ba1d827e6f99"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/flow/src/batching_mode/utils.rs: src/flow/src/batching_mode/utils.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in flow::batching_mode::utils::merge_op_for_aggregate_expr at line 329. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/flow/src/batching_mode/utils.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/flow/src/batching_mode/utils.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef4a0b8f8db9a2c1c3e963129002b20e555d5393bd6836daef2ea4af398cf41a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/servers/src/postgres/handler.rs: src/servers/src/postgres/handler.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in servers::postgres::handler::describe_fields at line 566. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/servers/src/postgres/handler.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/servers/src/postgres/handler.rs"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"89dbd965e18b87fa61082fb680a72d3b4106deef9f1abebd04977333ca27a9c5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/promql/src/extension_plan/instant_manipulate.rs: src/promql/src/extension_plan/instant_manipulate.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in InstantManipulateStream::manipulate at line 675. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/promql/src/extension_plan/instant_manipulate.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/promql/src/extension_plan/instant_manipulate.rs"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"45812be6e667a17d416c19abf5931f1e8d0e02b01c0c929a6415874f860584aa"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/frontend/src/instance/otlp/trace_ingest.rs: src/frontend/src/instance/otlp/trace_ingest.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in Instance::ingest_trace_spans at line 871. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/frontend/src/instance/otlp/trace_ingest.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/frontend/src/instance/otlp/trace_ingest.rs"},"region":{"startLine":871}}}],"partialFingerprints":{"codehealthFindingId/v1":"194562f6c03f884025a08a28aa550415884b4ab5646e5964c1a31194daf154b1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/datanode/src/error.rs: src/datanode/src/error.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 26 in Error::status_code 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/datanode/src/error.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/datanode/src/error.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b51dd67f1741749cb7aff966346c5e5518880f2d602de32f1c1d33447e0bb31"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/cmd/src/datanode/parquetbench.rs: src/cmd/src/datanode/parquetbench.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in ParquetbenchCommand::run 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/cmd/src/datanode/parquetbench.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/cmd/src/datanode/parquetbench.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"df0b1e308801b2b9725d512cf2edf4f627158f09682ca4bc572097b9f71bb8e7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/servers/src/mysql/helper.rs: src/servers/src/mysql/helper.rs changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 49 in servers::mysql::helper::convert_value at line 141. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/servers/src/mysql/helper.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/servers/src/mysql/helper.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"51e77f35b8d3dbd5a52d9e2abfe85906320779ce9ee34abe1135405ca79b7a0f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/servers/src/mysql/writer.rs: src/servers/src/mysql/writer.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 31 in MysqlResultWriter::write_recordbatch at line 226. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/servers/src/mysql/writer.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/servers/src/mysql/writer.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"a30d565f1bd8eba0e0e37f0e363850c821559ba72660345de8a0793cf61e2d01"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/operator/src/statement/copy_table_to.rs: src/operator/src/statement/copy_table_to.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in operator::statement::copy_table_to::stream_to_managed_parquet_with_packed at line 262. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/operator/src/statement/copy_table_to.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/operator/src/statement/copy_table_to.rs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"b832c0a7058fceaa2d33eed206bc9d16a799d38ede22cf8ce0fc1b66462afe4a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/read/pruner.rs: src/mito2/src/read/pruner.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in Pruner::worker_loop at line 601. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/read/pruner.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/mito2/src/read/pruner.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"26aa9fb5fae82cfede95f6513af644e59558bfc3e3c890f4a17af59e6dc2f0d5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/pipeline/src/etl/transform/transformer/greptime/coerce.rs: src/pipeline/src/etl/transform/transformer/greptime/coerce.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 29 in pipeline::etl::transform::transformer::greptime::coerce::coerce_u64_value at line 344. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/pipeline/src/etl/transform/transformer/greptime/coerce.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/pipeline/src/etl/transform/transformer/greptime/coerce.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"82da5010adc514fdf163b79f2a68abb6684f2207ee129e496ee6b06b05d462cf"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/gc.rs: src/mito2/src/gc.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in LocalGcWorker::do_region_gc at line 413. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/gc.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/mito2/src/gc.rs"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa347c9a618026ed43bb832cab4bd0462a5d13637a3e92b768e42d9300236cec"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/frontend/src/error.rs: src/frontend/src/error.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 28 in Error::status_code at line 379. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/frontend/src/error.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/frontend/src/error.rs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"be921fd743b07a2bf317131be856094618eff786ef7ea6f1253ca41e3aacfa58"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/sst/parquet/format.rs: src/mito2/src/sst/parquet/format.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in mito2::sst::parquet::format::column_values_by_type at line 150. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/sst/parquet/format.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/mito2/src/sst/parquet/format.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5989259a85aa7a4b05fabd66e1ea04cd3c1e65d8a56d99044026babe041c931"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/sql/src/parsers/show_parser.rs: src/sql/src/parsers/show_parser.rs changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 39 in ParserContext::parse_show at line 38. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/sql/src/parsers/show_parser.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/sql/src/parsers/show_parser.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e3735e41fcc536a203d6be96ec676acf8ddaf6d218a1e9c659966a703cfd0ab"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/flow/src/batching_mode/engine.rs: src/flow/src/batching_mode/engine.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in BatchingEngine::create_flow_inner at line 558. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/flow/src/batching_mode/engine.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/flow/src/batching_mode/engine.rs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c951db6563ceb2e21bf4a4ee27c5be7a3d2dee42f572e4bcaaa90f1cb994cd"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/store-api/src/storage/requests.rs: src/store-api/src/storage/requests.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in ScanRequest::fmt at line 99. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/store-api/src/storage/requests.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/store-api/src/storage/requests.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1e2542840b50b92d888a90a0cdde4e240cd918f951a094e773bcaf83200bef2"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/query/src/promql/planner/matching_filters.rs: src/query/src/promql/planner/matching_filters.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in query::promql::planner::matching_filters::try_propagate at line 96. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/query/src/promql/planner/matching_filters.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/query/src/promql/planner/matching_filters.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"c15576b679af9627ebd05aa5ccdaaa4d5da4931c2bc6149dbf7e0736951b60ad"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/operator/src/statement/semantic_graph/conventions.rs: src/operator/src/statement/semantic_graph/conventions.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in operator::statement::semantic_graph::conventions::validate at line 173. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/operator/src/statement/semantic_graph/conventions.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/operator/src/statement/semantic_graph/conventions.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d5e72290030c088437e6a830039418df0a1b07656fcd0b6631205f565ad41bf"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/servers/src/postgres/auth_handler.rs: src/servers/src/postgres/auth_handler.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in PostgresServerHandlerInner::authenticate_password_message at line 363. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/servers/src/postgres/auth_handler.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/servers/src/postgres/auth_handler.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"d156943f4c791392115cc90a5918526040afe1b86824e0b1707c87da6acd1d8f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/servers/src/http/handler.rs: src/servers/src/http/handler.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in servers::http::handler::sql_analyze_stream at line 293. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/servers/src/http/handler.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/servers/src/http/handler.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"78db6cb6ee227ec3213d23e1f0c110e9a8ad88ed366914af45ecdb1027e9bd77"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/promql/src/functions/extrapolate_rate.rs: src/promql/src/functions/extrapolate_rate.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in ExtrapolatedRate::calc at line 132. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/promql/src/functions/extrapolate_rate.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/promql/src/functions/extrapolate_rate.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbc65fef06438dc769470de029914d5fa343781033deb3ebcc7fb07ed40cb4f5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/sql/src/parser.rs: src/sql/src/parser.rs changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 30 in ParserContext::parse_statement at line 142. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/sql/src/parser.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/sql/src/parser.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3acff20f9a81f01b2be04868a8281168f10a0ca332e3448e653883a9a639dc8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/cli/src/data/export_v2/command.rs: src/cli/src/data/export_v2/command.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in ExportCreateCommand::build at line 346. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/cli/src/data/export_v2/command.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/src/data/export_v2/command.rs"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1794b81880a1ab1cbdf2f10f8da4b4bc2549deb7363ce24dbb0e8cc725b6f63"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/common/grpc-expr/src/alter.rs: src/common/grpc-expr/src/alter.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in common_grpc_expr::alter::alter_expr_to_request at line 165. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/common/grpc-expr/src/alter.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/common/grpc-expr/src/alter.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"58003cc76f81146316c92ed6d369a4354ab1e916e9d0ed4aa535f77e05be4781"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/query/src/range_select/plan_rewrite.rs: src/query/src/range_select/plan_rewrite.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in query::range_select::plan_rewrite::evaluate_expr_to_millisecond at line 157. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/query/src/range_select/plan_rewrite.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/query/src/range_select/plan_rewrite.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"3341dd8ae691f03bf9c17e4bacdf65d5b229d82f01da93a2642727040200c5b3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito-codec/src/row_converter/dense.rs: src/mito-codec/src/row_converter/dense.rs changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in SortField::encoded_len at line 308. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito-codec/src/row_converter/dense.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/mito-codec/src/row_converter/dense.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"57ac31d8c7085c87de68728db1997c46e977a157ec6020fc0cf9219aebecb28f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/sql/src/statements/alter.rs: src/sql/src/statements/alter.rs changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in AlterTableOperation::fmt at line 248. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/sql/src/statements/alter.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/sql/src/statements/alter.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbe42f23d71e9762c69b3bfc1a797f0fa14afaf560011fc00e68ec28f25168b8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/mito2/src/series_index/maintenance.rs: src/mito2/src/series_index/maintenance.rs changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in mito2::series_index::maintenance::build_index_version at line 160. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/series_index/maintenance.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/mito2/src/series_index/maintenance.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6ea0a0ea09e0d76502525d2bffe1721c180ce03066ea510d4e631962d6efa1e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/pipeline/src/error.rs: src/pipeline/src/error.rs changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in Error::status_code at line 904. 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-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/pipeline/src/error.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/pipeline/src/error.rs"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0563b72bd2ed10fbe1ef57cd23ce70823e2ab6c43ba576c529386cb3db9d0fd"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: src/mito2/src/compaction/twcs.rs: src/mito2/src/compaction/twcs.rs changed 12 times in last 90 days and 7 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 12 (its worst body is TwcsPicker::build_output at line 131), UNDER the 15 threshold, so this is deliberately not filed as a churn \u00D7 complexity hotspot \u2014 the difficulty here is in the behaviour the file has to get right, not in its control flow, and refactoring it for complexity would be the wrong move. The repairs counted were: \u201Cfix(mito2): compare primary key ranges across schema versions (#9205)\u201D; \u201Cfix(mito2): preserve last-non-null values across compaction (#9169)\u201D; \u201Cfix(mito2): avoid chained L1 rewrites in TWCS (#8981)\u201D; \u201Cfix(mito2): keep deletion markers when compacting part of a window (#8872)\u201D. Each one is a case this code did not handle. Before the next change lands here, check that every one of them is pinned by a test that fails without its fix; where the same area keeps coming back, the durable fix is usually at the interface that keeps being misused rather than at the line that was last corrected. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/mito2/src/compaction/twcs.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/mito2/src/compaction/twcs.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"19de1e7897f6843fb719351278086df18fa2906f7f9056b1d84c5265f9eb896c"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: src/object-store/src/secure_fs.rs: src/object-store/src/secure_fs.rs changed 7 times in last 90 days and 4 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 10 (its worst body is SecureFsLister::next at line 536), UNDER the 15 threshold, so this is deliberately not filed as a churn \u00D7 complexity hotspot \u2014 the difficulty here is in the behaviour the file has to get right, not in its control flow, and refactoring it for complexity would be the wrong move. The repairs counted were: \u201Cfix: release completed SST write buffers during compaction (#9243)\u201D; \u201Cfix(object-store): fix unused import on Windows after #8735 (#8752)\u201D; \u201Cfix(object-store): skip removed-entry lister test on Windows (#8735)\u201D; \u201Ctest(object-store): fix racy SecureFs abort test (#8720)\u201D. Each one is a case this code did not handle. Before the next change lands here, check that every one of them is pinned by a test that fails without its fix; where the same area keeps coming back, the durable fix is usually at the interface that keeps being misused rather than at the line that was last corrected. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/object-store/src/secure_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":"src/object-store/src/secure_fs.rs"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"87677616a5de6d830d39d477618631c0f6d508ea3a3fd69d06510f386f1fa6ba"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: src/query/src/analyze.rs: src/query/src/analyze.rs changed 7 times in last 90 days and 4 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 4 (its worst body is JsonMetrics::from_record_batch_metrics at line 357), UNDER the 15 threshold, so this is deliberately not filed as a churn \u00D7 complexity hotspot \u2014 the difficulty here is in the behaviour the file has to get right, not in its control flow, and refactoring it for complexity would be the wrong move. The repairs counted were: \u201Cfix: postgres describe for more statements (#8974)\u201D; \u201Cfix: update tokio-postgres and correct explain/fetch cursor output schema (#8955)\u201D; \u201Cfix(query): preserve bare plan names in analyze json (#8519)\u201D; \u201Cfix(query): validate DistAnalyzeExec child count (#8510)\u201D. Each one is a case this code did not handle. Before the next change lands here, check that every one of them is pinned by a test that fails without its fix; where the same area keeps coming back, the durable fix is usually at the interface that keeps being misused rather than at the line that was last corrected. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/query/src/analyze.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/query/src/analyze.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"302f693ea6b8554f7cc414878e285c65373ee2c93e058800ce05a3d4f36dd0d2"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: src/auth/src/permission.rs: src/auth/src/permission.rs changed 7 times in last 90 days and 4 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 6 (its worst body is DefaultPermissionChecker::check_permission at line 326), UNDER the 15 threshold, so this is deliberately not filed as a churn \u00D7 complexity hotspot \u2014 the difficulty here is in the behaviour the file has to get right, not in its control flow, and refactoring it for complexity would be the wrong move. The repairs counted were: \u201Cfix: harden permission checks and process visibility (#8852)\u201D; \u201Cfix: enforce permissions for restricted HTTP endpoints (#8672)\u201D; \u201Cfix: enforce table-aware permissions across query and ingest protocols (#8552)\u201D; \u201Cfix: close database ACL gaps in permission checks (#8492)\u201D. Each one is a case this code did not handle. Before the next change lands here, check that every one of them is pinned by a test that fails without its fix; where the same area keeps coming back, the durable fix is usually at the interface that keeps being misused rather than at the line that was last corrected. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/auth/src/permission.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/auth/src/permission.rs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"dda1c673fdc463975ee3feb4a7a65f883afd6be1f0fb3a83419b4dde2087434b"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: src/query/src/optimizer/type_conversion.rs: src/query/src/optimizer/type_conversion.rs changed 5 times in last 90 days and 4 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 11 (its worst body is TypeConverter::f_up at line 244), UNDER the 15 threshold, so this is deliberately not filed as a churn \u00D7 complexity hotspot \u2014 the difficulty here is in the behaviour the file has to get right, not in its control flow, and refactoring it for complexity would be the wrong move. The repairs counted were: \u201Cfix(query): keep INSERT timestamp conversion out of the source query (#8911)\u201D; \u201Cfix(query): preserve timestamp literal semantics in inserts (#8889)\u201D; \u201Cfix(query): respect query timezone in timestamp casts (#8859)\u201D; \u201Cfix: convert literals in joins and subqueries (#8501)\u201D. Each one is a case this code did not handle. Before the next change lands here, check that every one of them is pinned by a test that fails without its fix; where the same area keeps coming back, the durable fix is usually at the interface that keeps being misused rather than at the line that was last corrected. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/query/src/optimizer/type_conversion.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/query/src/optimizer/type_conversion.rs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9bedefbf72594b6c18799eaad605eafe9ede955f7526474429038ab8a25a428"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: src/promql/src/extension_plan/range_manipulate.rs: src/promql/src/extension_plan/range_manipulate.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 9 (its worst body is RangeManipulateStream::calculate_range at line 764), UNDER the 15 threshold, so this is deliberately not filed as a churn \u00D7 complexity hotspot \u2014 the difficulty here is in the behaviour the file has to get right, not in its control flow, and refactoring it for complexity would be the wrong move. The repairs counted were: \u201Cfix(promql): resolve dotted column names as unqualified columns (#9391)\u201D; \u201Cfix(promql): preserve native timestamps through sample selection (#9070)\u201D; \u201Cfix(promql): preserve query-aligned range tail (#8650)\u201D. Each one is a case this code did not handle. Before the next change lands here, check that every one of them is pinned by a test that fails without its fix; where the same area keeps coming back, the durable fix is usually at the interface that keeps being misused rather than at the line that was last corrected. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/promql/src/extension_plan/range_manipulate.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/promql/src/extension_plan/range_manipulate.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"7af0b28da3a00e1d6e5275265b5eefc4b21e06c33f916b2260e1aafa17e990c8"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: src/session/src/lib.rs: src/session/src/lib.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 2 (its worst body is Session::add_warning at line 191), UNDER the 15 threshold, so this is deliberately not filed as a churn \u00D7 complexity hotspot \u2014 the difficulty here is in the behaviour the file has to get right, not in its control flow, and refactoring it for complexity would be the wrong move. The repairs counted were: \u201Cfix: postgres describe for more statements (#8974)\u201D; \u201Cfix: update tokio-postgres and correct explain/fetch cursor output schema (#8955)\u201D; \u201Cfix: enforce table-aware permissions across query and ingest protocols (#8552)\u201D. Each one is a case this code did not handle. Before the next change lands here, check that every one of them is pinned by a test that fails without its fix; where the same area keeps coming back, the durable fix is usually at the interface that keeps being misused rather than at the line that was last corrected. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/session/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":"src/session/src/lib.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a7dda056f0d0378453f731cca3bf98c36e9b4245c04ec37034d7b3fff60617c"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: src/query/src/sql.rs: src/query/src/sql.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 8 (its worst body is query::sql::show_variable at line 847), UNDER the 15 threshold, so this is deliberately not filed as a churn \u00D7 complexity hotspot \u2014 the difficulty here is in the behaviour the file has to get right, not in its control flow, and refactoring it for complexity would be the wrong move. The repairs counted were: \u201Cfix: postgres describe for more statements (#8974)\u201D; \u201Cfix: harden permission checks and process visibility (#8852)\u201D; \u201Cfix: sandbox SQL local filesystem access (#8708)\u201D. Each one is a case this code did not handle. Before the next change lands here, check that every one of them is pinned by a test that fails without its fix; where the same area keeps coming back, the durable fix is usually at the interface that keeps being misused rather than at the line that was last corrected. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/query/src/sql.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/query/src/sql.rs"},"region":{"startLine":847}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a47be51fbc6b42857cff1c571ced19283400244eff5ee85593e3a0e0e8f2a51"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: src/common/time/src/timestamp.rs: src/common/time/src/timestamp.rs changed 4 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 8 (its worst body is Timestamp::from_str at line 451), UNDER the 15 threshold, so this is deliberately not filed as a churn \u00D7 complexity hotspot \u2014 the difficulty here is in the behaviour the file has to get right, not in its control flow, and refactoring it for complexity would be the wrong move. The repairs counted were: \u201Cfix(mysql): interpret prepared statement datetime params in session timezone (#8923)\u201D; \u201Cfix(mysql): fail closed on unrepresentable timestamps (#8580)\u201D; \u201Cfix: avoid panic when negating MIN-valued literals (#8484)\u201D. Each one is a case this code did not handle. Before the next change lands here, check that every one of them is pinned by a test that fails without its fix; where the same area keeps coming back, the durable fix is usually at the interface that keeps being misused rather than at the line that was last corrected. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/common/time/src/timestamp.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/common/time/src/timestamp.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb9e24cbf2d93084f1f28060dc17934342115a73ce14b9615f85e5272e53ad2"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: src/meta-srv/src/bootstrap.rs: src/meta-srv/src/bootstrap.rs changed 4 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 9 (its worst body is meta_srv::bootstrap::metasrv_builder at line 286), UNDER the 15 threshold, so this is deliberately not filed as a churn \u00D7 complexity hotspot \u2014 the difficulty here is in the behaviour the file has to get right, not in its control flow, and refactoring it for complexity would be the wrong move. The repairs counted were: \u201Cfix(repartition): enforce GC across lifecycle (#8678)\u201D; \u201Cfix(meta): configure gRPC message limits (#8616)\u201D; \u201Cfix(meta): configure heartbeat message size (#8411)\u201D. Each one is a case this code did not handle. Before the next change lands here, check that every one of them is pinned by a test that fails without its fix; where the same area keeps coming back, the durable fix is usually at the interface that keeps being misused rather than at the line that was last corrected. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/meta-srv/src/bootstrap.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/meta-srv/src/bootstrap.rs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"866afe6fb1679a2fe7111624a86b5ab8141c575261acba8113acdf1d05d3d492"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: src/meta-client/src/client/heartbeat.rs: src/meta-client/src/client/heartbeat.rs changed 3 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 2 (its worst body is HeartbeatConfig::from_response at line 66), UNDER the 15 threshold, so this is deliberately not filed as a churn \u00D7 complexity hotspot \u2014 the difficulty here is in the behaviour the file has to get right, not in its control flow, and refactoring it for complexity would be the wrong move. The repairs counted were: \u201Cfix(meta): configure gRPC message limits (#8616)\u201D; \u201Cfix: reject datanode startup on GC config mismatch (#8509)\u201D; \u201Cfix(meta): configure heartbeat message size (#8411)\u201D. Each one is a case this code did not handle. Before the next change lands here, check that every one of them is pinned by a test that fails without its fix; where the same area keeps coming back, the durable fix is usually at the interface that keeps being misused rather than at the line that was last corrected. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 13:17:42 \u002B00:00\u0027 --until=\u00272026-09-29 13:17:42 \u002B00:00\u0027 --full-history --no-merges -- src/meta-client/src/client/heartbeat.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/meta-client/src/client/heartbeat.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bea8458b01c7f9402a896660f557bac084f130f82b0d38300a69380548ac0ab"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 50 significant file(s) lose their only recent owner: src/common/meta/src/reconciliation/utils.rs, src/partition/src/utils/split.rs, src/meta-srv/src/procedure/repartition/repartition_start.rs, src/meta-srv/src/procedure/repartition/plan.rs, src/meta-srv/src/event/repartition.rs, src/meta-srv/src/procedure/repartition/group.rs, tests-fuzz/targets/ddl/fuzz_repartition_metric_table.rs, src/meta-srv/src/procedure/region_migration/open_candidate_region.rs (\u002B42 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"25112a7d3369e04cba439a5e5f404e6606e78d77ccb84f892fe2bd2930cb5676"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #2: If anonymized user #2 becomes unavailable, 26 significant file(s) lose their only recent owner: src/flow/src/batching_mode/task/test.rs, src/flow/src/batching_mode/utils/test.rs, src/flow/src/batching_mode/task.rs, src/flow/src/batching_mode/utils.rs, src/query/src/dist_plan/remote_dyn_filter_registry.rs, src/flow/src/batching_mode/time_window.rs, src/datanode/src/region_server/remote_dyn_filter.rs, src/query/src/dist_plan/analyzer/utils.rs (\u002B18 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b19970f1b46b0a3070b96793ed154430f94875883c2011eee20eb3fecae24ed8"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #3: If anonymized user #3 becomes unavailable, 16 significant file(s) lose their only recent owner: src/cli/src/data/export_v2/command.rs, src/cli/src/data/snapshot_storage.rs, src/cli/src/data/import_v2/coordinator.rs, src/cli/src/data/export_v2/tests.rs, src/cli/src/data/import_v2/command.rs, src/common/datasource/src/parquet_writer.rs, src/cli/src/data/export_v2/manifest.rs, src/cli/src/data/export_v2/coordinator.rs (\u002B8 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8d591198e2e05d5a5ad06ca573335a2f203f0eba4eddb6974e5bdfa38c64993f"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #4: If anonymized user #4 becomes unavailable, 8 significant file(s) lose their only recent owner: src/operator/src/statement/semantic_graph/relationships.rs, src/operator/src/statement/semantic_graph.rs, src/catalog/src/system_schema/semantic_graph.rs, src/catalog/src/system_schema/information_schema/statistics.rs, src/servers/src/semantic.rs, src/common/function/src/scalars/json/json_object.rs, src/cmd/src/user.rs, scripts/check-enterprise-license.py. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d6d4c1bdcd7c8f43046451484ae5dfe90f9721177640bf608f6f25287d1a39fa"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #5: If anonymized user #5 becomes unavailable, 8 significant file(s) lose their only recent owner: src/common/function/src/uddsketch_compat.rs, src/mito2/src/compaction/scheduler/state.rs, src/catalog/src/system_schema/information_schema/recycle_bin.rs, src/mito2/src/compaction/picker.rs, src/common/function/src/scalars/uddsketch_rank.rs, src/common/grpc/src/flight/do_put.rs, src/common/meta/src/ddl/drop_table/metadata.rs, src/common/telemetry/src/panic_hook.rs. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"26877440b6df91c1a8ede93a4c7808fc37365ebc8ae74251ab3de2181cfbb63c"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #6: If anonymized user #6 becomes unavailable, 7 significant file(s) lose their only recent owner: src/mito2/src/read/series_candidate.rs, src/cmd/src/datanode/parquet_rewrite.rs, src/cmd/src/datanode/parquet_meta.rs, src/cmd/src/datanode/sst_replace.rs, src/cmd/src/datanode/tool_util.rs, src/mito2/src/batch_size.rs, src/mito2/src/series_index.rs. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"23ccb98efa3971866b924e104195c9c9ebd6cccbf2d7469588de40701e1a57f0"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #7: If anonymized user #7 becomes unavailable, 5 significant file(s) lose their only recent owner: src/common/query/src/native_histogram/encoding.rs, src/servers/src/otlp/metrics/translator.rs, src/servers/src/otel_arrow.rs, src/common/query/src/promql_annotations.rs, src/pipeline/src/etl/processor/simple_extract.rs. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"120aa34143ea85a902813dafbd5b3a4a9d8e9c928079a0ab3f6e7972ed180b8c"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #8: If anonymized user #8 becomes unavailable, 5 significant file(s) lose their only recent owner: src/datatypes/src/vectors/json/variant.rs, src/common/function/src/scalars/json/json_is.rs, src/common/function/src/scalars/json/json_path_match.rs, src/common/function/src/scalars/json/parse_json.rs, src/common/function/src/scalars/vector/elem_sum.rs. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2f3ace67283fc43f297d4145d297476f23cae393062a906cf6ba46c29ab90de4"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #9: If anonymized user #9 becomes unavailable, 4 significant file(s) lose their only recent owner: src/mito2/src/engine/region_hook.rs, src/common/recordbatch/src/cursor.rs, src/common/telemetry/src/tracing_context.rs, src/datatypes/src/extension/histogram.rs. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8a2ef4148eddf74dd3d84923a2932a12a46500b349e90a906131f1b565b17f04"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #10: If anonymized user #10 becomes unavailable, 4 significant file(s) lose their only recent owner: src/common/function/src/scalars/primary_key.rs, src/promql/src/range_array.rs, src/query/src/optimizer/promql_tsid_narrow_join.rs, src/file-engine/src/manifest.rs. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"05383324a6a8e362093a591c034734bd320dd413b4a307a8dc023a4ff6a9699d"}},{"ruleId":"D16","level":"note","message":{"text":"Further sole-owners (lower concentration): 5 other contributor(s) are each the sole owner of a small amount of code below the off-boarding threshold \u2014 folded into the bus-factor score and metrics (139 single-owned of 1584 analysed files in total, counted over production source files of roughly 2,400 bytes or more, excluding vendored, generated and example/demo trees and test files identified by path convention, largest first; 1584 of the 1965 production source files in this repository met that bar). They are anonymized user #11 (2 file(s)), anonymized user #12 (1 file(s)), anonymized user #13 (1 file(s)), anonymized user #14 (1 file(s)), anonymized user #15 (1 file(s)) \u2014 spread or document their files in the same way, at lower priority than the named off-boarding risks above."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6eac528f2429e724e1a97ed868f79eefbcf1888dab4af9a9e673429369bb5b2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sunng87): remove this when we finally sunset legacy jsonb \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/src/helper.rs"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b511ccc1fdd8a3862b612e52e9f6aca5f4822646d816223a923cc2c606abbc6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(weny): Add tests for this function. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/api/src/v1/column_def.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"77d51427cd703a388156130c7391192116b8148c986232ce71b380ca033ce355"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Make the cache configurable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cache/src/lib.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cb3c6c8e802fcfe23d969e0c694c45a37c2d8a3287e5bbbb7aee9ee3315d11e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): check column names \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/table_source.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5711588e653e51fc121db506217498028be9cebaaf71d54f5ad902165bc5ae6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(j0hn50n133): re-export to make it compatible with the legacy code, migrate to the new path later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/lib.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bb5a0ab71b687bf45f1f77473f6deafc5d07b4e7a9130d632e887d437c97a78"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This struct can hold a static map of all system tables when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/kvbackend/manager.rs"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b83a229fcd88fe7eb2387d4d7baa4c35d54eb28cb6558da43f0a6dfe618c976"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hl): txn of CachedKvBackend simply pass through to inner backend without invalidating caches. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/kvbackend/client.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"7625bd65b025992823d1c808aa0acd831c53924500c18812fa246c6f98560401"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fys): change to moka method when available \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/kvbackend/client.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd871db05dedf4ba331a683abb2f8ad47c41975d444dccc30708d675bfe1d63"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(dennis): supports more predicate types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/predicate.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd2f28193441495ba63f676c60284b71ea12dca6edca29aa4c60aa1d01033298"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): \u0060region_stats\u0060 API is not stable in distributed cluster because of network issue etc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/tables.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"4616a053b4a10e6e57d7006e0a3f02ac10406d10e0e45eeff4282c26d22fbd95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sunng87): use real data for these fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/tables.rs"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6aa5e243600996f1bc5990e17a171a5a52ff48bcbf873118d6eed1a67da649c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(hl): find a way to extract user catalog to filter queries from other users. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/process_list.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"e61341eaa833349fca52bd5fea0f0eda3d05af398f5a6899c9fb29a9f8d5f719"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): rows and index statistics info \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/partitions.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0ebe21464d180b9bc96e3ade057c8801b4b197be442e4b172dc25380dcf8fb7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): supports update_time \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/partitions.rs"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d772e2acb08f39dd85300423526874b8ee95684d8b2566f599fdfd01782bc7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dimbtp): Foreign key constraint has not \u0060None\u0060 value for last 4 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/key_column_usage.rs"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"437591d4bad2c518e9b238c06779182a1a93109331937d468f181800265d50b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): It must be a JSON type, but we don\u0027t support it yet \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/information_memory_table.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f15834ac068cb4dbdef23f8fa0b1ab548d2d0d2740e2cd33646f95e85c4a8c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: _Must_ reimplement this table when foreign key constraint is supported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/information_memory_table.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"1905096fc33c3b9ee65f1b7d4169593f77e56a024bb660632f271b66d48acee2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Considering store internal metrics in \u0060global_status\u0060 and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/information_memory_table.rs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9a341a31b5efecc6e12f6977e855f3f7deef724149b81eccc2a869fdc1b00de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): use a better way to store complex fields like json type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/flows.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"2199a603ead22bf6c418a748d4622be16245867d575fec471d0fc9d39a2901ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): use \u0060AsyncIterator\u0060 once it\u0027s stable-ish \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/flows.rs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7d7b32d4ddf443548014f111fb7196c575e3ad8dfcea6176b6c66574ff3301d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(niebayes): construct region wal options for benchmark. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/src/bench.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"f202eb7249312557d57c3dd4f608fa423718c30ceeb13b14100758d7de9ad7d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: build a per-chunk schema index if chunk file manifests become large. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/src/data/import_v2/coordinator.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"87a28f4d9dd6fe2cb236a3382560d193232d044eaf58606f6cb4b6f85c29514e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(Taylor-lagrange): add client grpc tracing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/client/src/database.rs"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e9476f2f4d4ce253cd4eb3762db667fd01d288a40a21c65d4426154c1becda7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(hl): support compression methods. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/client/src/client.rs"},"region":{"startLine":518}}}],"partialFingerprints":{"codehealthFindingId/v1":"82e3cfd8c6d05aaad791ff9a3c10be40f0551b181416acd6d8ebea6f3fde1964"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Move logging and tracing options into global options, like the runtime options. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cmd/src/options.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"396b8c954356a62aaf443b41bbac65b55cd2f2b07f6c28cb541d0e746b6b9378"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): add helper function to ease the creation of cache registry\u0026such \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cmd/src/frontend.rs"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dc1aa8c371e7f5d126a8e378b499a376c86b5ff5f7809dd69862399db64b3fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): add helper function to ease the creation of cache registry\u0026such \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cmd/src/flownode.rs"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"d141a51ac6ad252b782b9daf712fe9abd22a467775b2d5bee8b77890d5e1dace"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): considers replacing \u0060tokio::fs::File\u0060 with opendal reader. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/base/src/range_read.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f3f69c5ddc47e540edd6183b6296b1dcca3a22cb521942d5aede3b34e92b35f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): considers to support parse like \u0022\\t\u0022 (not only b\u0027\\t\u0027) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/datasource/src/file_format/csv.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e3bce3e7d15b160936a444fa61f19ffc099011b5f659cabe77e727defd803bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Make the error variant defined automatically. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/error/src/status_code.rs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"387e39c8e7dcb36d50740479fe0d3fbb59394038c00afa3ab821657cf73350e4"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK - these headers are here for shared in gRPC services. For common HTTP headers, \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/error/src/lib.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"54efb2b66251381dcd7d6958af03d159327a691dabf92a060b02630490a2cb77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(dennis): optimize function by it\u0027s features such as monotonicity etc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/function.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"392f54dada6ede5af6a03a60991554a5500fb6629422f7cabd6594a2f6cfad47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): support distinct aggregate functions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/aggrs/aggr_wrapper.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"9adf5e9d6d410f1916eaecb868e975726b9d873ba9c3ea69e69446411b02221b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): mark this function as non-ser/de able \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/aggrs/aggr_wrapper.rs"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"349beb56d6ae885bfb6c3d319bbf6944ab351ef268bd0f5fce0368efc8a66b07"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): udd_merge/hll_merge/geo_path/quantile_aggr tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/aggrs/aggr_wrapper/tests.rs"},"region":{"startLine":1329}}}],"partialFingerprints":{"codehealthFindingId/v1":"b14d592bb0f977d9c5db5d814a7d14ea983e339455c5dab606e91625273b22dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): proper way to extend substrait\u0027s serde ability to allow carry more info for custom udaf with more info \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/aggrs/aggr_wrapper/fix_order.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bc3d7dd4564d389fccdcc7268c1be7a35d63ccfee0e79cd942f745628c885ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: read case-sensitive config \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/scalars/matches.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"87f0a105f4bb68f238ac6bf41a798ac9d43b7a1dd5b8bb6348265a261cd949e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: collect pattern into Vec\u003Cchar\u003E if this tokenizer is bottleneck in the future \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/scalars/matches.rs"},"region":{"startLine":726}}}],"partialFingerprints":{"codehealthFindingId/v1":"10a66e51d0c94472a3128742ec9a34a574b18d6f0740a6a6cf60203bd20d2f1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): memoize the converted arrays to avoid re-casting inside each row evaluation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/scalars/anomaly/iqr.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"68487eda15aa6cba6b1baff169b9e5d60bece5f421e2d42c0eaec5219b4efc26"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Use a more clear type here instead of \u0022Binary\u0022 for Json input, once we have a \u0022Json\u0022 type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/scalars/json/json_to_string.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"99792602960f3df43a7500a1554fbd40314ec9c591dc399a5d057faf46384da6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Use a more clear type here instead of \u0022Binary\u0022 for Json input, once we have a \u0022Json\u0022 type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/scalars/json/json_path_match.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c00aba7d663da2e7411aa17ed1167a2bf54701315d1bfcb183dda82cb58aa08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Use a more clear type here instead of \u0022Binary\u0022 for Json input, once we have a \u0022Json\u0022 type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/scalars/json/json_path_exists.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"26956a1686d5a4bce2393c341ed1a72aebfc3bf9ac173ae598939f21e4a968df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Use a more clear type here instead of \u0022Binary\u0022 for Json input, once we have a \u0022Json\u0022 type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/scalars/json/json_is.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"f11b02370e39904160885e11d9d74d07fdd7aedc57ad8b0050043297db973ea3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: refactor this to StringLikeArrayBuilder from Arrow 57 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/scalars/json/json_get.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"568ef90b3586a1b32986464557b45dc62f432317f632c80965d18a56f87f755c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: For performance-critical applications with repeating patterns, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/scalars/string/regexp_extract.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e99301bdc7244db8594ed90eb0fd31a5a9173933c117de2fed1f852cdd49bd2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): consider simple depend injection if more handlers are needed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/macro/src/admin_fn.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f20b7fb9cd6f1a3d1e8b557f8939c29a754641a18eba037ff18f6a785695227"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): support vector and decimal128. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/macro/src/row/utils.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a1530039a49eb792d62cf833daa5b638b89427279aa32690c6eb126e3fe80b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(weny): Considers updating the default page size dynamically. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/range_stream.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"acf410e96e39fae3630faa282b6a82dee19c8b590d55088e7df6607ec75c3a1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(weny): Considers to add an E2e test. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/range_stream.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca436baa6d757ab0e7412fd3f82d4c2068342510b6d522df9e0859d7df919079"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(weny): we should consider separating TableRouteValue into finer keys. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/lock_key.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccc20c7add2b2e5789270481baf2cfc02e626724350dd5f182ec83270239a597"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zyy17): Allow deprecated fields for backward compatibility. Remove this when the deprecated top-level fields are removed from the proto. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/election.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e8e71397c840e3122d269f78331a28ef1f1f1b3a5e6802cf16908dd8e47c601"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zyy17): The following top-level fields are deprecated. They are kept for backward compatibility and will be removed in a future version. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/election.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"05a10aa8e3b0826e8d2c60fce6d51509c47115910e4882afc9cc0f355665c6aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(hl): remove cluster id in prefix \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/datanode.rs"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e35cf9fb5bf83b57a95c5d9be6c68479805488ef973b45d7921cd0523e1e69b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(hl): remove cluster id in prefix \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/datanode.rs"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bbac8478d4dbfcacd25ef136ea93952f1795b761c2c053053bfcbd970b20a5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jeremy): Other info, like region status, etc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/cluster.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b99d2d492ddaa9f4a5e9a1ab91d07941bdfebefa7f5001c363723856007ceb3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Considers introducing a RegionStatus to indicate the region is dropping. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/ddl/drop_table.rs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"e106e1cfbc679a533ff5948c7320b28d8ebc5d54ecd29504597de80102b2ffd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): support to rollback \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/ddl/drop_flow.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7674d7fe5be85ed6c71b610bcf50a1c1e877941bf83db5a6d342d259ef423c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): due to undefined behavior in flow\u0027s plan in how to transform types in mfp, sometime flow can\u0027t deduce correct schema \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/ddl/create_flow.rs"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d59e7ae30ea3c9d0e129b28179cb508dc38b804962d99ad1510f2b520ff9653"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): Replace this transient flow_options transport with a typed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/ddl/create_flow.rs"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f1cc792bd201ce66e4b96c93b3f724a4a4401b606119cb99b8b50c6835f73f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny, ruihang): We don\u0027t support the partitions. It\u0027s always be 1, now. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/ddl/create_flow/metadata.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"705c73547db542fc6a67b13c23a3961d1fc4b834a638ee93cb75866b5aedc46d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hl): support soft-dropping logical tables. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/ddl/drop_table/metadata.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"a41f9a351943df825c981518b659cb8d3b13c99883df0b61b5d7d7d1d64682ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): maybe update them in one transaction \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/key/table_route.rs"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f4f0b7daa126daaef28f7b5252a3cd97a1d5fc6887bfddefcf95037e460790b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): restore its original visibility after some test utility codes are refined \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/key/table_route.rs"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"23eef24c0b27537597aac5ef7fc7454b1e1d81759489df23734fcebfe5f0406b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(weny): Before we store all region wal options into table metadata or somewhere, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/key/datanode_table.rs"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"43f44c338ef1fa300cda0ddec5e5e8893e862a8d87aac4431d1468904921dfee"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(weny): add unit tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/key/datanode_table.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4b20b60ec868f21ac6b856a7f6d26e823b4041ecab43cf5926d78c271bc61f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): add cache for it since range request does not support cache. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/key/flow/table_flow.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d5fc3ed8619a1d8e1fa9afa3f69d38d6061aebefece20e6675054547d22eb00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(#7987-followup): not yet propagated via the heartbeat wire format in distributed mode."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/key/flow/flow_state.rs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ca876a8369e3e54fedb11af86f158cfb7fcb7c797fb4dfe5e995617cbda95fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(#7987-followup): not yet propagated via the heartbeat wire format in distributed mode."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/key/flow/flow_state.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"2db6bd34e8bb13e4e6d8793856c1f86d29e2428f7b148cbffd1d3d571bff43df"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK - chroot would modify this field \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/kv_backend/txn.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"209ad1fa9ac98d1e8d66658c031b68e4db53bf99c30b51b8c6e7e2c6b646fc0b"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // one-sided range (HACK - b\u0027/\u0027 \u002B 1 = b\u00270\u0027) \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/kv_backend/chroot.rs"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"b37c4e4cc2c2bf953755a6fe41afde65fb2dbc47ba90ac9d8f0798c88db917a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(CookiePie): Waiting for https://github.com/launchbadge/sqlx/pull/3614 and remove this."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/kv_backend/rds/mysql.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"739894ed3e81227d8c41764c4cde28854cf4b50f2797292cacf68f18a98bcdf1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(weny): add tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/reconciliation/utils.rs"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"43dead8b46f892744e93ff72fcc19a7797b17f6c26608d8ae91a2e632efcbdaf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): ensure all columns in region metadata can be found in table info. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/reconciliation/reconcile_logical_tables/reconciliation_start.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"173366d5ad0d9752c19e6c0660d8731e61271c10c6c7a52720cebcce2a189225"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Repairs the table route if needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/reconciliation/reconcile_table/reconciliation_start.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"e88dd03dde0b58d1db6377d5a41818c107515b7949013582f82d261d2cc8364c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): refetch the physical table route if repair is needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/reconciliation/reconcile_table/reconciliation_start.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"320f1930de75946034f12d0c6d95fbd1020a5cb85dc7fd06b1580f7e0823540a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jiachun): \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/rpc/store.rs"},"region":{"startLine":658}}}],"partialFingerprints":{"codehealthFindingId/v1":"e22276f17c7084368cbce249c67cb5db22e6265efaa7906dc01331499ced451b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(dennis): It\u0027s better to add more fine-grained statuses such as \u0060PENDING\u0060 etc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/rpc/router.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe78702a497f70614b76a879382868b37e1cd954e2be67b6120d4cad512b4f80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(CookiePieWw): Replace proto struct with user-defined struct \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/rpc/ddl.rs"},"region":{"startLine":888}}}],"partialFingerprints":{"codehealthFindingId/v1":"00d1f76ebce19f6338526788085b843f73269fdeeba52693b72d3fce33a2ff23"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Use binary search to find the target stat. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/stats/topic.rs"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcefc1620707203eff7fcd08e3e4d73242f2d6ffbc91647dc3542b0ce425df67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): We can optimize this to avoid reading the value. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/procedure/src/store.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"45c7fa503a639338fdfc334ae0f3a4bf643a0ebf980c02deaa2ce130d5cb606d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Shutdown \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/procedure/src/procedure.rs"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0472e78600cd21262d515bbc02339d3fd5bcdff5c3b6a623ce71972cbf0cc86"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Detect recursive locking (and deadlock) if possible. Maybe we could detect \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/procedure/src/local/runner.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"73c4c8309b24f563f79eee305a9cb79b6a1f6051625717b93daaad37f0fcf9f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): 1. Add TTL to the metadata; 2. Only keep state in the procedure store \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/procedure/src/local/runner.rs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c700b567eb549f9e6cbe08386d4a4a587640c0804cccd37d4121e15079b82be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Add files to remove list. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/procedure/src/local/runner.rs"},"region":{"startLine":732}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef2ed99a9088dcd8129633b71f554f69f9d547e64c12f93fe2d5268ba5e66e0c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(dennis): It\u0027s not a good design for an API to do many things. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/query/src/logical_plan.rs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"09e08a2ac81e814d9807f70c1f1f543e716239df5ff510e0690b517985a84b95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Remove the casting here once \u0060Batch\u0060 is no longer used. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/recordbatch/src/recordbatch.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f3e303b78bb08e7874a88b53f52afcb48770b8f56a8a3dc61b011bfc4aac778"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Remove the casting here once \u0060Batch\u0060 is no longer used. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/recordbatch/src/recordbatch.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbe57d958023147c549b49faaa813fc9ec4460217eb79c83e767178dcd7ecdc3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): arrow and arrow2\u0027s schemas have different fields, so \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/recordbatch/src/recordbatch.rs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"30b5c7765eafcd7923360347d564aa7e2387cb33abb234668c46e87bf9aa2c70"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hl): Maybe spawn to a blocking runtime. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/runtime/src/repeated_task.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4cc212f3971e453f1dc3981d0bc1dd4bdec5fe28559d8d6f9bc079e0663104e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(QuenKar): This could need to be optimized \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/sql/src/convert.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"24bf393dea91e9b36effa67bf8f550e65016df89dd1a681f609ee4d1ac840258"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hl): also Date/DateTime \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/sql/src/convert.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfd8cb6402c4e3be7c57fc7971472f4e470f94f77157a5a86c592286a97f6073"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): supports binary string \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/sql/src/convert.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b8cab91963ba1c99b99dd4a226c4e9d31e86c7ea9446951a068b0f0917673fb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(yingwen): remove add/sub intervals later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/time/src/timestamp.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ad11d50822ae6fdc764d27246360982923bf75438ce9c0dee408c04369ab85f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(yingwen): remove add/sub intervals later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/time/src/date.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f35d1eba30bdbc5913cff38f9fcda8fbc5398fc8f67c51f04198c0feeefa926"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(weny): Remove the alias once we release v0.9. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/wal/src/config/kafka/datanode.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"56d2b55f62e95a4e87ac1e24f39203072430552d9be7318cffd65242194cdceb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Remove this line after the 1.0 release. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/store.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd52ede6c11fc6dff16b07d0b67ce2e0bf111830113462662b3095d24e819bcb"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: /// HACK(zhongzc): Direct MitoEngine handle for diagnostics. This couples the \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/region_server.rs"},"region":{"startLine":1053}}}],"partialFingerprints":{"codehealthFindingId/v1":"8941ff6ddf9dfd6ae1a598aa45a01a83665792b9606bdb3c830bcca703df354e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(remote-dyn-filter): Reap this query-scoped placeholder registry on query finish/cancel \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/region_server.rs"},"region":{"startLine":1057}}}],"partialFingerprints":{"codehealthFindingId/v1":"74449266c62d4c98d3589451965e402f13529ce0af1b8430d3a787658feede18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): add metrics and set trace id \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/region_server.rs"},"region":{"startLine":1904}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fee3a6a0070599804e69e979b5ccb78bdf9903a4657fd0764291872e982af0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zyy17): Remove these deprecated fields when the deprecated fields are removed from the proto. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/heartbeat.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ddf4d0335559f4d53a031995e7cd1182d5ce62f4f533d6a4da509e56a2ffc10"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zyy17): Remove these deprecated fields when the deprecated fields are removed from the proto. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/heartbeat.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"d85cb3d4dc8ae283eb8c42e75d45692b7c4b8fcc73940b1008b3b56419ba201b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zyy17): Remove these deprecated fields when the deprecated fields are removed from the proto. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/frontend/src/heartbeat.rs"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"13b7ddb518f4777b2264c52b7b1aad0b1b1429da33364c9e0dd45e3c6ddf6419"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Considering introducing a readonly kv_backend trait. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/datanode.rs"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef50f5b8fdf4f25426df6ce1cd1dd00e22152c20b3b08c2f0015f82e72846103"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Considering introducing a readonly kv_backend trait. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/datanode.rs"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ad22c1e903965f49df8575139abad7cb9376c5c31604ea36858b901109d4244"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement custom storage for file engine \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/datanode.rs"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"98f59d824593dc6c1330cdeee88d5a44da9ffb7a7c948393c07bf87ee1b10758"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): required the replay_timeout. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/heartbeat/handler/upgrade_region.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c71805a8a848f3e92491321c06d8095fe56a4287ada3afb43f39eee054fc23f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): arrow 28.0 implements Clone for all arrays, we could upgrade to it and simplify \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/vectors.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"08aa59f32a409b8aef40e661690efdc89cf35ebe1ba1c01a0291697717ee3621"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Consider removing the \u0060datatype\u0060 field from \u0060ListValue\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/value.rs"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"864af8a10a773b29fd45a0abd84a9a04a450cb0ea16dd06f588d5f507c361ae5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): Implement this type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/value.rs"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f800da8a724b5a74bca77147e2bf2092c905e44f45d736968b22b223d405728"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Consider replace this by VectorRef. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/value.rs"},"region":{"startLine":1587}}}],"partialFingerprints":{"codehealthFindingId/v1":"dde2160b91f5c85fefc06ded43b4d7e68ff7720920b0487ef789a2c82b83e0ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Refactor these \u0060is_xxx()\u0060 methods, such as adding a \u0060properties()\u0060 method \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/data_type.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4148e65cee1874ca3ce4bbc29bc4fafcfb7dc14cad868e7201e101c00f31e15"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): we save the function expression here, maybe use a struct in future. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/schema/constraint.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"45426b29006a9e17791b3459cccb899b095a0d105c65d97aa28dd2e3bf10da29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): we only supports current_timestamp right now, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/schema/constraint.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"92975bbeb8cc620b220e219fcc4f864821056bc7e940b7b5954c0b10ad9b1895"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): we only supports current_timestamp right now, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/schema/constraint.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b1a8020cff4d839db05c24466efb411e1c5b0ddb91d73bb550c83a9f89fe9c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Use NullVector once it supports setting logical type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/schema/column_schema.rs"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"34abd4805d325eebcde54f2242b73bd386cf55bee5ad22e1d13cba3fd77fe239"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): what is the meaning of casting from Value to StructFields? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/types/struct_type.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a30e227d281a4a9956a8350c12ce41e1e9dc0946044141b1a640e0edb54cd80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Can we remove \u0060Into\u003Cserde_json::Value\u003E\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/types/primitive_type.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"709a9aa43b6f06611346f1c46a7a608b72b235d04adc59bce2109835f229c14a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Carry JsonSettings in JsonFormat::Json2 and use with_settings here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/types/json_type.rs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"638bb9722a1047239f3c1e35e232925153ed8fe9e051115ab79155d66f3576e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(QuenKar): Implement casting for interval types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/types/interval_type.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"de679e56400610fe2ffa3c2ef77982693f17a5f1a9b9f03a76a3938407201750"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(QuenKar): Implement casting for duration types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/types/duration_type.rs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"4babba8178c6bb627aebbcd13ac3703cd3a365c4ebfb6319c0f8f7bfbea9e495"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(QuenKar): interval type cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/types/cast.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb8a6b918feada2d4593344b9137b68f3dd931f5a8355c1e5a2220bc8adbfaab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(dennis) describe behaviors in details. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/vectors/operations.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"48cee1a85342ccd62d54ecd69a3a5415ea773ee01669ca6ff3f6592dbd13314f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): impl it when NullVector has other datatype. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/vectors/operations.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f8ff22a36b542312967214241b80a06276ca999544bd9278700220f2cbe249"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Support null vector with other logical types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/vectors/null.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9997c0efec0bae72ab704881357be9047276ce39b064d2f51de17a2f768c703"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Direct use Arrow\u0027s Struct datatype here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/vectors/json/builder.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fe8388c337d80b6ec5bff4ab62a685be2fd088af3b8c31e5fa15f8bfab8192d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(LFC) Supersede \u0060project_to_v2\u0060 to \u0060project_to\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datatypes/src/vectors/json/array.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c44c08ba427896f490995f8028a87a0a3179905669d94e0216b874bf0470896"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zhongzc): Improve the semantics and implementation of this API. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/file-engine/src/engine.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd03f0de57f4df1074d88a4bdbcf1d177f85b5ee579eb587eb8e870d2ded9d7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): get this from upper layer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/file-engine/src/query/file_stream.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2931f4a9a6f34af57e04e0504a6c4a85e4456a1ac7522fbd80218c29b050093"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): fix protobuf import order shenanigans to remove this duplicated define \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/server.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c3ab73a0b208e02b7c592c7095a15169c8089f6297eb079d69ebd3d94fe1310"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): does this query engine need those? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/server.rs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fe18f83956cb34ea058d4871cfedce4f00c1e47e7351d4cfba0aa7f37bc6166"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): add config for this, so cpu\u0026mem usage can be balanced and configured by this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/repr.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"a76d421a69650053abda59277cfdf841fd8bfa58af00fb4b5f62f906941e519c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): use a more efficient representation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/repr.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"86c12b9a53e2477b0b709be5a7ad83ab9f5e62cab88935676e97035926a6d95e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): enable this lint to handle out of bound access \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/lib.rs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"9584802c64e9df0c0fe51355d688d90a2f211925a433bc0d890193f41a342ebf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): consider a better place to update the size report \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/heartbeat.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f2187b80a58cb3e60de9242f526290499016c8cf8f354854fe2e7449032647"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): refactor common types for flow to a separate module \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/engine.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"35b23452f2d4d553b55b6f50ffdc0a8afd6ae0a7c46ab2283b3d95bf50190db5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): use \u0060Analyzer\u0060 to manage rules if more \u0060AnalyzerRule\u0060 is needed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/df_optimizer.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c68b09b30ad99c97804b9e843fb97a8a4444a9935a9c565647a301e6bdd1bb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //! TODO(discord9): write mock test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/adapter/tests.rs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffefaa6de2814683af4e41bb15d0a7bb13b3e8c79408be8438e0500631222222"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): make this configurable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/adapter/flownode_impl.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"d759a9bd3f9b6929b8455267a70176c4d622ca7b5a5e84ba3c691708460efbe3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): also put to centralized logging for flow once it implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/adapter/flownode_impl.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba131fa3d11b5865624344bec8d61a546b5948ad8b102b36e959f995ef23f66c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): also put to centralized logging for flow once it implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/adapter/flownode_impl.rs"},"region":{"startLine":778}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff21d5112dfa2a88823702a534707ae8c722e60e8c646153b2e050a070249679"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): consider sync this with heartbeat(might become necessary in the future) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/adapter/flownode_impl.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"36b111da2663d687ff78c4aaa1d3c3df5a343bb731402f6e6ca8263248feb286"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): also add a \u0060exists\u0060 api using flow metadata manager\u0027s \u0060exists\u0060 method \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/adapter/flownode_impl.rs"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e3627e5e5f24f6445533bb715e73830a94070f9dcf0f803fe93416b424aaa02"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): make as little clone as possible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/adapter/flownode_impl.rs"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1c2fef87a50f9baa93239ac6913d1dd7b1cc03163c9c50e51a49fb4735cc702"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): add \u0060eval_batch\u0060 too \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/time_window.rs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0b5e01f446b095f4ca716140a95814329d0b506beaea834da260eb9c5fa7bad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): handle case where time index column is not present(i.e. DEFAULT constant value) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/time_window.rs"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cff9a06775e9290668c07d0561e9734b637741d0dd5ce563141347d82676749"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): find the expr that do time window \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/time_window.rs"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba5f8a61c569fe8a45079fa429aa4444b075c775a935db91a16c8b0d143c8a9c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): find the expr that do time window \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/time_window.rs"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"14bbfd60df030a12c5a24fc85f3c33c1932f1f549331e649431fe6e88a916adc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): need to ensure the field has the meta key for the time index \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/time_window.rs"},"region":{"startLine":551}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b9507989be9afdadb719aff127ad676dfac1dcd8a12b3f078dc4fe9c8d4dbe8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): special handling \u0060date_bin\u0060 for faster path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/time_window.rs"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce36318a86473079b6b0ad4a57408b14bdd3b137a537a2ef5d53af71650239a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): Full-query runs only need a dirty bool flag. Refactor \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/task.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"24072583b5e1cbd4b5cd228720f157da07120d09aea13f29196b4ec458b427b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): for now no default value is set for auto added column for compatibility reason with streaming mode, but this might change in favor of simpler code? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/table_creator.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fa31953bdb37c42e718e49fe67309d87cba0d3aac50174f9aad8e93ef197a58"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): assert expr \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/table_creator.rs"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"f397f7a48ac370f03d522437b9c7dd4cd760ac66301e226b4e6b34d1ec88eeda"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): make those configurable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/state.rs"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0e1aeb0ceeff1c3390d6fedd5ae240314e2a16de813594c0c870ad928d9e41b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): not merge and prefer to send smaller time windows? how? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/state.rs"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb0f8cb335566017de886b9d6c4b17289fdde04fc81aed239ab9d2b6ddcbb1a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): determine how to configure refresh rate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/engine.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"385d0d206b0faf7bb3d3817d790bffe778d764349f55cff980377924d5af5134"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): use time wheel or what for better \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/engine.rs"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"7338d487035205fba101512ec28244d3ecdc10d5f6e4386c380ccbc54a485650"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): do need to check rest columns is string and is tag column? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/engine.rs"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8a417451b59f5eb96b21080706bbb0c97552a3cd1ec5cfb041591bc1cd9fd72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): find a better way to ensure the data is ready, maybe inform flownode from frontend? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/batching_mode/engine.rs"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"aff37c15d2fde016deb3d07f05e47fbdc9a4709620a499a7c4588d8240a78728"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): add detailed location of column/operator(instead of code) to errors tp help identify related column \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/flow/src/expr/error.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bd261705dc8cdf331581252d6b3d9bb7e3c3288a2e7f01d585e34e5cefd99f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove this when format is supported in datafusion \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/frontend/src/instance.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"94b36a8ceb4fdc40ee23431df4a880eaf0b071e3698ebc61922f6eeae65b04eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove this when format is supported in datafusion \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/session/src/context.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"fad9671bd18473d6db1cb3bfff01ea34d621b5154a9e115b2f885306049051c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): add a hook for admin commands. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/frontend/src/instance.rs"},"region":{"startLine":1612}}}],"partialFingerprints":{"codehealthFindingId/v1":"fee7c3bc45b59f916b12acc707918b0bb2400c7fabe780d4fc8701706e74171c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should also validate source table name here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/frontend/src/instance.rs"},"region":{"startLine":1650}}}],"partialFingerprints":{"codehealthFindingId/v1":"95d8c6861fb948d2d4379f359f41c5fed1f6868442635668354571264ed44a03"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): merge all query execution error kinds \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/frontend/src/error.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb9a2c8b741749441304963e90a0ff8f0d3630cb0efc1bb2bf01e66753ffd27f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): use read_hints to speedup query if possible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/frontend/src/instance/prom_store.rs"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"b294e00fe590010d0d54afeba60aef836c085befd69f8610de32ad09428dccdc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): may consume too much memory, adds flow control \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/frontend/src/instance/prom_store.rs"},"region":{"startLine":642}}}],"partialFingerprints":{"codehealthFindingId/v1":"68647d0c10240a8f8f2403280b154be2bd82c412260ae6349592bbdc76727359"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zyy17): Is it possible or necessary to reuse the existing session context? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/frontend/src/instance/jaeger.rs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"7073b68fbf9d0e9c86ed1ee332f49fdf79b6874e92c3da4ae002671bd3f79a2a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(shuiyisong): add more precise mapping from key to col name \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/frontend/src/instance/jaeger.rs"},"region":{"startLine":699}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e998ae75993e341a2bbfaa4f706a10d07f9b109d7ef8b3b25f811bf9e0b0024"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zhongzc): k-way merge instead of 2-way merge \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/index/src/inverted_index/create/sort/external_sort.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9f3a3742bb82a113365888645513e610e4efa49a4c9dcc5953d9f76039fe81f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zhongzc): optimize the order of applying to make it quicker to return empty. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/index/src/inverted_index/search/index_apply/predicates_apply.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"f108f1ad7b992c82801d0a40bdb952b97332401d77bd47fb408f03158ceeca7f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(ruihang): Do we need negative select? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/log-query/src/log_query.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c5de63d42842b6abc9b96222efa1d45601f5d6202c64c05f17d4fc24c8ff49b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(ruihang): Do we need per-filter context? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/log-query/src/log_query.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba1c58ad39fb268f3bf8a5e4dd9114227784a946571a66a25558bb5a4b66d875"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): throw an error? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/log-store/src/kafka/consumer.rs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"8724ab35a862eed7288de48503c3b7e0e83ad00b82e99081b5c015950c1ebc80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(niebayes): improve the performance of decoding kafka record. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/log-store/src/kafka/util/record.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0f23929306590b19a3c2216f40378f8b6a90a08e9785a4dfa5d46243c053d3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): refactor the record meta. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/log-store/src/kafka/util/record.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"b591b2796544fe3297b6384833df8b05bf165cc4e46d43816feb2aeeb27d6527"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): refactor the record meta. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/log-store/src/kafka/util/record.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"2953024ee4b51c4c33b7e8a2ad92d7f9fe9025cc14924e48f7f3acc654dbd036"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): refactor the record meta. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/log-store/src/kafka/util/record.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d63f6e79d932b53ef1ba315e6717c0acf1cda7356f7a4a0672ed24d69f0385d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Considering merge \u0060PendingRequest\u0060s. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/log-store/src/kafka/worker/flush.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"00e969702d6647d2307ee2de2820120117bf4eb93a35400d5dda74dcf15543b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hl): the retval of purge_expired_files indicates the namespaces need to be compact, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/log-store/src/raft_engine/log_store.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcaeaafdeadfd39496102d5b7aaf1eb8a6367e232c9780a09d85e4f9aff30ac3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zyy17): Allow deprecated fields for backward compatibility. Remove this when the deprecated fields are removed from the proto. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-client/src/client.rs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"63a678c2b691c9ed9700d21665c8e12c702dcd2f0c271df8739c0ee15c3400f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zyy17): It\u0027s for backward compatibility. Remove this when the deprecated fields are removed from the proto. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-client/src/client.rs"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"2de7bc752926b623eed5252ebd8ac1cf6715329535c790ce82a125f0d119470e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zyy17): It\u0027s for backward compatibility. Remove this when the deprecated fields are removed from the proto. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-client/src/client.rs"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"008f10030f142c3ff4e7a8731babf9e84a44af9d461c31a6c94514380f0336b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): the discovery using client side timestamp may be inaccurate, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-client/src/client.rs"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"4de327294d7d58f214b3b251a8cc938822eab060b9fb25021ad5a8ed651c78a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): the heartbeat interval should be received from metasrv \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-client/src/client.rs"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"025db167be3984b8cd1283259a0e726340f7d6134306e625739e5ab9f800e0fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jeremy): Currently, this option only affects the etcd store, but it may \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/metasrv.rs"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b5820c0cece14328e0024e4107db15c1c111a025afea5908b31f09e8b995ede"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): consider failing here instead \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/gc/procedure.rs"},"region":{"startLine":604}}}],"partialFingerprints":{"codehealthFindingId/v1":"068e3a6c4c9b8c43748a890a39accdf3389d4740e989e82eee1b7ae855263eff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): handle need-retry regions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/gc/procedure.rs"},"region":{"startLine":1022}}}],"partialFingerprints":{"codehealthFindingId/v1":"8890cab62f1e1a836e8077523037536527692e204ffabe050e7b3ca0d3a6bfe0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): not expose most config to users for now, until GC scheduler is fully stable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/gc/options.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"f507a509ec8947c355da10f36b93fb7351e4ceff2300236bfa37abecdcd786b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Unifies the multiple leader state between Context and Metasrv. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/handler/on_leader_start_handler.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"904d127fe278475446a0976f6eecf998ec7e0ff26118f875eb7ff72fadfee1fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#7987-followup): start_time_map is not yet propagated through the heartbeat"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/handler/flow_state_handler.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"80533f1eaccc08ea68cd8b5d80d5a1de954a95f61b951e570273bdda2cbcf68f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fys): try use derive_builder macro \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/metasrv/builder.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"54025b0ddbe1accefec871b35b181c51f0191e3a9e1a97a200fd669bf0aa8e4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jeremy): We do not allow configuring the flow selector. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/metasrv/builder.rs"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"9626ac1aaaaa7b6b9dde6db0a3f7f92a01881afaa06e8b4cc45588beaf378cea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Pass the actor when region migration task submission propagates it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/procedure/region_migration/manager.rs"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"db27d1a1ecf271d84658935c14cb62aef237f9914a6e95adbef23d4debcde302"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): handle multiple regions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cbee439d3db8bf64c1c68c1523d43028296fbec5732e2b29b84138fdf6d4f9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): If all metadata have already been updated, skip applying staging regions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/procedure/repartition/group/update_metadata.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"a700b4cd60435db89242ecc5ed2f6caaa55c9c210a2c4a2ed2cae9a27b048ec2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(CookiePie): Similar to [RegionMigrationProcedureTracker], maybe can refactor to a unified framework. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/procedure/wal_prune/manager.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d58935476647357e5a45e58da042f12c4a0982d3c37f6cad54f3a016791e11f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(CookiePie): Can register topics in memory instead of retrieving from the table metadata manager every time. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/procedure/wal_prune/manager.rs"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"59aca0c062f2687bc839144b2dae1eec4b117c4d40712a4e198edd131275e8f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Considers collecting the memtable size in regions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/region/supervisor.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"9082ec0adcbc38648d387cff97490672fe4f4caa75c71fcaf230e1f2142c3889"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: considers storing all active regions in meta\u0027s memory. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/region/lease_keeper.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae7523cf876df114f77f309a2103c023f6cb361178ef7400382a8a600bd5b58f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jiachun): meta node should have a Id \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/service/heartbeat.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"82301afd9f9291f76fcfaeb12696dced555d827dbe1c86adab0e917de80b3590"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Add a record to the system events. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/service/admin/procedure.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"e746bb491754bae54bcb17d9c3409f33086b07d6894f310cf988bee04d1fcdf4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Add a record to the system events. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/service/admin/procedure.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f376b437dc23e980124eaf221762af5bb3bbb7a424779c415755ec6a6706542"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Add a record to the system events. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/service/admin/maintenance.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"92233474c9a121b6b092a51daeaae0686ff7ad94538ce8be71b4c9ac4f01bb57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Add a record to the system events. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/service/admin/maintenance.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"72ddfc2d15a038d6bd39f3679e85661b93c0f07570d77360cc0db2d3ba0ac9a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Remove the legacy version of the maintenance API. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/service/admin/maintenance.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cea4da7123529804b81a7237d95621ffb8e0b692c60790df2e648933fc61437"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Refactors PaginationStream\u0027s output to unary output. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/service/store/cached_kv.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bdfc19206b6fe8635cba6654bb803d9ec2458b8bb55d4bc32440ebc45f0016a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): avoid using \u0060get_all\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/metric-engine/src/metadata_region.rs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9d825a5502e7042ec7320b25fb26d4af98fd10b74bc044ca102ef34f2afcc3c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Consolidate validation and merging to avoid redundant request traversals, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/metric-engine/src/engine/put.rs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"a71bb4e0940bc47b562e353703baee4cde675ae1d4596d06351f86434caa7bc8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: retrieve table name \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/metric-engine/src/engine/put.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"a68b524afb3d5e78ea723b0b43db4be53d9afd3d1f5a5c9e6f7fd1a9a34e021a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: retrieve table name \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/metric-engine/src/engine/put.rs"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"1160b90b03ee9c4074654007cf4df6a4b4f6f33c604e39e75e3cba11683ba104"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): we dont need to pass a mutable new_columns here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/metric-engine/src/engine/create.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb451bb3e08cf8624079afdc48e4ac50a4f06215f30fb03d3432925a4d2f5754"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): avoid clone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/metric-engine/src/engine/alter/extract_new_columns.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ada3c432108ab06a854b3b718540834aca31693aabb15080062f860c9b87780"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): avoid clone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/metric-engine/src/engine/create/extract_new_columns.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe820a6922b4ece17cf472f5cb9f450af80960c01ffa0a0f30ca16a1cc33ad8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): refactor this code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito-codec/src/key_values.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b8f3ec25266b01be16082a9910267d85660c4df9661d8eb14b7409b4f78dcb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): handle the error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito-codec/src/row_converter/sparse.rs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"28d9db67d04a665004194b9c6239e38418143eac2271e02907dd13b978f5f30b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny, yinwen): avoid decoding the whole primary key. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito-codec/src/row_converter/dense.rs"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d648e30f8ed0462dab24c8bed447aef74e713f78561a4bc83796ce3749a9860"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Do we need to stop gracefully? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/worker.rs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"b569d22be76b7603ff8734e14b83d05993a1908cb49bc7ea9fa73118939f9dae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hl): maybe we need to merge those queues for pending requests like pending_ddl, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/worker.rs"},"region":{"startLine":1197}}}],"partialFingerprints":{"codehealthFindingId/v1":"22538ee5a299a39b7cf023a1dac5efefd0f4ae4ffff8edc46728cbaca6edefd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): metrics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/wal.rs"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"53644efbf8f86dd374e68f4c83960080c4d28211cdc495bdc7c692c1796c03d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Add metrics for this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/request.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"25c47bb5ccd8d08dc0d57c61b1c657542bb5ab81a8128e7840392f80bed3ad5f"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack(zhongzc): If we have just become leader (writable), persist any backfilled metadata. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/region.rs"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbc055677781084d404d74cf1c7f0a7e59d47272039568fbc9d5d8c440859556"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): consider instead running in parallel mode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/gc.rs"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c2fe8c2d6b15fe24c1493c11dc36aa749f8c06f6316ff72676851a03564f05e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): is doing one serial listing enough here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/gc.rs"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"013ab38caaf3087ea10db23eef1226571959575469c5985a9e8f6ee2292c686f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): if region is already closed, maybe handle threshold differently? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/gc.rs"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bcabb1f8d8a2696c7115cca1f34b537dd105f0f8340cd249efc52a653dc5db5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): add metrics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/engine.rs"},"region":{"startLine":1391}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2f55633cbe5fbbf335f963aa6ac18106571b2a752208a1440d2d75c67f0210b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#9240): Support per-object-store write buffer sizes for backend-specific tuning."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/config.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"993df5c5517d63cc71c7b66b90e52e06c92ac2bea42dde2111c786d974a0f489"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Remove this mirror if upstream \u0060RowSelector\u0060 implements \u0060Hash\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/cache.rs"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"dace9e80f2c885c4b3d771d2b926758c52d97f8c2f8559056713cb1de99ad26a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): check if it\u0027s ok to reuse the same param with inverted index \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/cache.rs"},"region":{"startLine":1625}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fa39185bf529aeafb9834bf4810d9dbd0abc592378fa71ec98826bc9c051699"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): If we support other non-fs stores without the write cache, then \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/access_layer.rs"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"b933eb535a6b4ae2e95149202808ede38608d6aa9ca7f595322b7034dcf00911"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(QuenKar): maybe find a way to create some object server for testing, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/cache/write_cache.rs"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"92c2f0ccec09466cc6b7c7abf02e3504ebb9bc7ebed75334a86c749742162e39"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Avoid copy as much as possible. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/cache/index.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"01542f86de8dd126032b49c2e0c89d3413065730c729d9eaf8c60144786c4ad5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: With per-region compaction concurrency, the scheduler must wait \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/compaction/window.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"86cc06fd89dfaa95ef35c1fdb56634e9bc93b588776559f6640790560e243de6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hl): TTL tester that checks if get_expired_ssts function works as expected. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/compaction/twcs.rs"},"region":{"startLine":3624}}}],"partialFingerprints":{"codehealthFindingId/v1":"70332478f1b5e943b739c2167381b1bc13adf35cc4c7039b290a1d18183119b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Use schema-aware PK bounds before relaxing this fallback. Appending \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/compaction/overlap.rs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8cf4a9dfd494bb0dcaf58a1e0f76a797eea779252a9742901f18b0b06408477"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Instead of \u0022primitive only\u0022, consider retaining stable compound types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/compaction/json2.rs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c7e959006e02aa507593e58b973a50565c424cfcb9ebe28ebe63d21250b64bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We might leak files if we fail to update manifest. We can add a cleanup task to remove them later. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/compaction/compactor.rs"},"region":{"startLine":795}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ccca5bac017a78dbefaa6e7a6688d3bf422cbfa192faf4dd17194f4f1903841"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): add staging mode support if needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/manifest/manager.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ee82624d7a081bd439418c5dea200154dc5129a47ad0caa35c9130a9cf4dd1a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): open the staging manifest if exists. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/manifest/manager.rs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"8abed0d1f78f59f62b980f299dde36ab0f5495c77c70084011daaf4ce0a27d91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): consider also check object store to clear removed files that are already deleted? How costly it is? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/manifest/checkpointer.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"0414f55081b9d4e7b8154902b2e365b559e4457ba3e34d543b3799f426f4a722"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Make it configurable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/manifest/storage/delta.rs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"98901ab388c3a180ef0f9aa6f55acd8ad92b83a4064dc2f4787ab4d1457849f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hl): this maybe inaccurate since for-iteration may return early. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/memtable/time_series.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"8533b7e1051ed4c32e12396895aba1187512fdc6f4098a5dbb5e068242b6aee6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hl): maybe yield more than one time series to amortize range overhead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/memtable/time_series.rs"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"214e9fe98ec7245121d5355f23ecc78b000f57cd130b84f458bf580e62cb132f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hl): We should keep track of min/max timestamps for each values and avoid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/memtable/time_series.rs"},"region":{"startLine":891}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a99264fb79c424a96a97db22fbe1d4b177d6c68ea7da848595e38adc439c690"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Filter ranges by sequence. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/memtable/bulk.rs"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef76f97551f1de3e8ada3a057b77f5d5755a828220aaa1f3469b52d7d3863672"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Pass the encoded part\u0027s concrete schema into this builder. It \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/memtable/bulk/row_group_reader.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"54027b3a93e3625c392312df8addf09b35f80a127034d17bdb59b4540aacd0f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fys): Nested projection pushdown to the memtable layer is not supported yet. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/memtable/bulk/part_reader.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb6a629f1c683e2effa897a895396557de8a54dbf023fec184a1b40fc4425660"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Returns error if it is impure default after we support filling \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/memtable/bulk/part.rs"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"74d0cc1cc9e4dc28b2dc6026afd8ba9719578039ef64b76b11255d7e5130c3d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): max_sequence \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/memtable/bulk/part.rs"},"region":{"startLine":1277}}}],"partialFingerprints":{"codehealthFindingId/v1":"d92ceb236935e432e293d0a035c281de630bf4bb73136b93f49b2e39d003d9f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Skip arrow schema if needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/memtable/bulk/part.rs"},"region":{"startLine":1326}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3ac469646e154a22b157bd39079644e3e5bdf8ea2ddae78413fb144da6ecfd4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Do we need compression? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/memtable/bulk/part.rs"},"region":{"startLine":1331}}}],"partialFingerprints":{"codehealthFindingId/v1":"4289d277f0716ecdc76b753889ec55af9da775b810755da613295b64dd2b5c72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Implement all the \u0022TreeRender\u0022 display format. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/read/seq_scan.rs"},"region":{"startLine":608}}}],"partialFingerprints":{"codehealthFindingId/v1":"708c5da6d007780fdcceefc3fd66409c68fb0e3382b036f45676aed7ef601fa3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Support different flat schema options. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/read/flat_projection.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"26fea02d0bf8da6d08bcab2b8c9c2cf33e746ef3e416df85a2696757dc1f431c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(yingwen): Remove this after upgrading to arrow \u003E= 58.1.0, which handles \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/read/flat_merge.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"0732c705943a2257e57656e1c6855fce01dc0726c5f19835e809d4158d150859"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Further downcast and store arrays in this struct. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/read/flat_merge.rs"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2de4312de97a9b5773357d68fc97330222a77e6d49b493cd9393e5f7e504c9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): We only compares timestamp arrays, we can modify this function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/read/flat_dedup.rs"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fb1f38da33b8f590f771a702d1898f015cfcb0c4e80f8b978a07821605a9366"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Reduce the number of arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/region/opener.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d824c59ccda312f0a4fd58afdcdee105c756b3b61d427b191611956d4de62d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): We need to update \u0060flushed_entry_id\u0060 in the region manifest \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/region/opener.rs"},"region":{"startLine":1019}}}],"partialFingerprints":{"codehealthFindingId/v1":"c983fb547dacebe0ebda293f03d33be97ee19b5620a99bdf261a4d21dfbab6d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Deduplicate update-mode rows before series indexes are used by queries. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/series_index/builder.rs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0073b425ffd34ae2de4b017fddaa034a58520064af602228c07c82c0efb45e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(SNC123): optimize index batch \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index.rs"},"region":{"startLine":835}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bd90f742270c443c4f509eac5ce4e0485a201e4be7065aa8de8209b4db96a08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): use no hash hasher since table id is sequential. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/file_ref.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1480ed4e02873c5284f8fdc881f83ba26d10a5fb71feea2015653703b79eb8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Consider refactor InstrumentedStore to use async in trait instead of AsyncRead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/store.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"91069660470c577c6a3b562261472ec836be8a75d24eb4526a1b94a8e2f4d5df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: decide whether to merge across small gaps based on object store latency, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/store.rs"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"45846448f6fedcd0e216eeba22c8cbe0211daf688899309286ea3c8d60eb1b8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(hl): we can keep this warning once we find a way to filter self in list result. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/intermediate.rs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"07e7783999f23816d30a21047677c597dca4c9108b8b5cb2f8c200e351408696"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(zhongzc): duplicate with \u0060mito2::sst::index::inverted_index::creator::InvertedIndexCreator\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/creator.rs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"e119e8eb42541fb5199571be6cb267f5b0ab18610f6a3766bd3dab7499c81d92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(zhongzc): duplicate with \u0060mito2::sst::index::inverted_index::creator::InvertedIndexCreator\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/creator.rs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"59d1e3eed692f52c73de95cca616ef6fd3add9c416e9a39e7c116245fd19fcd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(zhongzc): duplicate with \u0060mito2::sst::index::inverted_index::creator::InvertedIndexCreator\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/creator.rs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba4e37d78e37ea2e7956a15fb67053ca806cf831ddc7f1e1ffdc4f37ff67acd0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(zhongzc): duplicate with \u0060mito2::sst::index::inverted_index::creator::InvertedIndexCreator\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/creator.rs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"566ad221f67e0fc0813f899ed410b830b146b9982f3692db0f7f25bdcab83ae7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(zhongzc): duplicate with \u0060mito2::sst::index::inverted_index::creator::InvertedIndexCreator\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/creator.rs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e843cf3fad7de89dbf6236388aed8c2665ce631df6f5b577a33e874e7e3c89d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): use the same util with the code in creator \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/applier.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dbc229d887c187efea201573916ac88dc3b076c1b4057b91b64701121788c61"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): extract this and the one under inverted_index into a common util mod. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/bloom_filter/applier/builder.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cb928e74df9f0fcb525596ebcabfe30000da5980aa0a3ce70e6ae7fb62de0cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Use Utf8View later if possible. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/fulltext_index/creator.rs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a5d64852891d2d7b0c267471138f2c4f21ae8d730f0b554bd235290f2d3c469"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zhongzc): config bitmap type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/inverted_index/creator.rs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"a45bc39051d4ffd21a49ddb35688b5a247bb247cac7cb5af7736ba195222a28c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zhongzc): support more expressions, e.g. IsNull, IsNotNull, ... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/inverted_index/applier/builder.rs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"e70773a8a19dcff4389eb3b7e45966186b829879f0e7b9e265b9cbf7919b9e4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Find and set proper column encoding for internal columns: op type and tsid. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/parquet/writer.rs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0c185847f50858cf11eb022b20b5aba30359d923b9918b7ae0c7bc021b2a374"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Impl it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/parquet/stats.rs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"50032c8e7c1f83cd2fb56f4dc469fd3d200efaabaea5a942fc6d93a2bd836c73"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Impl it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/parquet/stats.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca865579c455f3621bc845f64223c4506c9f24c2ea89344b5014ddef68a0c848"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Impl it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/table/src/predicate/stats.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"c73db002dbe001d2ef8ec608519ecd0959e10442ab7f7302b656f5a3a17c8bf2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Impl it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/table/src/predicate/stats.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"75721dfcb83c789a559cce3eda3fb20428570880071df388e0d2ed3c7091056a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(zhongzc): Devise a mechanism to enforce the non-use of indices \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/parquet/reader.rs"},"region":{"startLine":1029}}}],"partialFingerprints":{"codehealthFindingId/v1":"6beb608f18a960fd831cd1f0eb66663eb0298d3f4510ab6d2101fba839cf595a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): extend more expressions if necessary. For example, allow some cheap scalar functions (e.g. \u0060lower\u0060, \u0060length\u0060, date truncations) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/parquet/reader.rs"},"region":{"startLine":2184}}}],"partialFingerprints":{"codehealthFindingId/v1":"88dda536fa5051e576d709696798fb61fb510e2511b33ed5bbee116ada94c41e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fys): Build a variant path index if fallback lookup becomes hot. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/parquet/read_columns.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee11a7cb340529f433d603d8842405d79b33bb2bccd7ace46f1f4d8e86538102"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fys): Recognize JSON2 variant type from Arrow extension metadata \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/parquet/read_columns.rs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e7cffe4a504f7325ab7d8ff410e6e0f1053f1fc92b8a74cab49e9704ab148b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Add an option to skip reading internal columns if the region is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/parquet/flat_format.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"93d1522004815745d4fccf15291c1d02c03e037d8287e14319ccc5d69f6bea53"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): consider adding some metrics for this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/worker/handle_write.rs"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f9e4492804d7d0c67d7bda16e6f2504ef2b0f89910331cb05ad8e96e32a54b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): This is a naive way to check if is contained, we should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/worker/handle_truncate.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"57e6e4388de29114d1f9e489ac5bd1def12eff7ab436f1e7930170a24de0aa64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): Evaluate removing files instantly rather than waiting for the GC period. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/worker/handle_drop.rs"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"6028df5f403a6c43c2cc4615c509811300a774e2784a8abfa439c1ab01579507"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): place the marker in a separate dir \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/worker/handle_drop.rs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0dc4c552afc5b3b8c715be7990b5c8971a5a9a5ebc6119445b39fae63ea8bab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): ensure the target region is empty. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/worker/handle_copy_region.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"840cb12e7b6eb09ec26e6662a5931f29ef5e0531bf25f8efe9d7876b75486d45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Optional new options and sst format. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/worker/handle_alter.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0c9eecf90fcbf03b3042a5af129b5cde64e0e89a5b8f1c3cd57552f32751ce2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(shuiyisong): add dynamic path label trim for opendal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/object-store/src/layers.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa9d5895450c62ca83c84b4a8ae088205fb11e0d509466b1ff78491c953c395c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fengjiachun): Clean up temporary files left behind after a process crash. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/object-store/src/layers/hdfs.rs"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"f47fbe71e67c3552899f6f74fb476e99c0320d0ffd09c82abc656dd570e990da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(hl): maybe also support parameters in region compaction. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/operator/src/request.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7b3e7de64a55aaad98376185871bed280ef271856e4aba8d9c8fbe38bab502a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): determine if a addition clone is worth it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/operator/src/insert.rs"},"region":{"startLine":847}}}],"partialFingerprints":{"codehealthFindingId/v1":"15e6b8fb4b20c46edbe22428a4a81a94dfc74c7b4d025d2dd6517d83149e4bbc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): need to split requests to multiple flownodes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/operator/src/insert.rs"},"region":{"startLine":2072}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce6171ee0d88af148d301f6f1dca8090d02a93d516a40c99221c6e7c3ba4e266"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): refactor this function to use \u0060try_as_column_def\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/operator/src/expr_helper.rs"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1f823baad70b7a2baa182888ce34b1ca51e7a9c528decf70ea5ccf07988a6c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Fill record batch impure default values. Note that we should override \u0060raw_flight_data\u0060 if we have to fill defaults. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/operator/src/bulk_insert.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"447e7e67c2095609e58da17e72d05db1d9dbc67629f4526f77871186143a10d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Support Bulk insert request. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/operator/src/req_convert/insert/fill_impure_default.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"268e76165ba536d98b934553ecc202d2127c158c79e9b60e7b5c6c4a243532c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(entity-graph): promote this to a real configuration option. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/operator/src/statement/semantic_graph.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"65ea86157f75f661d0414ba048a928ee970ba2a667504b73534404839d41d1fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): project physical partition exprs to logical partition column \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/operator/src/statement/ddl.rs"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"21dcce2ae299254f5947f68430a6ce754e147fbe52ac6653bb9ea468aa590a7e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): do some verification \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/operator/src/statement/ddl.rs"},"region":{"startLine":811}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f89a0f7bcffd5ee65179d2ac09481dae38db996630261c8d021956308e876ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): we don\u0027t save the optimized plan yet, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/operator/src/statement/ddl.rs"},"region":{"startLine":1136}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dfe6578b220ca40b87efbd136c4e364d63a675073ac6b1b017c7ca5675dd007"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): validate the logical plan \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/operator/src/statement/ddl.rs"},"region":{"startLine":1156}}}],"partialFingerprints":{"codehealthFindingId/v1":"4192e31330c1fcea7ee08f173401990a88c5bd117ebd90c8b7f767f4608b5ac2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hl): make this configurable through options. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/operator/src/statement/copy_table_from.rs"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"be862ed832c9a5cf95cc5ebcb72fc954279a9ca4376a1c77ea44ec41f76af778"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(niebayes): construct region wal options for test. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/operator/src/test_util/partition_manager.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b578be5f3906feb4c4fe0451e7547a83d7c67e43438c79e9ef061b2e4e8fa74"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): merge atomic exprs to improve checker\u0027s performance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/partition/src/checker.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3fe4aa9899f906daf716eb6a241ba1524fc6e2f409f4882b788d92a5fdec4b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(qtang): Needs to be defined with better semantics \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pipeline/src/etl/value.rs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"371a47ec7e63484f93592ce38c81c13561931401e26bfe45bb476d248f0d2069"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Default to JSON2 for auto-created tables. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pipeline/src/etl/transform/transformer/greptime.rs"},"region":{"startLine":786}}}],"partialFingerprints":{"codehealthFindingId/v1":"1df29027f9cef8f2d51af52b4abe1f64d2acc5dc72aace3090f5413612a26760"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(Taylor-lagrange): Supports timestamps of different precisions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/promql/src/extension_plan/scalar_calculate.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"b86f4a599192adaa78e99383222ddde59af8bcc65343e957054cdeec72e5335b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(Taylor-lagrange): missing tablename in pb \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/promql/src/extension_plan/scalar_calculate.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"01f9e6d9434d2992ef7cfdd023aceca898acfaf717a980f6158fffde25fce66f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): support this column statistics \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/promql/src/extension_plan/scalar_calculate.rs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"323e9199614b4585d8285050283d7c698860c108b0b8a0b5f2f21005710fbba4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): support this column statistics \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/promql/src/extension_plan/range_manipulate.rs"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e173ea554ef69bc9eefb6e1e3d9a26ec9530275a4e40f6c7be1b1f2830cdec9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): support this column statistics \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/promql/src/extension_plan/instant_manipulate.rs"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad1a8b82213f2fbb22420a3f2d7cf0597a2b6fe292f8713e406f7802bf78dafe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Try to get rid of the Arrow array to vector conversion here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/promql/src/extension_plan/histogram_fold.rs"},"region":{"startLine":883}}}],"partialFingerprints":{"codehealthFindingId/v1":"74288d6e6ee988cf46c45b63023c311aa7b98865fbc06145f5d415b5bd20e97b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zhongzc): ignore \u0060input_fields\u0060, \u0060snapshot_id\u0060, \u0060sequence_number\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/puffin/src/file_format/writer.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"e567c27253b1caa3def6e568d0fd4079ce5006dfddec35333a76341b36f97458"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: ///  TODO(discord9): fix item 4, but since only use \u0060PartSort\u0060 as input, this might not be a problem \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/window_sort.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec3ab7d3f8792938b9ff782444650a80a5980d44fd7528fb57f162f3180c618f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zhongzc): a temporary solution, we should use \u0060can_cast_to\u0060 once it\u0027s ready. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/sql.rs"},"region":{"startLine":1459}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee832f805874b1d0d7aff85d4321c77922a453883f9fda0c12ea998f19674929"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Remove this when Datafusion supports **both** the syntax and implementation of \u0022explain with format\u0022. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/planner.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"34d1b4e723c82d300de576a2641498e927f7d50162e22b4a0832dda75e427195"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(LFC): Remove this workaround after upstream supports dot identifiers after subscripts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/planner.rs"},"region":{"startLine":663}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c46af8d54cf9b4d4db14f656bf8710b4be67067696f5f84b96299f7dedf9cb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): remove this once we catch the bug \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/datafusion.rs"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cbc62a057d0fd698b3812e87a4ed8a963837b357acccba6701e7f486f54420a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): \u0060self.create_physical_plan()\u0060 already optimize the plan, check \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/datafusion.rs"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"675a5405b80277a9e17448f7981388c97843221ccabc14fb61fb3a901712b742"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Use the input schema once DataFusion passes it to ExprPlanner::plan_*(). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/datafusion/json_expr_planner.rs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd433877e3650ab63478020b6813b11a9870d5566ff6634cd20fabad61c804c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): support plans involve multiple relations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/predicate_extractor.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fee9fd1a9dd81cf3aef301af880a922e68c3dd36a40a126041db114eb88fcfa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): generate different execution plans for different variant merge operation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/planner.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"402734146ec5b228b52fefb54405d6d530914f53d39c1314051f59568b6098be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): Maybe the following two cases should not be valid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/planner.rs"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"e544013c39e3e816feb881b0be18ae629fe99ab0ad8f969e90e4a0391b1ecee1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): remove duplication \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/commutativity.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ed3a9efc3475eb4f82bf7bbf92a2d960650a9496fbb6a8e493c78b34cc982e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): Change this to Commutative once Like is supported in substrait \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/commutativity.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9d55e04f7e3c3b50a319c76d1795cec777975ba304abc65b73d30bda6159017"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): This is a temporary solution(that works), a better description of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/commutativity.rs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdc7b712bb880c0e92b617d511c621e4351def2fa7b084c0615a4031882113ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Preserve datanode PromQL annotations through plan decoding, return them in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/commutativity.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"323939b789f8261c35962d8693cf841e20406af2aea8cc0f97c4b9cd9d164c86"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(yingwen): Remove the \u0060Limit\u0060 plan once we update DataFusion. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/analyzer.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdc538891f7f5daaa79ff727b53f2a57ad77bd74260154e82a8ada0ca543d4ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): a simpler solution to track column requirements for merge scan \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/analyzer.rs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"72d202f86e020a6445c63741f357d413122d139e69647630867262d798838e99"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): a simpler solution to track column requirements for merge scan \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/analyzer.rs"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"0368605f3180d0ebc3a28c0737c98bfb9fbb7f7a75d9037b8656dcdbea5fc5e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): change \u0060on_node\u0060 to \u0060node\u0060 once alias tracking is supported for merge scan \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/analyzer.rs"},"region":{"startLine":786}}}],"partialFingerprints":{"codehealthFindingId/v1":"6562b9102a336a0aacdd972c36ccae76f834af437c8723269b7900ab124c6c79"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): does this work for nodes with multiple children?; \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/analyzer.rs"},"region":{"startLine":1030}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac70c0cbe7cc585d64f116bec5c8fca3056c4c53cd09c48da252a606f9940773"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(LFC): Maybe use DataFusion\u0027s \u0060OptimizerContext\u0060 again \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/analyzer/utils.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"b42587fe1a7ab46c554ff6edc5a5e9e20075727c95884b47b5650fa341e21f4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): also support merge scan node \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/analyzer/utils.rs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"edf03b454277369e50ad0fb6055813711e646cfca2306f4d88ed4aefec0df1ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): maybe just make this case unsupported for now? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/analyzer/utils.rs"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"25c21253baba26f31a53d118529d6e8ded95b853348b151823998ffe0dfe6ff7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME(discord9): alias to same name with col req makes it ambiguous \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/analyzer/test.rs"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"e26b677a7a6ff3cd1b24e1c5e0c931183944505bba9cab2815510bf3736744a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): it is possible to expand \u0060Sort\u0060 and \u0060Limit\u0060 in the same step, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/analyzer/test.rs"},"region":{"startLine":800}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f240061ce2a25abc1f919295b7d7836d5eef0e4d1f77d1571e8d1d2f7172135"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support multiple expr in windowed sort \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/optimizer/windowed_sort.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"f70c1e00c54cb4b8cddf3848cc37280283426c45da08787a008bfa7a885c9d76"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060json_types\u0060 is keyed only by unqualified column name. In joins with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/optimizer/json_type_concretize.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"761953c3ae41e09e95d7f413bd6108beaba8d2c45d811f11729976b58337c973"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): avoid join if left and right are the same table \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner.rs"},"region":{"startLine":1193}}}],"partialFingerprints":{"codehealthFindingId/v1":"d85e851edbc7de9d0d5982fae0c4fb3ae42013e517fdd9840c8eb69a98774409"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): convert via Timestamp datatypes to support different time units \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner.rs"},"region":{"startLine":1970}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a97acb484d50028dde270d37ea223de3eace8ed5509dafc98eeb72f2d14675a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): convert via Timestamp datatypes to support different time units \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner.rs"},"region":{"startLine":1992}}}],"partialFingerprints":{"codehealthFindingId/v1":"9784b218196316c1dcd6f6cc815b96c42694a659604990ae7c17a748154ad80a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): support other metric match ops \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner.rs"},"region":{"startLine":2221}}}],"partialFingerprints":{"codehealthFindingId/v1":"b59bcbc794252b2a78e1018c2384e871febc4ba6a8a94731f4e1fe3ff72e5b43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): ignore \u0060MetricNameLabel\u0060 (\u0060__name__\u0060) matcher \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner.rs"},"region":{"startLine":2523}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cca7d17f3491ae2147f99bf1b03456c2d92f41cb0261db6f1feaca61a13fc44"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): a more programmatic way to handle this in datafusion \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner.rs"},"region":{"startLine":2574}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc8056824cecabb0ad0248ec74c6aac93c6f25f9b6639124be0aafdf364d18b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): insert column expr \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner.rs"},"region":{"startLine":3111}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf47fc3a5cb06a5a95756783ed715a5b66e7f10bdf8264abdd10a45cc7134ddf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): check function args list \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner.rs"},"region":{"startLine":3286}}}],"partialFingerprints":{"codehealthFindingId/v1":"379831edde57390a7db271b8e5dc0fe11e121e5f27e471a0ab83ccdd8943b7eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): set this according to in-param list \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner.rs"},"region":{"startLine":3307}}}],"partialFingerprints":{"codehealthFindingId/v1":"20bd77ba5c2849775510161d8e74e016172d6c4ea249fe14dc0ebd64b22c70e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): how to support multi-value aliasing? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner.rs"},"region":{"startLine":6238}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b8ddcc089e694cbdb6431bf90b7dd9deb475686e8b323046f0d7645b96eba2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): maybe merge with Udf later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner.rs"},"region":{"startLine":6291}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3b8a46d9a0b0f7876dfdfd8b4b7708820dbf9b495c7e69590a337e854633b0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): add range fn tests once exprs are ready. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner/test.rs"},"region":{"startLine":3953}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ad1c48244c573095ccf4f5f34fbdeecf854601e4b3cc619daaa3cf8c0bf9824"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): change function name \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner/set_operator.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"c03a133958c7dd7528e74d1454ee667982f6d8829e63b6caac8ad560cec72e6c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(ruihang): support multi fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/promql/planner/function_plans.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0888b9e4f47292f83bf71319f69f3d97e720017b82780722d0cfbb15bc2a31b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(hl): This serves as a workaround for https://github.com/GreptimeTeam/greptimedb/issues/5659"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/query_engine/state.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c646c54a475a5604ffd69bdcc8f385027b1bec826aff9d09278a9f55e488657"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(shuiyisong): remove one method after #559 is done"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/query_engine/options.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"637e19272960269a69d50047f550f5c10eec6f50a99cf2a48998e818bfa67b9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): missing \u0060session_state\u0060 to decode the logical plan in \u0060MergeScanLogicalPlan\u0060, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/query_engine/default_serializer.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae735b8077416b9d517c364ae9d98f566369d6959cc50b7334b4c38d16f6b547"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): add default null treatment? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/range_select/plan.rs"},"region":{"startLine":666}}}],"partialFingerprints":{"codehealthFindingId/v1":"70df8964ff0d798ae8f6edde38619559e909e9833b65e1c331977cda28aa863a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(SSebo): Implement the following 2 TSL mode described in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/tls.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d0ee6e343aec0cd38badfeb8e20ade0e697cf510772ed336216419be631482c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(SSebo): with_client_cert_verifier if TlsMode is Required. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/tls.rs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cb1c53153d038de8fd0b89ff2cecddc62c5655e558c489400252e55a1b204de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add native-histogram encoding when Prometheus Remote Read support is prioritized. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/prom_store.rs"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bcf140ead6d2a3e9f0b7f50c5dd9aef38f1f479cc21a8d4d37930f4cb4afa53"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fys): This is a temporary workaround, it will be improved later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc7a6eb9ee06371d9b2e67ed9b0c180b5e67edd55fd1146fabb127d46939dab1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(yingwen): Support keepalive. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http.rs"},"region":{"startLine":1654}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b72dab208275b741d2d90dd2207e756c949dd484e4dd731dc8db269dc8dd107"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(hl): should be bounded. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/batcher/logical_table/region_write.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf9d059f8b51585c8f652a76a63df4ba78d27b7dee8f61ae6c65c88fc35c49b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): process other cases? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/prometheus.rs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb673586fe71e939c3a59b2cddd66d40bea4d84f99f360afaee250fc14642dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Persist and return Prometheus help text and OTLP metric descriptions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/prometheus.rs"},"region":{"startLine":2215}}}],"partialFingerprints":{"codehealthFindingId/v1":"3afd8fcece982a1f7b0206d5f7bda9f08794a8115e35b23ddd4831e7b31c362b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: find a better value for step \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/prometheus.rs"},"region":{"startLine":2402}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d1bcf42a241c0fdc1ed96db10ae91eb7f59dccb41b3041360ed97ddcb0c5a62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jeremy): currently, only InfluxDB result format is supported, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/handler.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"86a6056b4cd07b764741a567dddde7e4ef94147fd0a9e4a8714e16570fc538af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jeremy): currently, only InfluxDB result format is supported, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/handler.rs"},"region":{"startLine":800}}}],"partialFingerprints":{"codehealthFindingId/v1":"d35cdf4349282a83e24b2634502173747a59cb6702eefb6e10982a9b20ff16c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sunng87): this api response structure cannot represent error well. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/handler.rs"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"5af6ece8b29c96bdbff99b55ee9c0983978faec464dfef2afcf01a154fee5f5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sunng87): this api response structure cannot represent error well. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/result/influxdb_result_v1.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"4131f51f7cc8b3fb81091ecfba8bed5f5cecbc33d0da5d9a31cc53b33e6ca058"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sunng87): streaming response \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/handler.rs"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"8988ccdad48d994fb0ff6211933eaccfbb80e78e2566542b8901427d5ff69097"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sunng87): streaming response \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/result/influxdb_result_v1.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ff698ef2020e2f04f1fffd96f0cb4e3ecb211942eec47c2b0091ed97fadf00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): support alias from http params or parse from query.query \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/handler.rs"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8bfc53dfd9826e430aec045fad2fd7979c42eeae2f147a49622a22d46dfa3e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): move this out of auth module \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/authorize.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"1332ae40c3b44fe97027ad1b41dd747b43d25b99012f2bb86b20b25baa3aa9a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): wish there is a better way to do this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/result/prometheus_resp.rs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"96fbdd397608bf84d4b30ba978a08c743b5a3ae7b80c6d06c70c92e0e5843acd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): Not supported yet \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/result/prometheus_resp.rs"},"region":{"startLine":649}}}],"partialFingerprints":{"codehealthFindingId/v1":"22b0317c8cab8b793e4bfb225d5d1f7d8a7e2d9fad4c3334f7f6c3997c1a72f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Currently \u0022table\u0022 and \u0022colflags\u0022 are not relevant in MySQL server \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/mysql/writer.rs"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"7388fb6405da2b294f52a9f86a62151e16d03eff6a4b7baed74a9dba1a27d120"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(LFC): Write this error to client as well, in MySQL text protocol. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/mysql/server.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"f399b9cf22b2c33bb19efc9c60ab3d6dd5620a5afadb9fe7c626a150a6f179b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sunng87): allow different type of values \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/otlp/metrics.rs"},"region":{"startLine":965}}}],"partialFingerprints":{"codehealthFindingId/v1":"f595395b7808f2be5f79e8f35bb06156fae34926ad3b35e1afe99850ec210804"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(shuiyisong): check \u0060__type__\u0060 and \u0060__unit__\u0060 tags in prometheus \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/otlp/metrics.rs"},"region":{"startLine":1093}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9086e73cc53373e6ae3e33fd9c37ccec9262fe62780775c9424ed89a4565ee0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yuanbohan): List in the future \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/otlp/trace/span.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"be6e5be516cd10df6ada89eabd0bf2b0d108e9d8c3a1113f9dadf506fde6ae8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yuanbohan): List in the future \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/otlp/trace/span.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"7651048d0f59e56b42d4fa71e33ab495ec466dd93cdada9e298c1f6454922c73"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yuanbohan): Map in the future \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/otlp/trace/span.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bf1c141842e5061bafd2c84bde58ec67439725c4dcf528dc401afbd2b10d9d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yuanbohan): Map in the future \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/otlp/trace/span.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e92fca8d055328d4cc6a80a574907d89a17f8947ca5df3a2bcb84656e07cf8d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(hl): also check if schema matches when rbac is ready. https://github.com/GreptimeTeam/greptimedb/pull/3988/files#r1608687652"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/session/src/table_name.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9d8737ada3d425008f42ddd452e9f6113e62d0023b27a4f96c3895eafb756e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): supports binary \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sql/src/statements.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"310f9c0e2a370a7cd8d691728ddc4da4673725af1947d73c4e04c04835587271"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fys): infer it later from type hints. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sql/src/statements.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"a43f9aee6da44e8f2303b9c8d2c1a73cd886d939e74a5670372305f6988ee8c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// todo(hl) support \u0060show settings\u0060/\u0060show create\u0060/\u0060show users\u0060 etc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sql/src/parsers/show_parser.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b1d6ff3f4ab5a04cb5898410c32ec62342de220b8c0b3cdc779bf0edb4053ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): Respect the DDL options (e.g., WAIT and TIMEOUT) after the ALTER TABLE statement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sql/src/parsers/alter_parser.rs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d48ca92c1ba5835ece6a6682207a92ff80cfd2b8bac4085d63c4ff145116b6a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dennis): supports try_cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sql/src/statements/transform/type_alias.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a9138ec874d89df00bc0bbd0f1b88f3d31bdb16f19d9f048e8a8a0917230549"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(weny): rename it to \u0060RegionRoleState\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/store-api/src/region_engine.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fa315d858db073de0297655a7dbc7d6fcce85fed7bd2e38f745d11e1ef41294"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(weny): remove this two fields and use single instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/store-api/src/region_engine.rs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"edfae748b67a0565a17473169ef36d20487b849aa20ed2ea040cd46d404be0ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): change to \u0060RemovedFile\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/store-api/src/storage/file.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e2c7523d592106817f59152719ae22ad97cea3cfa19aeaab39c92858e4750ec"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME(discord9): workaround for serde issue: https://github.com/serde-rs/json/issues/1254"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/store-api/src/storage/descriptors.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"e083acdb5d6f473d756e51f2d3704e55d332d2f79dd339a7622fcb5737c7671e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(discord9): add the entire partition exprs rules here later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/table/src/table.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"eee2595c97446b61eff5bcb9461c237bfde8f013a259987c5216e32b23eb2c43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): histogram of values \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/table/src/stats.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ea1df8a22ab395e138a5cf8395f972b5f671100226a347c845fe3ca8bdf5bb7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hl): \u0060execution_props\u0060 provides variables required by evaluation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/table/src/predicate.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"96b71a7b86247c0b20f072f4875e7f9616500cf9a5b8e9c511da8dd6e4dccfa7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hl): maybe we should raise an error here since cannot parse \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/table/src/predicate.rs"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cc37082ae11073781927e84e6024041283fa6308ec79fca31160a7da01e04c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/table/src/metadata.rs"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"453e43d95971ce480ac9f23ec03eda89a18101cfb1ee6aa6c28a1a98eafa94db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(yingwen): Tests add if not exists. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/table/src/metadata.rs"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"2677dd85151be6f779d710f0966168de46488e20adad8b32ce2eaec2b8ac0df0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ruihang): handle TimeWindowed dist via this parameter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/table/src/table/scan.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cdf3ea75f5f69efe1777e8bcd005b5c4502fb538308d6825a995a27eea54175"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME(weny): Waits for https://github.com/GreptimeTeam/greptimedb/issues/4247"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests-fuzz/src/ir.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb2e77a02639a3b1ad0f690650b9b28aaa06337a72248894b174a42ccea0f03f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): find a better way? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests-fuzz/src/context.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"a446bafbfea3e16626881cdf2e03dc83aed0aa622d58519c037e40248c27a396"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Checks \u0060semantic_type\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests-fuzz/src/validator/column.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"508a014ef441816cbb07f9f503e3cbf2697f5127c58fa2a41f0f0815672d31ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): invalid prepared sql after alter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests-fuzz/src/validator/column.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"1609a933aaafdb30c688601552b58851edca0b0a491dc0bc1aa2153e5c26638f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(discord9): make sure marker value is set \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests-fuzz/src/validator/column.rs"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"c64595b45b99bbd7b96bc2996c2f5707b39b2a7a34bf5deb7056e204cb6211f0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(weny): support to retry it later. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests-fuzz/targets/unstable/fuzz_create_table_standalone.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"63a7ef458eeb9d27424e8d2f5ea3080c704d0afddd60148e74bb383f5429525e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add more specific assertions once we have proper file system access \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests-integration/src/tests/gc.rs"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"495128bee43bfaf07c04336d98a2f5d4be925e0f9b0d8dc1262a4fd25d87ce4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(niebayes): add integration tests for remote wal. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests-integration/tests/main.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb04df1491d2f6dd8591416412b0d15abf012fbe4e1d22249a2974cead58d0bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(shuiyisong): refactor http error handling \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests-integration/tests/http.rs"},"region":{"startLine":5279}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ba97e38815e91c2ed77251e3bd4f557103afb5c78e1a9a92c9c2ac92bd9aa91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(weny): remove postgre and mysql containers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/runner/src/cmd/bare.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d5a823f61a93481b560fe853ca2d89952726e5d627d255f36665dcb8adb9074"}},{"ruleId":"D19","level":"note","message":{"text":"Documentation: no project overview: The opening paragraph describes GreptimeDB as \u0027one engine on your infrastructure\u0027 without explaining what the project does beyond its dual-license layout or linking to the user guide. Expand the overview to state what the project is for (metrics, logs, traces) and how it differs from alternatives, then link to the user guide."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"66dbf18d06aa983c06246108610908ba99aae6784280b3aacd1a6655733d71be"}},{"ruleId":"D19","level":"note","message":{"text":"Documentation: contradicts the code: The jeprof tool script and the gen_flamegraph.sh example are shown but the referenced greptimedb source commit is older than the current one; the MALLOC_CONF=prof:true env var may no longer work. Verify that the jeprof binary matches the currently built greptimedb version."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/how-to/memory-profile-scripts/scripts/README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9745997dc495b5e17117aead1b6839823a45d46606809a12525abf6acb69bedb"}},{"ruleId":"D19","level":"note","message":{"text":"Documentation: contradicts the code: The Remote Write V2 diagram and its two ContextReq/conversion steps are shown but the remote-write_v2 path in http/prom_store.rs has changed. Confirm that the diagram reflects the current remote-write_v2 module."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/prom_remote_write/README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"394d7fb1f3da78758a628b61ae4c366ddac4e2e8cbfeed1490b1f909eac1b271"}},{"ruleId":"D22","level":"warning","message":{"text":"Redundant constructors with different input types. \u0060try_new\u0060 takes raw integers (\u0060i32\u0060) while \u0060new\u0060 takes the typed enum (\u0060ColumnDataType\u0060). This forces callers to decide between a fallible constructor for raw data and a fallible constructor for typed data, creating confusion about when to use which.: Unify into a single constructor \u0060new\u0060 that accepts \u0060ColumnDataType\u0060. If raw integer construction is needed for internal/FFI purposes, mark it as \u0060#[doc(hidden)]\u0060 or move it to a private helper, as public API should prefer type-safe enums. (signatures: ColumnDataTypeWrapper.try_new(datatype: i32, datatype_ext: ColumnDataTypeExtension): Result | ColumnDataTypeWrapper.new(datatype: ColumnDataType, datatype_ext: ColumnDataTypeExtension): Self)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b1ef886b48b610f8ce6328caf52cfab42952b9fef53182c965c56c1232bcb117"}},{"ruleId":"D22","level":"warning","message":{"text":"Duplicate intent for splitting a wrapper into its components. \u0060to_parts\u0060 implies borrowing/consuming nothing or cloning, while \u0060into_parts\u0060 implies consuming the wrapper. However, since the return type is identical and likely involves cloning or moving data, having both creates API bloat. If \u0060to_parts\u0060 clones, it\u0027s expensive; if it doesn\u0027t, it conflicts with \u0060into_parts\u0060 semantics.: Keep only \u0060into_parts\u0060 (consuming) as it is the standard Rust idiom for \u0027unpacking\u0027 a wrapper. Remove \u0060to_parts\u0060 unless there is a specific need to clone the inner data without consuming the wrapper, in which case name it \u0060clone_parts\u0060 or similar to be explicit. (signatures: ColumnDataTypeWrapper.to_parts(): (ColumnDataType, Option\u003CColumnDataTypeExtension\u003E) | ColumnDataTypeWrapper.into_parts(): (ColumnDataType, Option\u003CColumnDataTypeExtension\u003E))"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"95008b08b6bcc7f1b51f29869d41e66ed3d50c8596b32fb3e10b55ae6c5ad8fc"}},{"ruleId":"D22","level":"warning","message":{"text":"Confusingly similar method names \u0060authenticate\u0060 vs \u0060auth\u0060. They appear to perform similar authentication logic but with different signatures (one includes catalog/schema context). This suggests a split between low-level credential verification and high-level session establishment, but the naming is inconsistent and \u0060auth\u0060 is an abbreviation that clashes with the module name \u0060auth\u0060.: Rename \u0060auth\u0060 to \u0060authenticate_with_context\u0060 or \u0060establish_session\u0060 to clearly distinguish it from the lower-level \u0060authenticate\u0060. Alternatively, if \u0060authenticate\u0060 is the only core logic, remove \u0060auth\u0060 and require callers to pass context if needed, or vice versa. (signatures: UserProvider.authenticate(id: Identity, password: Password): Result | UserProvider.auth(id: Identity, password: Password, catalog: str, schema: str): Result)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f984b8ef0d8bfa98c9321aee58086beda4412c61114a3e76b8bc1a31d51a45db"}},{"ruleId":"D22","level":"warning","message":{"text":"Same naming inconsistency as above: \u0060authenticate_bearer_token\u0060 vs \u0060auth_bearer_token\u0060. The signatures also differ in parameters (catalog/schema), indicating different scopes of operation, but the prefix difference (\u0060authenticate_\u0060 vs \u0060auth_\u0060) is arbitrary and inconsistent with the rest of the API.: Unify the prefix. Use \u0060authenticate_bearer_token\u0060 for the low-level check and \u0060authenticate_bearer_token_with_context\u0060 (or similar) for the high-level one. Ensure consistency across all auth methods. (signatures: UserProvider.authenticate_bearer_token(_token: str, _catalog: str): Result | UserProvider.auth_bearer_token(token: str, catalog: str, schema: str): Result)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e4c72aebc833792d6c8828449d0ee7d2bf20a35169a6c47bcc825131fe709b8e"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent naming for similar helper functions. \u0060auth_mysql\u0060 takes raw password bytes (\u0060save_pwd\u0060), while \u0060auth_mysql_with_verifier\u0060 takes a pre-computed verifier string. The naming convention is not parallel (one uses \u0060_with_verifier\u0060, the other doesn\u0027t use a suffix for the raw byte variant).: Rename \u0060auth_mysql\u0060 to \u0060auth_mysql_with_password\u0060 or \u0060auth_mysql_raw\u0060 to clearly indicate it takes the raw password/hash, making the distinction from \u0060auth_mysql_with_verifier\u0060 explicit and consistent. (signatures: common.auth_mysql(auth_data: HashedPassword, salt: Salt, username: str, save_pwd: \u0026[u8]): Result | common.auth_mysql_with_verifier(auth_data: HashedPassword, salt: Salt, username: str, verifier: str): Result)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dc603fa31332cc09417aec20a7d47d213d0a06a4f5da941d668fcb4107af98ff"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent return types and parameter lists for \u0027format\u0027 functions. One returns \u0060String\u0060 directly, the other returns \u0060Result\u0060. One takes fewer parameters. This suggests different internal complexities, but the API surface should ideally be uniform (e.g., all returning \u0060Result\u0060 or all taking necessary salts/iterations explicitly).: Standardize return types to \u0060Result\u003CString, Error\u003E\u0060 for all formatting functions to handle potential encoding or validation errors uniformly. Ensure parameter lists are explicit about required inputs (e.g., salts). (signatures: common.format_mysql_native_password_verifier(password: \u0026[u8]): String | common.format_pg_scram_sha256_password_verifier(password: \u0026[u8], salt: \u0026[u8], iterations: u32): Result)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d352d8e62069fd86e6c329fd113c445f9d7d6503d5e2a28907300c52f5e4c3ce"}},{"ruleId":"D26","level":"note","message":{"text":"Projects may be oversized for their cohesion: 11 of 71 project(s) overshoot their size bounds, lowering Project Cohesion to 6.9/10. The most over is \u0060src/mito2\u0060 (132449 LoC, 406 public types across 26 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":"D28","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":"6a6842eeeeafa241ea702cb485c5f1864ad4aa73302ae32ad5a7d79cf90f1920"},"properties":{"commitSha":"d4cfbd3400b3ad5b6dcd0a94ce7e01f3d8ac01a9"}},{"ruleId":"D28","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":"3cdfd7beb31b791ae18dcb425e21eb157c842e7bbcd522cc330573c1a6538db1"}},{"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":"ce7146a7e8bb272c357bd104697bba5309daff6c1893e6b5692193f361e8984f"},"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"}}]},{"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":"6685ecc32c000fb5ed6320dc2155696c27f8f4a8fd576aac7890e9d67c060597"},"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"}}]},{"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":"776476dc77480ef2b94fd0cb9f8be330aa7b703467348cde542ca52f1c926c53"},"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"}}]},{"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":"787e246084d430db0b9002b810e999cb0a8e418a33e3259052283bb09599189e"},"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"}}]},{"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":"2beb810fcf15245991c117eef3490d1fbbf526bbbef6c025721b0ab85223e1c8"},"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"}}]},{"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":"b164583a711ef7c412b9378fa3b1a18aadbe3edca9b44e5472ebdfe86eaa4289"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"ccaffa448bfb010d9a4729c5fcc7ad824b27303e3a875bb37ff16ad79aa35ddb"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"fd2a465828e8edc3df3e950cdc1274c81ae2b8437cf36d99332ddc42fdd88e70"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"f7026c790892a0cdb4599ae32a8038918199f8b2a4498a87435b8507a3939537"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"1dea83aa066e6ddd075db2ad8349a333176f6031a54a1656fe6913f1ec864814"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"8a4daef5d3a2efc1763fb81d1d84d1554e0373c6ef2c26581c67f3a7448ac97a"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"fc06ac6cf35b3195c83199785b0a17f39e83fd174c50384e722e7f883dde33da"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"db4c58d8d275768f8f796da65940eb60f81d9dd688dd3dcc570c464329d92f67"},"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"}}]},{"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":"0232bbc1b7187f30326c3555f759b761120221d7adb2bcc919ae21cbc0f0593d"},"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"}}]},{"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":"80f0defd49fdb04bc03ce0bfec105160175c1e7b3dfaf7e45a63d77d89bc6a1f"},"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"}}]},{"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":"8afd91d8368acd0f719220b53896293d006a750dae82c064f482d8709caaf14b"},"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"}}]},{"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":"50551813d98f28f02a62d12de0fd0811fc07e32037d25fc362bdb31d0a79ca7a"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"01ee0b8832413ef6c50046f443a32cae5846138b5c719785d78bbfe27410fdef"},"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"}}]},{"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":"e1c73ac696f87b10f2c9d244abdda037009bc6e37a03cd532dd204d6fc944fff"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"11fc1bf9d4c3275e7f6e06e3c634203295939d35e33063d08420b71965a29ccb"},"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"}}]},{"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":"f1f7d9b5750d0185490b8a811c0db9f7cf48c9244a0afa5efedc173f30236705"},"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"}}]},{"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":"fb11602ba654f65c020d936c563bec77a32c7f7c8166e2bed2b842f2c54f88cf"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"1c90591919be42ad36edf618eca16bd40d663548f3bb09330788bb50a3a08b81"},"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"}}]},{"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":"0797badddb210b28f0d805b8098a916e3fff44d883205b6e3e7399efb319cb16"},"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"}}]},{"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":"63cca54b71b52c916bc56d5f18abb1fdf9325b50c366a8c4c7281482773f02a0"},"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"}}]},{"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":"d8e5a970199ef0e59e84fea6a637a264f147145e5d97942a386db989336cb75c"},"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"}}]},{"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":"adf1b524d2490b6268804644c9af315f1c220dd5a8d72d7a6c4d24787edb31bf"},"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"}}]},{"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":"3b628c143ceb4a5dddca940a1b88eaf0840c68119ef11d4fa81b3563b4fb892b"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"b00fb0be5b72de50a923bf69f1273ab907596f69aaa40ff465f98ab8ceb0e943"},"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"}}]},{"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":"e72d679c7c511a9083e76af63b6c337e1c35b6c59b9d6b30974ed75380aa68c3"},"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"}}]},{"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":"3e0c6673860b34b4ecd045000de7d1e0679b69d3337e44cff0134702e3b0f68f"},"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"}}]},{"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":"48bef3edeec5bf013d8a21f8c466bfd3877bc13f000173062a244ed16d2a64d8"},"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"}}]},{"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":"52add5c91b3b81574583b3e9182d781d8cc1e82fc5ad14104e4797930795af0d"},"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"}}]},{"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":"1c4aa0bf6583b46634b2d6e10349c98ec1fce8e5df0e16696aa53475eeaf2a61"},"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"}}]},{"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":"0caf29f47644094ada81a92d7e165987176dc7bae744b47416e25eb8ecf150f4"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"99bf03469c0d5da01dd286b347ebd34d73c431673907da039e10a29426f33790"},"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"}}]},{"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":"44f3c0bbb0e58696ef29138d010aa8018e3461fbf2f6518497dc1f71254278d9"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"017a67035deda0f926c3f9a7a11300c1494a78d551c041a2991a581d62cb60cf"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"a4dd9f6a51a7dbf18c585c1041e1dc62635291fffb3ae0e0e2016f2f9be9238e"},"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"}}]},{"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":"1e2d4d6f69b826d6e8a0b455ed23351cb7125f8d7eee6b3a6210b3645d8160ed"},"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"}}]},{"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":"bc41ee51035e6021bad119614e8f5b80d6042bba05b2b6a2f3b206d268023d9b"},"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"}}]},{"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":"a7e0b4f3cad397ec94563f46d30d7c5023192a039d9848f445b64b99c8dde3a4"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"5a595ec65cc7cd9c296a5224fbb41eaa823048524cc5a7a117aaf4adec7e77d3"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"67de5be64ac7350598cc1b07038881c8cdcab54cd0e8a7edd489e47f43b3d05d"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"4c9118757979d883ac717bb630fdac1228f649e9ebca19e66bcfd32561d2a4a9"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"7d50d96fa10df12db0f7f524e7d513bc6f33084309fa29d0b26338140a4ddbb3"},"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"}}]},{"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":"34d85299801981632cf161b487e5d1fe72784611d377c9949ec944035dc5df52"},"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"}}]},{"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":"e9aa48587be46705d0158abe994b963cbf382cdae05e6350f6e46d2b4fb5c859"},"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"}}]},{"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":"ac7cba3d9232ec5c5ba0f5fc56610912f122ae6f5bbd8bd3c6d51ba8e4a3d978"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"720cb5e173ee0daa88575adf3f639b0a1439f0deb8aadce3f142abc198a107d0"},"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"}}]},{"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":"19c0a22cb472f4378c8d548d950f42024e8211dbf7ad5429f85deb5359a20797"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"5873d2f8dfecaad9ac1cf28c4c583f35f1ba6a4ae127639f6e83d42f4bd72842"},"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"}}]},{"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":"2d000429b829936a7c535c7dd3000086268c82d6ed7ec75676e9a6d812efb934"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"2537a24bc1b41d5ad0a954421151fe2ca037e4466af56a335fc7484d5a43971c"},"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"}}]},{"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":"9610d7c962b5a2c5d6d8c85726325c3dc02a7688476f3cdb0ad6ad49eef1f9dd"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"5e71bcdaec562fe3bdefd0f0ab58ece6280f98bbdfcb4be60577fda3e077e997"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"213eeacb67882fae1fc07b0fe172353a215de37d6a04241c72dffab3ae856162"},"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"}}]},{"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":"694f8d38ad8d573a68e85a039054d744c627869895ad33a6a67a6d556efb8bb8"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"d941a8edb7f7dd5ca6b0dc3479559a9c664c653884e4892b26f8618707018efe"},"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"}}]},{"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":"df233cac71a19a7af024f08bec17f6bf69e45ac002984d2c907caabeb3ddc74b"},"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"}}]},{"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":"0e3a8de918c758704206e0fbb66969675f63740c630f0e7afef968facf5850c6"},"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"}}]},{"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":"a75cff06fa9c53c5d540e0aa1ed9b6c17b9eaa2bde84b0412cbc35e37e21572c"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"b7f96160c24bda5e8e3349991216d96b8131fc50e494063bbb976618230cd5fb"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"de6f10eb8c619ae689606763aa706c0a8acbe3d747288362e54cf58a87e68f13"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"0737ec19ed3f2b9aefbd94ed085a669ff4890331ff1a5551467064e1d4414b48"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"bf1f4e7fc9f3b33f2384e161d8fff1ab3caa4e00a12fdc04576fd3a6bd8898b9"},"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"}}]},{"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":"4e2ad2154d7b68fc617382db042c4d2193e9cafc7067441d581d7aa5e46b3602"},"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"}}]},{"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":"538c9ef95c9b300a1e8f1dcd36ed77bbce738dc4062b9b77312ebe5a5de63d08"},"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"}}]},{"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":"202e85a00c65ba34ca997f8146b0dc878386c02a97f313d95ebe1a575c55f238"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"034c2d03d612899cc6de3b7fad646b0178777f23ddd204712ba5f8f90b7d993c"},"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"}}]},{"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":"1ad71f7e64d4415bc21cb229bdc02f2dd3c3bfc1567e1416005818b5ad188103"},"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"}}]},{"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":"5f1cdb09a6523ed32d7b944feffb224466a6edd6eb9f417165bf886cab4a798e"},"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"}}]},{"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":"859602844b9af90d4224b1d98fd94e4da4bcc3613560db271fea38a9b8622d7b"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"a309f59db307aa6d881148b6440b908c924fdb60ef3da31d54806f8cde994c9f"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"d3dfd6e63674ff7013618397e974d5ba5cdcf87e192d4c40e5678d0f8546ce52"},"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"}}]},{"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":"8d85830b0ec681052dc6e03bf43ee0f80810af17645bf6c121ba4ee4e50fc5ba"},"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"}}]},{"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":"6b13b356ee4370c3441e96c06f501c2f45d20b286aab2fffa50fbc3b6c222828"},"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"}}]},{"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":"0099b97581e5edffc75b19bf867ade8a1aeeb68189b20f183c0dcc92eda54088"},"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"}}]},{"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":"56e15646f136fa9303766b656c545d274b4a90f1a613844f59e0cafd49a5839b"},"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"}}]},{"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":"a67933bbf18f92275da3883939a9523ad8af8bccaccfd5563c7423e940c91d2c"},"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"}}]},{"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":"9f7d3f6b1c4d4a90f167fd30fe71d6d977f8dd356d50c86ccffc8e50a42f3290"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"b252dc77a4d9a1c7b121a3a6c524aeaa1f92f27e6cefa89daf1e582b8f0b4496"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"ecd629eaa1ae68ffa144e0bbc1c91364cb853bd18b7709116d482743c7a21133"},"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"}}]},{"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":"81d1bc0f5fd8821156c59cd4d2c18ced5cdcbd93bdd5541cc75837e5b64d9a59"},"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"}}]},{"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":"9992d9af53ca28455fbf530cdbbde2297e0918e12dae89ea9d356eaa07d1fa30"},"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"}}]},{"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":"e31746fb487a266136a0c0888221d05310c9ee7693a62655457a9e9b2ad95dd2"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"3857289e9c61db93c16da4a84545f0dfcd56934cc53f93c75ca92991fd8a4f01"},"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"}}]},{"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":"2ee69661976f5410e30afefe89f1e1ffbe09267098a926a411b53191b1645456"},"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"}}]},{"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":"84fa1828693b2125849610abe9e5a5e7c08b34de1084613e2d4dd0d07647675f"},"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"}}]},{"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":"e13055f80a356e71aea98e2e80d053565764c6a177686bcefec5ff95d3d05ecd"},"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"}}]},{"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":"f9150febc56f13a12373c0e4fa0a0038d78a66e3a85507ccf754385e5d18f428"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"55d4061974016cc6126b0e9040b84b43dc3302b84adfb9380518fd24c694f919"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"24deee2ccf7d85c88bfd55bb4e33a199160dc47d5688909a458b1b52ecd499d6"},"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"}}]},{"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":"8a5f5fbe04da6825b9f6a89f39d7aae94418d05cb2be6d55a674054ffa1088c5"},"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"}}]},{"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":"546388178504d60ad93ff915da3bd29a7d7970d02b083a32b764e280f68b9aea"},"taxa":[{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"04a1eccce4465fdbc6337233f389211b4ba147b3bd620ff620f3ddf56d336cdd"},"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"}}]},{"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":"3b421ca17fc63e4d3ba11b4df61175bc05c49872be5c454fb6c4a2a1c75c56b9"},"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"}}]},{"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":"60b54810b73200bd4c0f6e419402219d5fb9a4dbc69268749e35167919aeff01"},"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"}}]},{"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":"63988f6dd375ef789093e4d9be48e8eeb661dde53b563451b0d95492d02fa19b"},"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"}}]},{"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":"fae624db6b275cd1ab9fe220e123da8154fc1660758740ae29337e6a1e595fea"},"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"}}]},{"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":"f8210aca8b164637cf902fbec5fcec7115f72d9f8c18589bcef270b9e5b53f6e"},"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"}}]},{"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":"fc29cfca53b0af2eb18e3f92605362c8a879854d27ee79108d9ef39b10471f08"},"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"}}]},{"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":"fde11d039e202957e716763a9d871e340d6a027131a7c93fac959fd110ccf9d0"},"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"}}]},{"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":"f9e0e756e8686003e30f0c5cbc44d5f20bc29da6ec3eafadca006a67f3583420"},"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"}}]},{"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":"e167c6f07b38abc61d79eb3508a925b9b3870acd567d8d67caa11fa902556633"},"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"}}]},{"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":"2ad943c69e33e6d154142b9866eb3e004d72d8721f9f7e6a4ef2370cfeb99729"},"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"}}]},{"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":"ba334be1b7d1ab01f0e5714a0ff84bebc1616ed3f6ceec77edfd952033487924"},"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"}}]},{"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":"5e40c458867cdc7c72b7377aea23b128b1358c3c5f23b78b8b899cc1c65e3d99"},"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"}}]},{"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":"8b4269604ff8f92f4ae7ac41a6dc65336b21897f2fc4561962dcf15ee5131f63"},"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"}}]},{"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":"d316515c02596f01d811341583e3a7fb6b2a63039a18b7839f508b7c152ed372"},"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"}}]},{"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":"987cc75130ee621ec756b0187182df2f8155c0f964d00b73c9e7c4a18fbcef88"},"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"}}]},{"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":"64cc4219e02c854d93b443e6568e877799c4f6fd89b7b2feb7620f53de9f4199"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"349a6e70837da7793701c78fd08cf9fd86a6adf5d474b43c6b7a6a51922a948f"},"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"}}]},{"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":"89ae7bf2c406940b99b9443c25d6e1ff82b49891c7b34feaef7561b875a146ba"},"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"}}]},{"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":"b763590c050de6a2a41e88e230114faf685476810fa19986f8d336bb41b11e5f"},"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"}}]},{"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":"380621824451d5a894441736e2cf55ac2746013c63b32d08cfb69e89fafe9c0f"},"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"}}]},{"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":"a31a87446fee8dc365141cf6bc80a14dafb966dd9bcbc7f6848e789388d803b6"},"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"}}]},{"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":"22564fbf0e1029e6416918c73f2d4176463b3a440b36663b054966785ed969fd"},"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"}}]},{"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":"d2db13d0515552635e1e62a32705784a9962a890109451c6be0c612373f60e79"},"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"}}]},{"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":"bd2181a0515b200d1bc5f1430a255ee37df6d4fe0284587ed508b2f0abe8b053"},"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"}}]},{"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":"a8ccdfcd5b7f078fce868fe5019ef1d43245e2525314c49946c967485f5cdd06"},"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"}}]},{"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":"57a6476c3357730e5e13535589d4639898cc8c0b7853e5443a41b954f7530670"},"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"}}]},{"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":"c606a4265a1911227bd3d5f5cc23d7101b14980f77b0b141c1bffe3d2287caa9"},"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"}}]},{"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":"b8b717aeb6efedab6ea18b1662179fb41c526c0b9a280d89e2ab8e7d8fa6a354"},"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"}}]},{"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":"f72e4bb6ca1b934c7fa99764df6aa46b07538b8d18385e4792e69ecf08e99673"},"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"}}]},{"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":"be27028378a1aa1c57bbf9ba154c9dcbc4ab92fc373e84015ef6404884bf0896"},"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"}}]},{"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":"e9a3c9e529c9faa102d513ebc7d52f780560f3b1ecdbb34ea411d1fb54e91c9c"},"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"}}]},{"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":"27bc28766a05852cfd842c10a3587b229e52cbca0c448abd6cb89f92eae7cd1e"},"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"}}]},{"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":"d4fdd6583ae1c5c75c1a4ea03167b0442c4e5aa9ebc53abbdf175b0adc2492d2"},"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"}}]},{"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":"65b4f322749e29b8097ec84a2a60400db2f137a19ddd030c35f0d5ca22055504"},"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"}}]},{"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":"355ca9cf71e3ab156cac2ddac35c12a0d4d9115df97371d493aa53dd71093682"},"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"}}]},{"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":"ccb7ebc22a7195f888175a8123da14597a76e064116283237df2b1e0756a393a"},"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"}}]},{"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":"34a0962932ac9249f0653fefdc6a2de91219d196edca41fcda35a053062349df"},"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"}}]},{"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":"4b53894f0b69210bee17e457c5e3d2c8a33eb3e9b2c649a2b47229850dcd479e"},"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"}}]},{"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":"14dda39fd3124f4b24aa8d73bcb04aeb2b048c96a45333cc4e2dd3d6d8fe1d95"},"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"}}]},{"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":"b8b8707bf5c24720ca7eca64d7799746873339054dff05cae185398ff7668913"},"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"}}]},{"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":"3c64dba9a97f197ae1e8cab45c5fd1a8393902e64ac0c5f2d1edb732e69fb64e"},"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"}}]},{"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":"4d5a22de693006c781ea1836024476ac988cb03c66f8a6c68255761c6465f764"},"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"}}]},{"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":"d47a0e4c12e5601e8c7c40931689ea838a35a1b5f98e181ca19626f0d66b93b5"},"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"}}]},{"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":"402c602c1772cd39ef07d1bac4a13345be63c96e0efdab892ecba416a94cf142"},"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"}}]},{"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":"90c8d136e93f235bb8dd685859240b2cda0ad20d11a308f187c9286356d6dced"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"4e556757022d4ab3ef662ae858d51d94e3cd23fd6ce2e5ad30a4960932956111"},"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"}}]},{"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":"5b87afd9a0d3bdd654729e528f8d362e0d104cf1e3d9bd97d25cfdbf2feb5a71"},"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"}}]},{"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":"be08db3103c5888b6ba3cf7d50df3a2b85b3c6c48ceb057a791b0844e66c677a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"45483f48fae25423c2a4c568dc4e16b95753bc273a0f7b2ac9e600dcfa256e45"},"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"}}]},{"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":"7a9fb973eb2692ba64165a8056bed7bd74db8ceab60339b48e580af1e8f65d15"},"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"}}]},{"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":"5f6b13f9d1a72080775ef7ec6c1e4184f2fa001fa28cdfa7bf6ed34a5678b409"},"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"}}]},{"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":"f249999e3cf35a06c1bc339175b0d787e1f617cde012ddc06f921242495d5821"},"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"}}]},{"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":"0b5cfeeb2302c1fcd31c74220025408e1fa402ec7f943b8aabf1aa4a307c4b11"},"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"}}]},{"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":"f41037ec7c0e08cfe68c13069aced89d30500282dc276fe7632a88a0b2e1a66e"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"702117d0dbdbbdb0e08384a0f7a2a37cb6878da12998ae0f12792200d50c132b"},"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"}}]},{"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":"3741432cbbb52812fc6d4eebc9c3ec13ab41c6d97c5b1754526123f435337360"},"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"}}]},{"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":"84450babc6b827d605430265abae120bdbbb6dd0d6f78001022a853c2b424554"},"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"}}]},{"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":"0cfeef730aa5e9ed55bba996bee04a4b90ce6ba287852d156021487ff664bdd2"},"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"}}]},{"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":"6723d4cf34079d0d12eff1d7a557cb382d7908d58e7bea991b7bb78008eddb04"},"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"}}]},{"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":"1c388884e8380a9046db1df0e5ea4ff871afdbfdfe5e9762bfa94c1655217de9"},"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"}}]},{"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":"39d2ff3bbb969f9b83c878042daa654a0c7f1d0c6ce38848644f1766f88fc9be"},"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"}}]},{"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":"f499113bef70dd1ac39dfeecee4ccc4e6a52dba28a032d76a544647e40a1dc59"},"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"}}]},{"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":"d285a3984fd33b34db45ef4f86d83d21c42979629d1287438da3f322301c669c"},"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"}}]},{"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":"d49f97781c4caa111895c8bea15b01f8d835352e9efddbad59833f5b22d268dd"},"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"}}]},{"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":"122576b23d3d248662921c5171a6d8bbac943a2c93700d1468026f4d9dd0d804"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"d9778ebd75696dced02ad64e204dbb643ebe77eb19cba23a205b3c48c208fbd0"},"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"}}]},{"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":"6d893dedbd2f52f7bf40413310e80f77663e901ce54a698dab361ffbe675c951"},"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"}}]},{"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":"c1cbfc21cb51c06c392f141d8c927cb6ceb8fdc7c39a4a358f45df3b692fe1dc"},"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"}}]},{"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":"78feb699e4a4d2429be5d00ceac05aa7c6f387d580dd296301908c536a857d39"},"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"}}]},{"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":"5393178779218c4f519b8f1e27307469747f48d713c075986a998a7be0bdacd8"},"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"}}]},{"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":"18a5a69a517deead1d80bf5d91f89b71a9bfb7c2b23a7cced74b761f107c813b"},"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"}}]},{"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":"e5d0a52d193991bdd7ae6ce0e2517173a11aa8bf07c3c6dbea767d2fed3aecc3"},"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"}}]},{"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":"ece5847cb6cc127ee5079c9d3f16a2ec45d60bd46945ce556a7ae1811daab5dd"},"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"}}]},{"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":"4503f13e599ed6eef167ca176d183335ff47f3c8f86b97cdaac3d0b1ccaf0ff6"},"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"}}]},{"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":"6f4ed75c61deb8774d6f1b6901153e9c0c143ab7ba704dcde945886d711f8b42"},"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"}}]},{"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":"e22c4a0d2f281ddec5bf13d679a32888b5c94dc3842703fe59c9ce8deed14ec5"},"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"}}]},{"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":"429946a539df0c88be5e42a3bbf39fd1bdba2c81e8578cdfbf93606a074ebe84"},"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"}}]},{"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":"5fc8b5511341cc50d07ec35b9f3769dd0d684a4c40ba1d73ba1472b2adc47b06"},"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"}}]},{"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":"f4486e62ff3bc793722b61f654effc26c9635fcd25c03f564de5ce21c8d5a4c3"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"447f9b70035c261ede36a369e32d154287dc00fa84f847dc47181aef792122fe"},"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"}}]},{"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":"6fffbe0fba76789dc8b148d0696587aabc6d0bf2b0b51197ad4bf6d3e30ee318"},"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"}}]},{"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":"44f88b6c22dc3a187f6fdeea04cbc0c835686ca39b9030eada59dc97e9ada0f2"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"54b1f7ec03d17b206579742926a163cf24d6e9359d54bd88e9c09975c7cb4b2a"},"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"}}]},{"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":"757b4e7f4eec9620b5a97ac78d0580aa676bb1080ea5338cc2c6a6f22dce96a7"},"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"}}]},{"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":"2451c287c6be57bf2a790b403c18c62b3752e5333dd8b1a732a1be089507e714"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"608d7952e1bc25949d19b006379f7c674daa1e4fc58393ec1dd01f0624933110"},"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"}}]},{"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":"56b4cce4aef30cc9551b99f786a8f3b508a823a85a8d22dea6b21392ba65129f"},"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"}}]},{"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":"8ac078d1b7395c2d6b57ad708f3719a57a5c7d1490c75a868ddfa3f925d99842"},"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"}}]},{"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":"459c799396dbf400c9d614e4890ea9535ae1e907b611691f3ceed13190a4ce0f"},"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"}}]},{"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":"318a5ae1394c58765448876107b0d6916ee63742ac686eed2924fd1b4bf572c0"},"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"}}]},{"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":"dc5437ca795ec01ae667b6d721716adad8652cf122fe1ea8efb812cb2af8db05"},"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"}}]},{"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":"2cf875aa80ef98ea8799cb1b5bb7c29f7b2cf13b2c27e5638a2833fca894dd0b"},"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"}}]},{"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":"d7a1796711fff44b0f5e0a2ca06f806d4ee85b33262e8328c9b7b893c9cf5b56"},"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"}}]},{"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":"74cd6757fb782261c0d7143da2e1703ef6b1838cb5812380a04e65946f9f3b1b"},"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"}}]},{"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":"e12af85427b0a13f2d3439d3de5d6517b91923d8f36852db3b084860dc219c14"},"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"}}]},{"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":"4c52c215728a4abcdeb18bd8923fe807be9b4f1a460e455db75fdd9c667103cf"},"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"}}]},{"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":"2e9ce19c428d5a062471dace58c816fe232a99714c00f8331bffaa0e4f5d7dd9"},"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"}}]},{"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":"5f74f9ff9cb58760b83877b4d95dd5b3297738e337862fbd668ca4b25e0e63c5"},"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"}}]},{"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":"76c09c5a3096b9167a4d2d566eddf0f4531352140dc0655a08945d636df0b91f"},"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"}}]},{"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":"b9acdfa5360065d81a8e0f5a782121fb365bc543b2f0064df9915c445eb04843"},"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"}}]},{"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":"87fcb14942ad9e69b9a9c63c9f3a79714647612afdbeee1230304fe2f76a6d9c"},"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"}}]},{"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":"2bed041b27880872a3bc45723d98918ecefe20946a59221409e662c7aa6c52fa"},"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"}}]},{"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":"6cf45066a9f9e6b58eef056adf8b1305a55ebd70cccaed536d82979b4b200cde"},"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"}}]},{"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":"76a1160c75eb0a40bda30ee26825045da53bd2792d7b93a5dcc4b43587bfbca7"},"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"}}]},{"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":"0ca11b36a4a936b9956ca36d415f3ac3c47aad7daa3897b78af7c7117ee9e680"},"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"}}]},{"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":"c2c537d1492892bcd50d2b4d92d2483919763f615f845d891c0e5b04e78ac84d"},"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"}}]},{"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":"dd77400ea2b61c65369c4a6c9b1983ada0b8bff9968fc59a3181c192f88cd33e"},"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"}}]},{"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":"7b3a8c3a3cab78d6123a17232fd9d1688c3d72346d11da1219f56911b964449e"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"2c79fa5bc1b6ca8ec9030a475edf1f1858b314c16b330a29ce5f2565dff95ec8"},"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"}}]},{"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":"d8bb99be2489da2dad692743a90a875ba7a17e01345f6207bacba37f40b40f34"},"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"}}]},{"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":"8d3021c30d0f1ded4412a39be16e7aa5a19a7396b673c1a6f374a72232a2f9ee"},"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"}}]},{"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":"5aef38eb1ebc8544fef616688e213c031d11ee14726ace860ef260b78884ca02"},"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"}}]},{"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":"f0f8130fe3e2a5f995af68a271e29cc9771ef2946aa9a9c2d106904a9ac7b3bc"},"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"}}]},{"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":"9ef676e07f61b0856011a4dbeb768f58c7ab879a40653e14489c01fcaea7d70d"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"2bcdad83bba805be6d9ca3917c576777c2b81dfbef0dc8e406d986a4194486cd"},"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"}}]},{"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":"2a94a9c930fa68ae23ad71a4639ccf2514c141710303d02754989d5e26f94761"},"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"}}]},{"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":"e4f751e9c0c72812fa9f1286e0eb50356109c53a34da75f3889c9c8866cc264f"},"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"}}]},{"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":"894980292cefb02c48204b543bc2c99ae866c029d6be05444127a0442b1290bc"},"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"}}]},{"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":"d8f488dcfde62cbf5213e61d827bff53a8eb4bc8e3252946bef875244d14c5e1"},"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"}}]},{"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":"cdef0e96630aa93d58e6e59776edf1f3e72aef3275900b9ef75e7e43a775bc07"},"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"}}]},{"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":"746478372b8eab11e916f074cd75ed8491cf501201eff246f9d31aeedba9cc1a"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"a07331a3fd86d36c09c93306239bd00acd5f39c41d910d9b20edbd2f0ad7170a"},"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"}}]},{"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":"f17a035f1a250a313c80a6ad7968572a6db8c3983d66508c147a0d0877a115b6"},"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"}}]},{"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":"5fb510eacaec5a7afbc228f3852bf6d167a1772274ae54691f3a30fbe3d854d2"},"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"}}]},{"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":"781e51db8cee440a0aa49b523b8ad9b3a0791bbdeb605af5c9a4d2a79c834b19"},"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"}}]},{"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":"602b67ba120a2f35d33adf568b52bd08377fc452a24c5b9cb2857bcfbdc04546"},"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"}}]},{"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":"c75eb8770efcaf2fadee98dc50558103bab04090ada85465bd7f299578899ef8"},"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"}}]},{"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":"68fa9b91bb3920ebfdc8f0e4c15deb19fd4c6d729381edf34e0a9d622d8edd03"},"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"}}]},{"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":"e40c2fc7bd315f78167a3008e79a3cbb5873c4af20893190899b0a89db100e1d"},"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"}}]},{"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":"1bd7ca7376c1f4e63bc464a6a3ff1788bd893fa99f1bcba9a8595e5662d4dda3"},"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"}}]},{"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":"70f520ce7a3a620e878961fff6d77b2a25086809635bfbf2713c26967802471d"},"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"}}]},{"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":"346c54ac280fa169777ea64fb6e4d2932556a08a5991bf52534ff4c5a6a91951"},"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"}}]},{"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":"ecb8e8e6ef443d86d293f2820b754067b218284d804096609ba37fb6620ec112"},"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"}}]},{"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":"0ee528e5e98217735598dc4c912f53594cf1e777c63c95737fcb74828218c492"},"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"}}]},{"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":"4bca5d724125f4ebbdb7d17b174194492931af3f21d89a7c50e49f1151c1666a"},"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"}}]},{"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":"2287d6d3ae1703fe5b2b4463a88a3e7d7f6341c6016cf6a593a19741c15cbb89"},"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"}}]},{"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":"a116b31eeba10771c8696cb599c57787d923677b3e21e99ab124751ecdad2fca"},"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"}}]},{"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":"e057439f8251caf9461f93158121ab54d456bac9bbb1ed88a2d84d336d452f5c"},"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"}}]},{"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":"e98f82b9fef19e90da205e491ec2a0f2c7050eae430bfd267f5d7e91ee95d001"},"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"}}]},{"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":"a92490fd1eed73ed20407cc7054e3661bd2a2ba96ff30856012510c3b4d40195"},"taxa":[{"id":"CWE-269","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"94092e0b2cdf2ff7d3f732e91e261277eba7e1d353a91dd1b81e00148ec43884"},"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"}}]},{"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":"9083acf3306a72a9ec7dfeb3f0a05f81b10c5d3f4de15981ee33873c40cb772f"},"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"}}]},{"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":"1babf10beb4f98990b7328bc10e2fb1ced587906064a8bc595247bcc8533deb0"},"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"}}]},{"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":"970ad18093ebbbfb3d3d573fe7ce2969f2e81986c322bad3212aa107ab105117"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"780c911aa9eeed0969a6c6a2f684371f8662af5b52d052655fc7599814680ce4"},"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"}}]},{"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":"1dd6b063f0720b0ef0a328c0437dcc5e0faa85e72a2c48415f036877fe46075a"},"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"}}]},{"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":"048a78ebb9b51492d2960373ee4cb9981e513bc42353b5e3f39305f5e780bc07"},"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"}}]},{"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":"18b865784cb60b62705a2e6fe7f02de8aef2cb811b4f0f76ab9b2dbd8b306ace"},"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"}}]},{"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":"ea62b7b7966d8a34aacb01374f1bc85dd23f477649b82ccbc9496f8be72a6e42"},"taxa":[{"id":"CWE-269","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"4e541d1b66d12e5f7c8b0de508d9fbf277927454e3a14cffadbb0848f8728db3"},"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"}}]},{"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":"ef03f6a06cd08521b354c28475219c9493946bc1f6110576a1022fdb72676a2d"},"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"}}]},{"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":"266187180001f8eacce6e039201a496026fce58447d2e236f0e584d6ee653a52"},"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"}}]},{"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":"18540d36132f569b83f83af5859857bdd6b560a779fa04c8af0d3867bd9f4fd4"},"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"}}]},{"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":"8242392b2853a1141957c6aff8c6c04905e9c3785ece208f9f37e711a7c8173e"},"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"}}]},{"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":"580660244073d65fb522f6bcc42f021fbe491e508058e9d647dea6cea49398f7"},"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"}}]},{"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":"907804883028c5092a91c70f6e45b5f04147117159d2f7ca06b7576e0c96f81a"},"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"}}]},{"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":"5be18b212506ebc8fa9861c2ca7d071a25688f2bb33541495eb59aff55d8d8cd"},"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"}}]},{"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":"89b9b7ee55b467c230ca25f12d374ee3e39a59c6514282575f66e0d64ebc7e4c"},"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"}}]},{"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":"c1ac966315812b7e3d33e6542c7fddda4527937e994fe814717bcc32a24aacfe"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"aeb2ef321e37dd388794ad963d427397ead325a50feee116e9ea45221f88d2d8"},"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"}}]},{"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":"e1f600d764a5c7fb2625e584fa73cff7fa831e92e55348cf57ebb857662150dd"},"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"}}]},{"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":"608a6eeef0fbe35dae9df0f5b51ec3e9ed05a6da28cdc8f02cd332f932545076"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"ba4909dba38138d5d82aa09db809c5fe543e13b393fe29c3fb61a88f3b66024a"},"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"}}]},{"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":"9784d335935abed60ababfca720500327bce27d452b248a60afaa6c91f22e3df"},"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"}}]},{"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":"7d05c96ce815505caa381f6e98ab6c57f57d95b9139ef81de3107d8bc5a6da9a"},"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"}}]},{"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":"ef912a6ab93787678d0786736ed3a41e8f82cf3570ab016c3ac643c0aa543e08"},"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"}}]},{"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":"c1b6037ebee414841e6aabc1c7a170b50fa7e17d33fb375b8a686c79c6e7bbf9"},"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"}}]},{"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":"c0d429dbd5ed16d66a7e8bd7e8940989a026ba4ffca897967ebb3e69e3627c1d"},"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"}}]},{"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":"b2de2c34c286b5cd775bc1d3bca3170acb4d9d3d96bf5a8c9664e00bcfd2ce73"},"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"}}]},{"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":"c2b2a789ef34d68d3903bbd5bd5981fe4bbd3ff265ac6e6a91fd128b7b4c762b"},"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"}}]},{"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":"8f2fab53ab012716b82210885b7dd0fe292563e9675d25305481fc06c83265a8"},"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"}}]},{"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":"d4eb62ac0bd7b26812a283c0ad5942cce081f09d4e6db7179fc3d4642fc50710"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"457e82244aaea207afd102e61c47e95526963bc3559c10c8856efdd97bfead00"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"1134bd5756bcb90bbfd77a3d7ca69312d538843d681c72845d6efa2e421349d8"},"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"}}]},{"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":"f7c42128659f526f09d8a0bfecb8dc3b420ddcc13e5ce6984756ad784069d3d4"},"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"}}]},{"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":"900888a4c6d6413a18c1d09eaa4ace025cb5d0a35bbd9e27fdb3c19d12b34acf"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"dbcddd17283567402cf23d17791c03579144a51a9b3b9c7587fe66a662098bf8"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"e0ae3940899286dd697d8926eff1a5f8ae34453c5ed2033e75776663bbd99a61"},"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"}}]},{"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":"2a2b7a147f6d5bbdebb2651f0f23b184ea6a8985cc00e0772f7681ea98d73a19"},"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"}}]},{"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":"7f26fd9349448bdec406391cc64daa6b7928c311e292f070cd948ac7eefd88d2"},"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"}}]},{"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":"5be03ab325ce0dd57044d4e411f1428508ecf7870bea56774afff406be2e7ce3"},"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"}}]},{"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"}}]},{"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"}}]},{"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"}}]},{"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"}}]},{"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"}}]},{"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"}}]},{"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":"f82a94b547e583107475ce443fc06e8d421287b4914413339b69fa88eebfa9dd"},"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"}}]},{"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":"d95a54d3df5fadf27324878be1180bc0af1e4b543277632d89c56c40f5c1dad9"},"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"}}]},{"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":"865c1256b0af6cac7fabd52ec1703a6840a81e82c2cc09619e5e78e47af02756"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"b0cc4d4cb2476e23d7b05b78650c92a4c1c9b0eb21f48c40a8658acf264a30ef"},"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"}}]},{"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":"8018fa76f9798f58c2d54888e01f82e01d93750f0c34580eea02821510c2b5a4"},"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"}}]},{"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":"64aee044c1f4dd4bb7a77441c8cfb2ad1960dbe2c5bbb6dcc4a3af1fa08e7b62"},"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"}}]},{"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":"7adc332f2d68b4a8e35c8868ce3df7038dc1a68ece15e2a5c16dee165f7a002c"},"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"}}]},{"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":"fd34071f0a37397b22950926e6e7d533f19a1ab2e35c80a3ec230eef7195ce4c"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"2e92484af1fef3b4dcb7c78ad7c99b2e3ef9afcbadf8a52158104508ba920832"},"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"}}]},{"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":"6d7d90df32a41d0b22764ca9e9e277f2d3d8367397fe4cefab8be788bc8b8cbf"},"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"}}]},{"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":"0687424160123dc6400dcd7c951218a45f955a8035963ae0ac9fa855234869ec"},"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"}}]},{"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":"a5a94de598d5f66dcc4ccfd4adeb9bbd82d59e61120ddfa86a1354ef816f7094"},"taxa":[{"id":"CWE-250","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"75369c09bb288495c1ec96550eb2aa9585bb73f2d0abcdd876376a94900b52cc"},"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"}}]},{"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":"3643ff687baaf09e4fa86f24721b381bb8ec583e4fb1bc9174a893ca376bdfb1"},"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"}}]},{"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":"3026c112dd3ac8a773ef27f9ff3c6a0db3165f259ba40b7d56c2763c0dc3e74d"},"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"}}]},{"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":"24bcc8189b69961073a2a81a26475bc0ac4b4627119c2067a001ba82a978dc0a"},"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"}}]},{"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":"620f44f7d0814af2bb598a515423618ad407110d7f6058f12541a5a3763e870d"},"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"}}]},{"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":"4953c563c8ff22edf84bef39c28b19b85651ec6dceddf7dfa3c21d45fd63abca"},"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"}}]},{"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":"bc2a3fd77ef03fc552285be61a0bdd64eaff8f459e43dcf6c716fe5ffa16bd46"},"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"}}]},{"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":"eac012b5f3394645605c0f4aa6f7708f2cd14bb788d934df81fe3b9864b5007f"},"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"}}]},{"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":"a4ed483d6ff7aa532a251cab023b6eb59b0cdbf79799e017e24e93105a8a8b5d"},"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"}}]},{"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":"60ee560d0082c2bd0ba57717dafbde014ca12066991aac7dc7c3c3ecc2eba27a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"9e73c376b6531372d56c373e7ba006413c1e9670b1b66eecf8d45cd0b57811ea"},"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"}}]},{"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":"2ba0c7ad1c6c758e12ff6ee72c55ba8f6e3c7347037d5622c6f7638c3b567e69"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"1cc5ed8b45c185ff02187fbc4cccd98419920d4fe4327312c468fe70b650d1a8"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"bb1921aef1bd655a0a75ea244c3f347ef03f16f9fc56bf2bb36aa36a92a5f4f1"},"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"}}]},{"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":"a5f4f097f36dfda8faad1358c7c50738646516c826c1df474e879c6cb08c18aa"},"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"}}]},{"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":"9aeeaf64f7b395da921a8c8b4ece865a5a4ae0e8db94607b3964957a2afe240b"},"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"}}]},{"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":"92a4ade4e76ff04815b0bc5364c996a6d61743bbd27160e6329153282a264dee"},"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"}}]},{"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":"5078c3a7a6c7c7321c6fe3265e6437bdca917dda94c099d27d30e45b67075786"},"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"}}]},{"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":"bb48380b790dd6c481902d4c5e63943180912839927a72dd68ddde34dd85323e"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"4dabc1ef8433c22a42ab0697f4ff93cd8f542d17e84224e2bc03a5f35b65070a"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"40c98743f59b383faaf36fc979fa024b4a37f461e881c99b0743d2aac8b07c53"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"57408de5c54661089fd28257507100e01134069942021d3ac9698bafb7d1e064"},"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"}}]},{"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":"9547ffe1fe450c6c27db818620d208444635fcb2b5e8020d78e0fe53a6e209e3"},"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"}}]},{"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":"827d52c97e598302d3144b4aa4a0206854b132eccd9863f804afc68604d60c29"},"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"}}]},{"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":"42d8824031c216499b6c4d50e417bff19a715a23bd53989ad9ab288752b7a041"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"891fa081c17c25e18854967ff1ac897ba94bd8200ab15d8a454af86ad158a21a"},"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"}}]},{"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":"89bb37b903bc30f61450a2205ec954e925681e960fc56e28dec9f39c9a5a6c25"},"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"}}]},{"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":"7e70d3d95c8f4c60708589be81d815e8007502ba339f25db916b8a5604fb6fa2"},"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"}}]},{"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":"498684ae265bf7691b5caae6f8ce6e04d8f15a7139526f624f1faa5774ad5ef3"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"92df06dcac64ff14553fa03946d47981e9f11ec92cc4f978b14895ab958b0501"},"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"}}]},{"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":"c11a619f775bd3c99ab6413d39c1d204bd1ea97e352f9d2f8400f4e6a7d86802"},"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"}}]},{"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":"d131c32785c6d67895c6817bf9921917ceefb33faf83aef2f41038eb6e979d92"},"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"}}]},{"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":"571e9d55bbc3decbde2cab5429f68f53cbca95c88fdb6d934823c06bd9b756eb"},"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"}}]},{"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":"2dfc2a4be2e963d49f7e51f5f001fe4c2a4aa942c10bc1de791aa68af613c871"},"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"}}]},{"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":"dd8c2b9a880923d4dec86420d863f6e81bf7657c845ceb51cea60fbb9d4a444f"},"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"}}]},{"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":"c0db6b6402a58dfb5c358e08a4ef93e1628cdc406e610750a655d560b16215e8"},"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"}}]},{"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":"f7944bea8d631891e9309635a038d907b2b0d5f966a4d90cf402e199e86aa1c5"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"b393b3d9e49e94b08546e1659723bd7eadd7a4e2b57eca625dec7e30a82c8a22"},"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"}}]},{"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":"0e569bfd39be9891d0b19f7c09b48ce20c6c8f4bb82298c7ad73b27feaf4e3d9"},"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"}}]},{"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":"3577b5d460a45f2f85a34c317d2bbdc39946750e4d239c3a196c4aa170cf5403"},"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"}}]},{"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":"a76b6ad0dd7835a323580be8bc15bcce1e329c75466c79a874edbab9d4ba459c"},"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"}}]},{"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":"13c5ad28e9789de1746f7626e3247cb0d4914a1fe36671cea83d1f4269a6f958"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"aa035972589d707ee2ed8a0aa9ceb15af47ff7f44f537fd1d06d78ebfee69d3a"},"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"}}]},{"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":"06be6e1df66ca7f426d47d58652b4c5e2f5bc8fc87d5031fd5f36c9d407432e1"},"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"}}]},{"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":"8d72b29f0c80eeb7229a87e94bd298c02b6a1942a54073cb36df2fea1f4ac2c5"},"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"}}]},{"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":"80c19e0e2114d3939b325d084adfe644f297cce1094257bb6740756115cfada6"},"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"}}]},{"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":"11ef5886a93bb490260db06bf72b0543be136e3e155053054bf1d71ba074fdc2"},"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"}}]},{"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":"3c0d36c0d3f6462f36160a00eb730512ea38777e175fb8e9665d690bc0631f9b"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"c2fb54ee606e5bcfb71729fc2e5b24e595396619382ff0eadf7605294a52ac5b"},"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"}}]},{"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":"1d527d59474c5eb6731d4c495a8b02e79c40189a37b876b88fa1b51bfa7f7070"},"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"}}]},{"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":"d3d344ea3fd2bc61e8e2ba02b324b66eca189bf78dc7e9ddc22a7c1e27679b83"},"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"}}]},{"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":"a76e196d046d6cffe33e3da42c302e40078d51ce12bf38f4aa3509453092cb2d"},"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"}}]},{"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":"a0a29a937d896339597c3e049ae11717158976bc7d1ea33069e367419780ed6a"},"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"}}]},{"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":"e8ee1e8daefe053a47a746e18a42131c85c0e592eaf8aabe28d904fddcb74a65"},"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"}}]},{"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":"2c20f49f600db788c670f5eef7f5985835e3c5a143f074d7d763bdf8f159fe53"},"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"}}]},{"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":"5e819e6da81df484722a4bbeee3cf18234cf23f1ff1ba8ca94994925432e851b"},"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"}}]},{"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":"50ce914c719ac32cbc875b36d32c4c5ae9cd5f4ee330793d1c40fa0ba387da7d"},"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"}}]},{"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":"985e3972eb750e7abf50b34d02d563023b7bc1a5b80d20ee0fcdb1bcd7a473f2"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"039fe317ebbe83eaeefb4cf181a4b6b84a1924de6607098ef5f5c67f2d057df8"},"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"}}]},{"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":"9eafdc06b4e215be7425c64e5f5fde62f73ad5566b3eb89733ad21a26d3ba591"},"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"}}]},{"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":"288078a56a5eee6b28a7670d8a7155ba9d478f4e9b5f169eddec93d280674b9c"},"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"}}]},{"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":"94740878708aba0bf1d5de81b0849199b8a02b5640a4690145fdea821b6a96b0"},"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"}}]},{"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":"741cd62944a37ae8e265461ad0cdcb0270cff320cd5a44cbce80c48a0f5126b1"},"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"}}]},{"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":"36d2175638ef678cfbd0f6d84a1bc236190e6cd13a76f62b0e84dc2329fe604f"},"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"}}]},{"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":"0cbadc264882262c48ae58dce59663ecb05696252101fb6e7caeec483dc52a69"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"05cf42b4f51fba6daf84efac11e7d41b16a67361b5a509cbbbf7ff4c5ca033b6"},"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"}}]},{"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":"39f00176b367acea654d6e5b6df16652d8877d52941d09f1b2a88b31a7e6d3d8"},"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"}}]},{"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":"28307217e1d62b2831eec691b5cae5011ce01a7c2e0fb87fa8ba80c91ace5fc1"},"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"}}]},{"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":"f27712713be0964fd2475961be3dba0c3f43de936e3e8f2ace38d71a0d4f8d0b"},"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"}}]},{"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":"4b36c9b27fd8e8a80fba92a8fa46b50534d50b27ad40bab58cba0dd207973880"},"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"}}]},{"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":"8f4f1cb653f629abd8fc6039b567aa6a298ab88b0d9e7ad44f10b9ef1410e492"},"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"}}]},{"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":"cea96af5cccc6fa9e9bcdf3ad1178be9b289b43d6636bed1792584f68ac2113b"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"2e60f49a2e19a52e0a35379b271a5a5f005d4dc10115af7e809d6759838d4279"},"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"}}]},{"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":"df9121b4ee37d73eb063e057266345edbc57c5ea2d8611b9b6254038720a5624"},"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"}}]},{"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":"6815aa94577a95aa95b22a67c6d0aa6d7ec2e3aa84ddc1e25eaae7bed8688c70"},"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"}}]},{"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":"aa75c0d2d44e97dbc23ddbcf62ae2de08d2dc4ce9e21d277600f93231ac41fc0"},"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"}}]},{"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":"06eb18f9cf12841a6f8099c1d2f8cafca93bb9f2a88d9d34c6eba469db33b0de"},"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"}}]},{"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":"d67fa083ef83dc97cc213f971c237de1eeee94efc1361c2a13bf3e26d8d2c7b9"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"6b6e3abdeaa5fae6e1354b80d55ec2972defaab8e302d61f606424554cc2ee12"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"e84742f6d1a31c314632d3deb510fc70610df5e37b1fe3823d1a37d24b4d572d"},"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"}}]},{"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":"54ad8cb874fe71bedef69a4068a83e9798d52a76f99129f6be1a030dc565a15c"},"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"}}]},{"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":"28d8bbe6eef11709ab240775cd03f846a4b68a16624484795f7366e57d228195"},"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"}}]},{"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":"4952b1d1db7e8b43ee7c001cbd866672bcbeda23c479ce990ae42a540f8b19d5"},"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"}}]},{"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":"006400589d603ec8c583f81a2fe180f8059271a7eb647cdd4f3919c6099d8f38"},"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"}}]},{"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":"dae05abcd4c334f202d79590f17de16649658979d99fd97675911db4c6e3f028"},"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"}}]},{"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":"149d838d71c4bbc0eb733a0a87f0dd23983d2b2a4248cdae068ea1303caf501a"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"c5dbfcc6ebfe018a364c370b0850c0269d9a5639f802231786f0408b17cc0162"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"06346a2c749fd9161c81eafe612ea6027d2c0c351f8d9fed1dea2ca33454b9ec"},"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"}}]},{"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":"4163eabfbc1e4686abaecc6ff27e0fe362e725a1d0aa41aee516555739c0a27f"},"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"}}]},{"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":"cec38763b661f9dbd3ae16fc60682a54bd2f6d73a1d4270324ca404bbe240183"},"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"}}]},{"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":"5a7a980981a071b9023ebd13f93a9fe62fa50952e4a606324ed66992efe906da"},"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"}}]},{"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":"5f7a937591c65a9d662c3696a26e896a0345a0384e73d8173b611070b1340a65"},"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"}}]},{"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":"0b96fdfd02f90fcd60b070443de28c7d4b9cd0bd2477c14568c0bdbdb6ae45e2"},"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"}}]},{"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":"820220c8784234ed0665827ac89e7f0190b888ca32f7c70ddd391841d64f6c8f"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"487d7cd619a2cb30e67b391344034b990ffd46bee7297c51150993b1369979e9"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"717fa06513e3f8480ad4f851475c4d77f29c14fdf7f31a644f7e7ddae204afd5"},"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"}}]},{"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":"f956fe82ac98cc216868aabfc7dc85a60af744afd32eccad7730f9818938505f"},"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"}}]},{"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":"6776f9b37c08d94c7a682cb09378cfaafc71e60369f1c8fa9c147d58a873cfea"},"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"}}]},{"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":"1806d9cfe2d2de1fc3b3062dd917eec5fe50919d088f387cf4b3443f02abfc72"},"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"}}]},{"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":"adb120399c2a36e35be64e99ea5af9b60776e67a351ce22955877f7e663668eb"},"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"}}]},{"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":"537aa67240e8de0ad80fba35ab7103f355f85b87bba9e4137d87e3f8bc07dfb3"},"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"}}]},{"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":"025f30d24cdf7350c574a38f7026f9dd88bf1967f479bc1710c5845da0ce3a0a"},"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"}}]},{"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":"e5a6ac82a61cbdf6dbec5c999f8d0b4f76bec6e10d5c529716d99b2a5b486a1f"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"d64d5cafcbe2a7fb02c412ea222f274aa78dd9779864b525804e857584dcd2e5"},"taxa":[{"id":"CWE-522","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"6d04e609b46aeb52db6ab0c19c7e0ee926c747492cba2f9b18431f4fd61d42d8"},"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"}}]},{"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":"94a69cace6c4878b24127879d25b613a1f9dcbecd08f19a5ffdc01ab955e6e7e"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"73c13354c7b64b44f579fa46f34721aa8ddcc54660d133ab3cdaa64ee316e845"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"be53e1e30a161deba3f9cbe499d5ab212f240e663e92f6975235b2d204c4967d"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"40ecb4189901c1134e913d8e41409acde1ae783c17e18b3dd2d8eed2d78f95e0"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"d8e6c232c10a6931d2d0827543343555b8f824f3a5c1b612584a53c1a062d375"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"81a8f5a69b66cc24ee19885616fb815cb48d5225698ed2457ddd7a68bfc8fe90"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"584d3e19bac1e86bc84140ddd883ee0c2126a899c4e129276d970e8003cb1855"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"6f6fa7e9c464b67168f1d64fd7cf6c4c17eaf07f19e97ec9717b65d70a8705cf"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"041a440aa3b6cb868bf7c7894ab537c0a0def83fe654d426119298802325808d"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"7d2f71038c5c8090fcbaab816b2505708f3b1812de160dafe81926dd7b481f08"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1329","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"957d6d88eef03c6a56480d877a14d225c877c68e9d03e1e363700bd7bb54998b"},"taxa":[{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"42d4a45ca0bf1effdfe361976716c8af5f20924ac441cfccf4cff418ff83ad98"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"160174993ec834bb5583d833f9f3d116aa489531bfc622e4ebee67178e912773"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"f0057a0bd8343bd192e2c93437d9d2d4fb09f8a687b8be51dbd8b1aa51e9733f"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"f5f66857a62b4cd5e31f9db11cf8fa539670c1df074e16b1986af6e5fda76642"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"59bebeb504c363e2322df46b5a12efa129cddf313b942f5ebf07acaa229f6caa"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"2c1b907dc5b98c7f7747f35627ab869403c5dd9b6d0d460c35ba7bbdbd8495fe"},"taxa":[{"id":"CWE-191","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-248","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"8d5180afd49c83db803110c0015fa7223c90881dbe38e91972fa231f8e240d57"},"taxa":[{"id":"CWE-191","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-248","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D30","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":"f7ee44e8bb5d6e0d8dc51aa91afca2d78528195b45761ebae8ac6d4443c71897"},"properties":{"dependency":{"package":"axios","version":"1.13.5","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","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":"bb4d56abdc19b6a7bc4490a791c433086e4c55fe3cc780641857f66ad8015682"},"properties":{"dependency":{"package":"form-data","version":"4.0.5","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","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":"0dd09d90a1fec785b90d68fa067c648bb29b96ffc045a560cc48769b44f8f519"},"properties":{"dependency":{"package":"lodash","version":"4.17.21","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","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":"5d3c7fd8624934e63fbf2dc83b029768c3bb7fb4c0209662135f299dad54d401"},"properties":{"dependency":{"package":"undici","version":"5.28.4","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"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":"bed5d955ece345b68cf943b90a471ab0a206650892fc566e61a5c4342ed2b576"},"properties":{"dependency":{"package":"follow-redirects","version":"1.15.11","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"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":"807f8246bd6992efda4fb0308eb9f64218ed9c0576609446438616eda18fe2cd"},"properties":{"dependency":{"package":"protobuf","version":"2.28.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","RUSTSEC-2024-0437"],"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":"ac07f6d7edfd49261e66a0ecf670dc83aeb27f637d0eaec58b89ac41744f7835"},"properties":{"dependency":{"package":"rsa","version":"0.9.10","advisory":"RUSTSEC-2023-0071","aliases":["[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"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":"399b641a1002e75c8bff8b9c396c66ba0c165468034e5af1632a4a0b59ea9a3e"},"properties":{"dependency":{"package":"ansi_term","version":"0.12.1","advisory":"RUSTSEC-2021-0139","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":"d16a195f2692c30c6739c7ce8896426c6177603bb31aa1a2f55c80769aaed29a"},"properties":{"dependency":{"package":"dotenv","version":"0.15.0","advisory":"RUSTSEC-2021-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":"5ceb9040e13548b3df718b94867858f8e5659519eb178fbf2fd0e4e23343e0da"},"properties":{"dependency":{"package":"yaml-rust","version":"0.4.5","advisory":"RUSTSEC-2024-0320","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":"f48cf8c9f415048128045caa118a1e03769d0b4fe18d7f036c2f3766e3e8d8fb"},"properties":{"dependency":{"package":"instant","version":"0.1.13","advisory":"RUSTSEC-2024-0384","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":"aa275dcc581e31816223ff250817b0083925776ca9db8bc9a83879cc85b97f8d"},"properties":{"dependency":{"package":"derivative","version":"2.2.0","advisory":"RUSTSEC-2024-0388","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":"5922a5beeab5ac077ffb485a783ad545036e79b56239f83da38f3fb84336b113"},"properties":{"dependency":{"package":"paste","version":"1.0.15","advisory":"RUSTSEC-2024-0436","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":"797ec891dfd99b7619050a86882892acbf3f86688cb157c579039ad688d6ad76"},"properties":{"dependency":{"package":"backoff","version":"0.4.0","advisory":"RUSTSEC-2025-0012","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":"a42ca7416279f52063a649dbc505340ffc7c7a5727193e601ae1de8d6db75e3d"},"properties":{"dependency":{"package":"fxhash","version":"0.2.1","advisory":"RUSTSEC-2025-0057","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":"c87253cbc8a13dc1ad4e010195e2c681e33b98d2a471515dedebaceb1cf10c4a"},"properties":{"dependency":{"package":"daemonize","version":"0.5.0","advisory":"RUSTSEC-2025-0069","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":"705e8761c5e609601c0419d94a8bad1aeb6aee434f48ec4660c92e8bf534c9de"},"properties":{"dependency":{"package":"number_prefix","version":"0.4.0","advisory":"RUSTSEC-2025-0119","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":"b5524f25221308ec94b7206b58afaa59996104c20abaa242285d451f5344e44b"},"properties":{"dependency":{"package":"rustls-pemfile","version":"2.2.0","advisory":"RUSTSEC-2025-0134","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":"1.3.3","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":"aaa86fae8d91e7111ff2baad1a374ae0d14fc8de7d623061f570a68e9ca56760"},"properties":{"dependency":{"package":"core2","version":"0.4.0","advisory":"RUSTSEC-2026-0105","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":"d469c4cdd0b2892278c4ee90c01a5a8ea4872a98733c483777e04c904cfebdfc"},"properties":{"dependency":{"package":"proc-macro-error2","version":"2.0.1","advisory":"RUSTSEC-2026-0173","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":"aa4e9dbd55c5da8a7ce1213699c94cec4744fb072e1143384f280c9243d97ef9"},"properties":{"dependency":{"package":"cgmath","version":"0.18.0","advisory":"RUSTSEC-2026-0196","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":"4561cee9ca2143c9cce2e1b7ba9f32d659958e0d4e9c920ed0ca82f42f070a05"},"properties":{"dependency":{"package":"i_tree","version":"0.8.3","advisory":"RUSTSEC-2025-0165","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":"d44a25813d8a9e18eb42fa5350a972c298292d454155c6472f091bfb670363df"},"properties":{"dependency":{"package":"rand","version":"0.8.5","advisory":"RUSTSEC-2026-0097","aliases":["[GHSA redacted]"],"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":"9985e934bf5258966ba30771d636042c3373acbe5f9699173950198ff207d4c4"},"properties":{"dependency":{"package":"git2","version":"0.20.4","advisory":"RUSTSEC-2026-0183","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":"1eae401a2a8770be38f5a54c3afe36fa4464ebe4004c5fb285ffaa2f1ae4d5b7"},"properties":{"dependency":{"package":"git2","version":"0.20.4","advisory":"RUSTSEC-2026-0184","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":"3d5ef79b6916b68b0d9f114d8cc8ba1e52f4f6ed31cc78cdab647b86749f42ba"},"properties":{"dependency":{"package":"memmap2","version":"0.5.10","advisory":"RUSTSEC-2026-0186","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":"319f162b3ed0aa323f2886fab74d2c7d88c01ee2d1ce481746ea534136e8a9a4"},"properties":{"dependency":{"package":"memmap2","version":"0.9.5","advisory":"RUSTSEC-2026-0186","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":"22103337c108f7725faa402b805f550bb267c03fb87172f3e9605ea9898542c7"},"properties":{"dependency":{"package":"cgmath","version":"0.18.0","advisory":"RUSTSEC-2026-0197","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.0","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":"422864efbc32ee020d94634a443edac9d818b90faf02ac96d91c4d66ffa4da37"},"properties":{"dependency":{"package":"lru","version":"0.16.4","advisory":"RUSTSEC-2026-0253","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":"7ef5bcf4cc8a922563e02ef01051ddc0ce278f7749db46d4fcbd006a44d77189"},"properties":{"dependency":{"package":"quick-xml","version":"0.26.0","advisory":"RUSTSEC-2026-0194","aliases":["RUSTSEC-2026-0195"],"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":"406f1f4b2ae61a4376322c991cc8973fae33f5100f511e8c1db60edfa0437913"},"properties":{"dependency":{"package":"quick-xml","version":"0.37.5","advisory":"RUSTSEC-2026-0194","aliases":["RUSTSEC-2026-0195"],"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":"c4a0c58aca13bc848c37d4c3d5bcb90f8e046f8df5b386f5a3743d0625ad8dae"},"properties":{"dependency":{"package":"crossbeam-epoch","version":"0.9.18","advisory":"RUSTSEC-2026-0204","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":"f33134b914692cd6c5f119efdf542f3d6c34c918da971c9cc600e5d39c46efde"},"properties":{"dependency":{"package":"rkyv","version":"0.7.46","advisory":"RUSTSEC-2026-0235","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":"1be0220e1fa221ea274d30abdd6b4e473172e558c80e87aecee355dd31489ca8"},"properties":{"dependency":{"package":"webbrowser","version":"1.2.1","advisory":"RUSTSEC-2026-0257","aliases":["[GHSA redacted]"],"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":"8628c9c79027c893121fcb338f707b6a73a4d31f30e413f3d90107e00501efeb"},"properties":{"dependency":{"package":"h2","version":"0.3.26","advisory":"RUSTSEC-2026-0258","aliases":["[GHSA redacted]"],"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":"9bda1f8b53975c0222cf400229b5ce4f822b2ec3d890aa2d3aae17d670ef5c3f"},"properties":{"dependency":{"package":"h2","version":"0.4.11","advisory":"RUSTSEC-2026-0258","aliases":["[GHSA redacted]"],"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":"3035e85b1a9c0c33df37dc333f490439b3fa52aefda24a401e2e75a177cdf778"},"properties":{"dependency":{"package":"rustls","version":"0.23.28","advisory":"RUSTSEC-2026-0285","aliases":["[GHSA redacted]"],"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":"bc74aeb93cb84afefaf1d7707cec40d278b76d761a0d15116de21a2efc4ebdd3"},"properties":{"dependency":{"package":"domain","version":"0.12.1","advisory":"RUSTSEC-2026-0310","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":"fe40f8ded459e1d0e82ca5980e9648d72172c7c4953823847d9bd4d00b65637d"},"properties":{"dependency":{"package":"@octokit/request","version":"8.4.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"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":"40e14e3dfdf0e94c38389363efc812dfd19d030833bebef19d9763ad0e0ea14c"},"properties":{"dependency":{"package":"uuid","version":"8.3.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"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":"d44539eadbf9a59e38ece3a15d155bf574a871250c31ba6b06579f1c138ebf84"},"properties":{"dependency":{"package":"@octokit/endpoint","version":"9.0.5","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"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":"e672be2c75ce4c6cd2cd9c6c12d7506e4da154c74879096b3b3292d19db6e10f"},"properties":{"dependency":{"package":"@octokit/request-error","version":"6.1.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"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":"b4892de78a8fae11c26408605fabbb7509836f55f067e8677f06e8da514b909e"},"properties":{"dependency":{"package":"esbuild","version":"0.20.2","advisory":"[GHSA redacted]","reachability":{"kind":"not-imported"}}}},{"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":"f4186f1caa476e28ee06e1071fd84f10057af281b6bcc4fc55fc9acb79fb8045"},"properties":{"dependency":{"package":"@octokit/plugin-paginate-rest","version":"9.2.1","advisory":"[CVE redacted]","reachability":{"kind":"not-imported"}}},"taxa":[{"id":"CWE-1333","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":"0c265efd12e33baf575bfac91d6bd400a825be88023f395cb5daf553af286344"},"properties":{"dependency":{"package":"@octokit/request-error","version":"5.1.0","advisory":"[CVE redacted]","aliases":["[GHSA redacted]"],"reachability":{"kind":"unknown"}}},"taxa":[{"id":"CWE-1333","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"c315ebf5d6845e9675d064ff8b765608943b419e86cebea906dba10ccd6d7f93"}},{"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":"fb87ec5e486be91de5fb178dc084666d9dce52d5adf3a8abdb16c1b372044c3e"}},{"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":"c89c626ea13f163ec63399158e5fb5fb88a0625b9bb82d779438cd34edb349a2"}},{"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":"eaab9467c6907dfd03defa2057aef3cbe306ad8fa3f69035903d60ec9f1160f1"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"d023da135a756e99dcd771a7a1ddbaf73f4ef5da80f9126c8e80171ec7e9ccd3"}},{"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":"7348bf9d1b0332aaad2dff902d5a847f8b06f5b4ccdf42a309bb561e7dc2abf7"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"898c01206ef0a4695a0b78e2053ad1b90e80d2b7e64cc66e4c560618192f98e1"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"15e708a458d3cdf3002996867485b48e3bcd4f3ca91c330fc729069e22518b3e"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"c2c02152a6503d7d839466466b9e3f7593b250e8d4a6593fcc163b3defc48ed1"}},{"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":"d8bc2ca17038d643a42986cb2a896012bc1de140e360ba03d8830bf6d59ba002"}},{"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":"496f63074777c5c37945a1e131df843a50c7e3991df966b83404a5997567d95b"}},{"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":"e1a22676901484ab68c83bcfed8d51e34d2276586079f1b5f59d643f8e89f157"}},{"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":"70a1c879e2cee46b2500447eb78343558f99d7aca71b4c08013ba6c74b2bbf48"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"c352a290659e8a795c00594ca38265425407c61d168e8932251f02c0c51440da"}},{"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":"fa7d0b02cfffa01b30470d632543a71de27e44d8330e6ebdcd54289bae4a6e1c"}},{"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":"dfdc91b77bf14192f7300cfea53420860b06838aca49fe4c70905d0fa80b9793"}},{"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":"36dfbade13e050130c8566be11e3b4c032142037809213f94c1fb3721a5347b6"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"9a8285fc336d11885d6ead144bc89163dd69ab19dc09501638ac71f4cb1963d3"}},{"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":"dd21c900366d7db7b8dd7eb09fa638d2be7c12ec4fd96f6a3b68a5007f09c87d"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"032a9d6f1078f55b06081eb0a3bd6c331158bd588e921bee8f5e52b3db6ba803"}},{"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":"46806e3ec5e6fb443a46cffde8901df113935d0dc7b44b75cdf415ab937a4fbc"}},{"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":"fecfb891822a49f84e5fcbec8be6c285dab6550980bcacc86d699bd9550e7a1d"}},{"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":"a491af5cadfe58393f6a5a193c880e9b9d411a4e2b8751ca93d8bfa978dceeb4"}},{"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":"392e9a9279f0d2d9f654abfe934cc4467c0eaecb2d9ca1214914b13a41e88bc4"}},{"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":"30a4c82af28230936413f0a4eb18e949a97e434e74af318d012cc1ca21d5c77c"}},{"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":"c2725678d3b09e68f7c0aea6ec114f2156e69b42cdf5363c421590201981b7ea"}},{"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":"04fab85db1ca1236093390ba634611afdc15b7a8e529731715b543f9a7bffff7"}},{"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":"dbc60e2b48640d30a69954441cbb0b6ab96953b43ca642e418412359b5ab02ab"}},{"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":"9b37f35dc4cd0bb6fb90c792d39a729cea6cdcd88763421e7e741d916bcce3ad"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"79398b2de0221ff0dd2bb1d8a16174c574a87d40d42fded07188f2edaee4811d"}},{"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":"571095c118c30c42344e318543cb39dba6a2eadc4848242b04518115a8452406"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"f0892271cce1fdbc172b0986858ad2a89e339f6b21d1b68c5b64290ea5974360"}},{"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":"ac1c43e3ab001559e18196fa1d9e85bdd6727021f8227c3147248258400c84ad"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"d633cf73451e5635dd2870e2ea991e0842c971abd7e4a5472b66b62583fcf854"}},{"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":"8ab4d15b1030a0d871b61dbe85b1326f25da9854b2754dac7ecb149805c5b0f9"}},{"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":"c0a1d92d1d98cf9aa3b37300fb34275cf2959f4ab371e5fd248f12d5612cae00"}},{"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":"23b1006b5f72385bde24371bb651fa9c5100aedaf01b2fa01fd477984e242218"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"36dad105a42122d6fe9dee2a889dbd4fb8e949af151905bfaea45677ac91c0a1"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"5ac3332f86b5456dde2341d45e1a82d412da9a261e8211d38db9ae5b84dc386d"}},{"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":"755fd2b91ee32eaebfed1c9c80d88e302fe918cae6afebd4912997ee3aa62c20"}},{"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":"6490310397d16504b5666deec45733df8029b13c716fff1bd4ba9ec38efdf277"}},{"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":"300bf9e3b442abfe254bf5d2ee6e450c10e1d29398c3e92dc0dbbe95a06606c2"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"18b2f7a8ec9bb1ff61c76319626b3d108dd06572222387d10cdb782b1c9a6a78"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"09f2aaaad89cfa4ef7c6124bde9159eede19bdc6a3ec9a69800903931640cfc8"},"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"}}]},{"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":"299c6a2dd3f7dd5193cba60dada0c2f92dc8b0fc3ac7bf89ff003e3e4045da47"},"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"}}]},{"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":"72ee3905aae6e207925ef1edc6f004a2b724f5c5322f7026e3c5bb9d57588b94"}},{"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":"74d2c53521f0b4e94d1ca40fb080e79103d73c41c4921de59ea843adf1add9f2"}},{"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":"b522d3935ca5a04505dc8f5eba856920f806c216c88ae0166cf727f8ac9d5d4b"}},{"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":"2ec92b600250ad62aef49180a195c560d113300a58e88a06d0358f642b98ca8e"}},{"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":"67e759fb396a0b39d3e9f52690c9acfaca3878172ee0d3d6123ef88e51f12342"}},{"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":"a5f122e2aae0704a656a0c24a0b28fa5a00dfa8375d3235caeb5bacbebeeff0e"}},{"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":"4a42430c4115cbb85a75d6b43f5b3c7eaca2cad23070c17ed8df5993985c1a87"},"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"}}]},{"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":"f163d35405444a53f2b4276b2e6d61b04c1c747c9284e424f1e4fcf75cf81410"},"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"}}]},{"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":"91f1f10ca46d00b3421054a9c8fe781270c2dc49de4961262e8424368441de8a"},"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"}}]},{"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":"2fbd0abc34514d0b4e5d09a84769b4e749d423dd32b4b6c0f8fb0f38def230d4"},"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"}}]},{"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":"a4451a5b2b5026f67e4ca4d0f422fdf8ba73cd77115f5b3cc7ca2653e882ad34"}},{"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":"68b27348cd14b12f50a488d6e0d4dee27d101a677caa1b4bbb738e1f94baf09c"},"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"}}]},{"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":"403db7cca3f378a87b08b23ab8c82c1d27042c31a6ae81947126df9acde73518"},"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"}}]},{"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":"847d9ac2a58d1b39d743cfbf5963714e5b67ad077db28fb41b025db8699cf10d"},"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"}}]},{"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":"077141bdcc7e05f963a54de299a8fc4f41ad3e6360b2c63154f96c57992da987"},"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"}}]},{"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":"8d959723ad34b72ef8b6fc171f63607f96bcd9293820e887ed1779bd6d02cb9f"}},{"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":"0ca3e38802c0f2416e21fec2137a6385db551de3238a509e4d6912e124c4a65e"},"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"}}]},{"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":"ef91488ce466636ce4d3fc08f2eb00fad0bd58fa9ce75d60910ee032f22da8d1"}},{"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":"00c579c39baa92ea532a84dbb22760907fdf9decc0e0299c0a1adb704e9575e9"},"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"}}]},{"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":"607563e8a3164c5d62d355706d0ed41ec7245b5d0cc0065b13d31b42523df742"},"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"}}]},{"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":"aca2459b2b491ddff5775118a0ce2c5556cfe0090414ac4033bc93dca3d4fc39"},"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"}}]},{"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":"86fc7cb8d1c8982ae4fb54f74e584cd2cae20ef42ca499c3cda4405bc4c4809a"},"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"}}]},{"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":"beef31c8639314ae6ecf881f0f359758af66b5e731e0c327029bf993d95db8dc"},"taxa":[{"id":"CWE-426","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-693","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"fe77aa9bf3977d364f7e13f4a45b29134208f5413104f1ea7820b351cdeaade7"},"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"}}]},{"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":"53dcc876cfe96a12983a7cfef7c133ed6a209351ae90986dfd0de8f65870a92c"},"taxa":[{"id":"CWE-426","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-693","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"18838fb799dbefd24cd03df7f4d95c40d0894cc1576e7e2a5a65969b9f63b320"}},{"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":"ed097957dbe2bea96d642ca969150dd2f9cc035abc2cc5a020c24d487630c786"}},{"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":"fda7aaec1b5cfc802c777ae673da0456151c2bc690c0cc9a45af715ddd5cebce"}},{"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":"7927ebb9ab734f740fe10374847d22ede984c98943fec606e0352f7c855253b9"}},{"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":"abb4e47bad9f39a19d124bd7ab32066a213c6760f685c590fa77d9532805ee20"}},{"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":"ef73bbb352408a239657a97a34191ba42bfbd4497a956609fbef2dd54dbfa65f"}},{"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":"4ef9b48e6bdd33895d44aafd1100b8834ddabfeeeba3b50bffdb43df2abc4306"}},{"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":"efad298501e279117e31ffe720299f27633217d0644fe44779b3ddbc2dd97e5b"}},{"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":"43fd364f1247e060017dd9489fa3fa40d7841d206f3dfff2db4c78c9c52fc148"}},{"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":"c3dbee45f9843b5af7dd5c8904d211ca1966c853999aa2bc31bc5b89caa4e724"}},{"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":"6951041d470d759b771666cd2674ad95f20542899e02a289f8c30b7e8320da6e"}},{"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":"571b97b5e41affd1056f84673dc73e84eb4ebb69eb6cd36f3878d6a3ffd8c48a"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away, so if it breaks, no one currently understands it. It does carry its own tests, so the behaviour is pinned even though the understanding is gone: schedule a read-through, using those tests as the specification, before the next change lands here."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/index/src/bitmap.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f102af868f3f401cde414a7e270de0217941edbee0820edda3131047359b0952"}},{"ruleId":"D34","level":"note","message":{"text":"Further orphaned files (smaller): 70 smaller file(s) also have no living knowledge \u2014 folded into the freshness score and metrics rather than raised one row each \u2014 most significant first: src/common/decimal/src/decimal128.rs, src/index/src/inverted_index/search/fst_apply/intersection_apply.rs, src/index/src/fulltext_index/create/tantivy.rs, src/puffin/src/blob_metadata.rs, src/index/src/inverted_index/search/fst_apply/keys_apply.rs, src/index/src/inverted_index/format/writer/blob.rs, src/common/stat/src/cgroups.rs, src/common/base/src/range_read.rs (and 62 more) (71 orphaned of 1584 analysed files in total, counted over production source files of roughly 2,400 bytes or more, excluding vendored, generated and example/demo trees and test files identified by path convention, largest first; 1584 of the 1965 production source files in this repository met that bar). Attach the read to the next change that touches one of them: have a second person review that change, and leave behind a short comment or test recording what the file is for, so the knowledge comes back at the cost of a change you were making anyway."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce861fd78f6935114d3a342cb90ad25870f984e1042954fcbbe27c0e23be3658"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: table_names.rs \u2194 consts.rs: \u0060src/catalog/src/system_schema/information_schema/table_names.rs\u0060 (context catalog) and \u0060src/common/catalog/src/consts.rs\u0060 (context common) sit in DIFFERENT parts of the tree yet change together 100% of the time (22 of the 22 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 22 shared commits counted here, the most recent 3 are \u00607cbd20a0\u0060 fix(mysql): strip leading comments before the federated statement fil\u2026; \u0060cabc2f6c\u0060 feat(flow): add information_schema.flow_statistics and SHOW FLOW STAT\u2026; \u0060bbf989ac\u0060 feat: support soft-drop recycle bin and UNDROP TABLE (#8546) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/table_names.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"06221525cf145dc197e83e4d15b3d9c08eeb0819ddeba841d61a53066e77b591"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: engine.rs \u2194 test_util.rs: \u0060src/mito2/src/engine.rs\u0060 (context mito2) and \u0060src/query/src/optimizer/test_util.rs\u0060 (context query) 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 \u0060294f19fa\u0060 feat(metric-engine): support sync logical regions from source region \u2026; \u0060f7d5c87a\u0060 feat: introduce \u0060copy_region_from\u0060 for mito engine (#7389); \u00606b6d1ce7\u0060 feat: introduce \u0060remap_manifests\u0060 for \u0060RegionEngine\u0060 (#7265) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/engine.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfcc9f0aa9b5d047d4b8c760bc535992b8fb12d63929cdd79ce1441da7e2c29e"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: engine.rs \u2194 test_util.rs: \u0060src/file-engine/src/engine.rs\u0060 (context file-engine) and \u0060src/query/src/optimizer/test_util.rs\u0060 (context query) 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 \u0060294f19fa\u0060 feat(metric-engine): support sync logical regions from source region \u2026; \u0060f7d5c87a\u0060 feat: introduce \u0060copy_region_from\u0060 for mito engine (#7389); \u00606b6d1ce7\u0060 feat: introduce \u0060remap_manifests\u0060 for \u0060RegionEngine\u0060 (#7265) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/file-engine/src/engine.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bc8adf428fda5ce8e9f9f0c9e864a494bc50b68302c31007cc9cc533301e2fe"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: tests.rs \u2194 test_util.rs: \u0060src/datanode/src/tests.rs\u0060 (context datanode) and \u0060src/query/src/optimizer/test_util.rs\u0060 (context query) 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 \u0060294f19fa\u0060 feat(metric-engine): support sync logical regions from source region \u2026; \u0060f7d5c87a\u0060 feat: introduce \u0060copy_region_from\u0060 for mito engine (#7389); \u00606b6d1ce7\u0060 feat: introduce \u0060remap_manifests\u0060 for \u0060RegionEngine\u0060 (#7265) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/tests.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fdb3c0a7ed3ef5773c88758955bd349fe0c03d2ffa027acd01683aeddb29332"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: region_request.rs \u2194 expr_helper.rs: \u0060src/common/meta/src/ddl/alter_table/region_request.rs\u0060 (context common) and \u0060src/operator/src/expr_helper.rs\u0060 (context operator) sit in DIFFERENT parts of the tree yet change together 73% of the time (11 of the 15 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 11 shared commits counted here, the most recent 3 are \u0060045441e3\u0060 feat(json2): support altering JSON2 settings (#9029); \u0060b6cef77a\u0060 feat: add \u0060SET DEFAULT\u0060 syntax (#6421); \u006071b564b4\u0060 refactor: support multiple index operations in single alter region re\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/ddl/alter_table/region_request.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c88456547cfc7d605277f5cad8debea96a72a5c24e5289de3de765e9837fba1"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: etcd.rs \u2194 metasrv.rs: \u0060src/common/meta/src/election/etcd.rs\u0060 (context common) and \u0060src/meta-srv/src/metasrv.rs\u0060 (context meta-srv) sit in DIFFERENT parts of the tree yet change together 71% of the time (15 of the 21 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 15 shared commits counted here, the most recent 3 are \u0060c8c2e09e\u0060 refactor: move election trait and implementations to the \u0060common-meta\u2026; \u0060cb0f1afb\u0060 fix: improve network failure detection (#7382) (at that commit the file was still \u0060src/meta-srv/src/election/etcd.rs\u0060); \u006016febbd4\u0060 feat: add CPU, memory and node status info to \u0060cluster_info\u0060 (#6897) (at that commit the file was still \u0060src/meta-srv/src/election/etcd.rs\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/election/etcd.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0570b6333e4d08f34df611a20ae275df2406e0bbf31bd771f57e285b0a12a835"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: copy.rs \u2194 requests.rs: \u0060src/sql/src/statements/copy.rs\u0060 (context sql) and \u0060src/table/src/requests.rs\u0060 (context table) sit in DIFFERENT parts of the tree yet change together 67% of the time (8 of the 12 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 \u00602ad50332\u0060 feat: impl COPY a query resultset to external file (#5250); \u0060f93b5b19\u0060 feat: limit total rows copied in COPY TABLE FROM with LIMIT segment (\u2026; \u006016c1ee26\u0060 feat: incremental database backup (#1240) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sql/src/statements/copy.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e77975ee58afd4fcc5e649d1656b9368e3e2696fe8af9bae29172f2053e84e68"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: memory.rs \u2194 backend.rs: \u0060src/common/meta/src/kv_backend/memory.rs\u0060 (context common) and \u0060src/log-store/src/raft_engine/backend.rs\u0060 (context log-store) sit in DIFFERENT parts of the tree yet change together 64% of the time (9 of the 14 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 \u00603d9df822\u0060 refactor: refactor \u0060PgStore\u0060 (#5309); \u006072897a20\u0060 chore: minor refactor on etcd kvbackend (#3940); \u0060a260ba3e\u0060 feat: use txn to impl cas (#3936) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/kv_backend/memory.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a0d4a8176dfc63866feca17890da0e3a027c5b297c2dbedcf989606b997f94c"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: seq_scan.rs \u2194 parallelize_scan.rs: \u0060src/mito2/src/read/seq_scan.rs\u0060 (context mito2) and \u0060src/query/src/optimizer/parallelize_scan.rs\u0060 (context query) sit in DIFFERENT parts of the tree yet 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) \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 7 shared commits counted here, the most recent 3 are \u0060b32ca3ad\u0060 perf: parallelize file source region (#7285); \u006073ca39f3\u0060 feat: time series distribution in scanner (#5675); \u00602fcb95f5\u0060 fix!: fix regression caused by unbalanced partitions and splitting ra\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/read/seq_scan.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5444d4a346466343d265e8f59bfd99ef94f7a469615047616b71e562e220493"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: builder.rs \u2194 options.rs: \u0060src/frontend/src/instance/builder.rs\u0060 (context instance) and \u0060src/standalone/src/options.rs\u0060 (context standalone) sit in DIFFERENT parts of the tree yet 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) \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 7 shared commits counted here, the most recent 3 are \u0060953d01ac\u0060 feat: support pending rows batching for MySQL and PostgreSQL (#9302); \u0060723da69b\u0060 feat: share logical table batching with OTLP metrics (#9288); \u0060263e2291\u0060 feat: add experimental Metric export to V2 snapshots (#9233) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/frontend/src/instance/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"37aa7ee95101dae93e52e017372ef53ca04157117b855d99182db59a723bcb6b"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: tests.rs \u2194 engine.rs: \u0060src/datanode/src/tests.rs\u0060 (context datanode) and \u0060src/file-engine/src/engine.rs\u0060 (context file-engine) sit in DIFFERENT parts of the tree yet change together 62% of the time (13 of the 21 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 13 shared commits counted here, the most recent 3 are \u0060294f19fa\u0060 feat(metric-engine): support sync logical regions from source region \u2026; \u0060f7d5c87a\u0060 feat: introduce \u0060copy_region_from\u0060 for mito engine (#7389); \u00606b6d1ce7\u0060 feat: introduce \u0060remap_manifests\u0060 for \u0060RegionEngine\u0060 (#7265) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/tests.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dbb2963caaf6162f7ad6cd618a979da3817a987fa5d6a819e69da13ae4fb0ce"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: region_request.rs \u2194 alter_parser.rs: \u0060src/common/meta/src/ddl/alter_table/region_request.rs\u0060 (context common) and \u0060src/sql/src/parsers/alter_parser.rs\u0060 (context sql) sit in DIFFERENT parts of the tree yet change together 60% of the time (9 of the 15 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 \u0060045441e3\u0060 feat(json2): support altering JSON2 settings (#9029); \u0060b6cef77a\u0060 feat: add \u0060SET DEFAULT\u0060 syntax (#6421); \u0060438791b3\u0060 feat: Add \u0060DROP DEFAULT\u0060 (#6290) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/ddl/alter_table/region_request.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7d2625597556e3a201374fb47c6e5ee0a3316a3d299c4fb48aa033eaa4e3cc2"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: upgrade_region.rs \u2194 upgrade_candidate_region.rs: \u0060src/datanode/src/heartbeat/handler/upgrade_region.rs\u0060 (context datanode) and \u0060src/meta-srv/src/procedure/region_migration/upgrade_candidate_region.rs\u0060 (context meta-srv) 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 \u00606960a018\u0060 refactor: add support for batch region upgrade operations part1 (#7155); \u00607cf47ccf\u0060 fix: initialize remote WAL regions with correct flushed entry IDs (#6\u2026; \u00605a36fa5e\u0060 fix: alway rejects write while downgrading region (#5842) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/heartbeat/handler/upgrade_region.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"33ad431f35c98be05b1707c38ac80b4ca681de81eaa17f1fb66119c2a6ee6a20"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: objbench.rs \u2194 write_cache.rs: \u0060src/cmd/src/datanode/objbench.rs\u0060 (context cmd) and \u0060src/mito2/src/cache/write_cache.rs\u0060 (context mito2) 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 \u0060f5212d36\u0060 feat(mito2): add write cache upload hook (#8992); \u0060abf46234\u0060 refactor: store the schema of flat source (#8091); \u0060e215851c\u0060 refactor: unify flush and compaction to always use FlatSource (#7799) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cmd/src/datanode/objbench.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e008dabfeb3bcb6dd674bf4c340fdd5b82b097bea299d9e6b3a73cd55e861add"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: test_util.rs \u2194 builder.rs: \u0060src/common/meta/src/test_util.rs\u0060 (context common) and \u0060src/meta-srv/src/metasrv/builder.rs\u0060 (context meta-srv) sit in DIFFERENT parts of the tree yet change together 57% of the time (12 of the 21 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 12 shared commits counted here, the most recent 3 are \u00605065dfcf\u0060 feat: grant creators access to newly created databases (#8566); \u00604873fc4f\u0060 feat(meta): add retention GC for soft-dropped tables (#8526); \u00603758911a\u0060 feat: add soft-drop table recovery procedures (#8061) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/test_util.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fa8765860abb395ed9f97cac500e2d3b596a8e249c986dcd0a7c03848d94c45"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: scan_region.rs \u2194 parallelize_scan.rs: \u0060src/mito2/src/read/scan_region.rs\u0060 (context mito2) and \u0060src/query/src/optimizer/parallelize_scan.rs\u0060 (context query) sit in DIFFERENT parts of the tree yet change together 55% of the time (6 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) \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 \u00600c30bf1a\u0060 feat: add a subcommand to bench scan (#7722); \u006073ca39f3\u0060 feat: time series distribution in scanner (#5675); \u00602fcb95f5\u0060 fix!: fix regression caused by unbalanced partitions and splitting ra\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/read/scan_region.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b0a1eb703daf18fdceb7f914480a5fd0e637092bdef5aa2e830df1c371a0dd4"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: jaeger.rs \u2194 v0.rs: \u0060src/frontend/src/instance/jaeger.rs\u0060 (context instance) and \u0060src/servers/src/otlp/trace/v0.rs\u0060 (context servers) sit in DIFFERENT parts of the tree yet change together 55% of the time (6 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) \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 \u00606caff50d\u0060 chore: improve search traces and jaeger resp (#7166); \u00600a396192\u0060 refactor!: add a \u0060opentelemetry_traces_operations\u0060 table to aggregate\u2026; \u0060ee4fe9d2\u0060 refactor: improve performance for Jaeger APIs  (#5838) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/frontend/src/instance/jaeger.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba2af52c1d7a38ed77fa1ba9b66d15e23ee728ae1cced086e61bcf35222febc"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: key_column_usage.rs \u2194 sql.rs: \u0060src/catalog/src/system_schema/information_schema/key_column_usage.rs\u0060 (context catalog) and \u0060src/query/src/sql.rs\u0060 (context query) sit in DIFFERENT parts of the tree yet change together 55% of the time (6 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) \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 \u0060ca21c9f0\u0060 fix!: correct information_schema index metadata (#8275); \u0060e403133e\u0060 feat: add information_schema statistics table (#8253); \u00608d485e9b\u0060 feat: support altering fulltext backend (#5896) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/key_column_usage.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e7790638bf151e7a45f8efcfe39a417b41fbc375d1900046e26fb5a183f37d5"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: flush.rs \u2194 region.rs: \u0060src/metric-engine/src/engine/flush.rs\u0060 (context metric-engine) and \u0060src/mito2/src/region.rs\u0060 (context mito2) sit in DIFFERENT parts of the tree yet change together 55% of the time (6 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) \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 \u006028e2b5ac\u0060 feat: expose missing SST manifest fields (#8965); \u0060a6dc55a7\u0060 feat: show sst primary key range in information_schema (#8137); \u00604c70b4c3\u0060 feat: store estimated series num in file meta (#7126) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/metric-engine/src/engine/flush.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1ada5f41026b48861accb03cc65bf62e631644c7755b3d4bf0c28dcd439be8f"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: copy_parser.rs \u2194 requests.rs: \u0060src/sql/src/parsers/copy_parser.rs\u0060 (context sql) and \u0060src/table/src/requests.rs\u0060 (context table) sit in DIFFERENT parts of the tree yet change together 53% of the time (9 of the 17 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 \u00602ad50332\u0060 feat: impl COPY a query resultset to external file (#5250); \u0060f93b5b19\u0060 feat: limit total rows copied in COPY TABLE FROM with LIMIT segment (\u2026; \u0060bba3108e\u0060 refactor!: unify sql options into OptionMap (#3792) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sql/src/parsers/copy_parser.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff361e01a24ca122291fbd16bb5ff9dbcf8e87a4fe2aaf98329c8cbc3bb07e2e"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: metasrv.rs \u2194 log_store.rs: \u0060src/common/wal/src/config/kafka/metasrv.rs\u0060 (context common) and \u0060src/log-store/src/kafka/log_store.rs\u0060 (context log-store) sit in DIFFERENT parts of the tree yet change together 53% of the time (9 of the 17 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 \u0060fbdc35a1\u0060 ci: add remote WAL logical pruning fuzz (#8307); \u00602e2eacf3\u0060 feat: add SASL  and TLS config for Kafka client (#4536); \u0060a0a31c8a\u0060 chore(remote_wal): remove topic alias (#3120) (at that commit the file was still \u0060src/common/meta/src/wal/kafka.rs\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/wal/src/config/kafka/metasrv.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"02a4593c92ae6274c80339fc634b7a3a9bf58fedde0552060bd6cf5102e7e5e6"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: lib.rs \u2194 pipeline.rs: \u0060src/pipeline/src/lib.rs\u0060 (context pipeline) and \u0060src/servers/src/pipeline.rs\u0060 (context servers) sit in DIFFERENT parts of the tree yet change together 50% of the time (8 of the 16 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 \u0060fb86f657\u0060 feat(pipeline): support table-aware JSON2 transforms (#8964); \u00607cd6be41\u0060 feat(pipeline): introduce pipeline doc version 2 for combine-transfor\u2026; \u006053c4fd47\u0060 chore: add skip error for pipeline skip error log (#6318) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pipeline/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f80fefb1b919c3f706c60830b5b601f508b5c95bfc95d9db1e4fd11315b4593"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: key_values.rs \u2194 request.rs: \u0060src/mito-codec/src/key_values.rs\u0060 (context mito-codec) and \u0060src/mito2/src/request.rs\u0060 (context mito2) 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 \u00607341f230\u0060 feat: skip filling NULL for put and delete requests (#3364) (at that commit the file was still \u0060src/mito2/src/memtable/key_values.rs\u0060); \u0060d68dd1f3\u0060 fix: schema validation is skipped once we need to fill a column (#2548) (at that commit the file was still \u0060src/mito2/src/memtable/key_values.rs\u0060); \u006021689708\u0060 feat: define region server and related requests (#2160) (at that commit the file was still \u0060src/mito2/src/memtable/key_values.rs\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito-codec/src/key_values.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"da715152db3255e4b0807ef12a158c1340bf7f9e20c00763cd1c5b23c17502e3"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: upgrade_region.rs \u2194 handle_catchup.rs: \u0060src/datanode/src/heartbeat/handler/upgrade_region.rs\u0060 (context datanode) and \u0060src/mito2/src/worker/handle_catchup.rs\u0060 (context mito2) 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 \u00606960a018\u0060 refactor: add support for batch region upgrade operations part1 (#7155); \u00607cf47ccf\u0060 fix: initialize remote WAL regions with correct flushed entry IDs (#6\u2026; \u0060163cea81\u0060 feat: migrate local WAL regions (#4715) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/heartbeat/handler/upgrade_region.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ba1ccddc0c304b843542fa907090365f89bc25d91249737f26ee2bb56a5ecb5"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: etcd.rs \u2194 cluster.rs: \u0060src/common/meta/src/election/etcd.rs\u0060 (context common) and \u0060src/meta-srv/src/service/cluster.rs\u0060 (context meta-srv) 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 \u0060c8c2e09e\u0060 refactor: move election trait and implementations to the \u0060common-meta\u2026; \u006016febbd4\u0060 feat: add CPU, memory and node status info to \u0060cluster_info\u0060 (#6897) (at that commit the file was still \u0060src/meta-srv/src/election/etcd.rs\u0060); \u00607de62ef5\u0060 feat: add metasrv start time to node info (#3883) (at that commit the file was still \u0060src/meta-srv/src/election/etcd.rs\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/election/etcd.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac05c98f727e63d1ab562364e3b4b44b247f5ffcf781a49d5eea3a96a88f3ac"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: lib.rs \u2194 elasticsearch.rs: \u0060src/pipeline/src/lib.rs\u0060 (context pipeline) and \u0060src/servers/src/elasticsearch.rs\u0060 (context servers) 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 \u006053c4fd47\u0060 chore: add skip error for pipeline skip error log (#6318); \u00605c07f0de\u0060 refactor: \u0060run_pipeline\u0060 parameters (#5954); \u0060f9221e9e\u0060 perf: introduce \u0060simd_json\u0060 for parsing ndjson (#5794) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/pipeline/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6a052dfe4641908c344de9514968116a61918c5fe5df3e61c9399b0f2c2c72b"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: applier.rs \u2194 tests.rs: \u0060src/mito2/src/sst/index/inverted_index/applier.rs\u0060 (context mito2) and \u0060src/puffin/src/puffin_manager/tests.rs\u0060 (context puffin) 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 \u00607bcb01d2\u0060 feat: utilize blob metadata properties (#5767); \u00608d05fb35\u0060 feat: unify puffin name passed to stager (#5564); \u006096b2a5fb\u0060 feat: introduce \u0060ParallelFstValuesMapper\u0060 (#5276) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/sst/index/inverted_index/applier.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3217439b3fc993dfbd7edb8fa3ce71926a2f9d3e539e9af5cfa3792bc791c43"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: prom_store.rs \u2194 test_util.rs: \u0060src/frontend/src/service_config/prom_store.rs\u0060 (context service_config) and \u0060tests-integration/src/test_util.rs\u0060 (context tests-integration) 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 \u006020dde260\u0060 feat: enable native histogram ingestion by default (#9301); \u0060c8f65c7b\u0060 feat: update flow windows after metric batch flush (#8544); \u0060b57dfc18\u0060 feat: pending rows batching for metrics (#7831) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/frontend/src/service_config/prom_store.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4db6f0f68026da1f2ba0380db6a983e6c49b960bf8f8f47b30eaa378d3cc849"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: applier.rs \u2194 bloom_filter_index.rs: \u0060src/index/src/bloom_filter/applier.rs\u0060 (context index) and \u0060src/mito2/src/cache/index/bloom_filter_index.rs\u0060 (context mito2) 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 \u0060bc5ad4b4\u0060 perf(mito2): batch index page loads and share cached bloom metadata (\u2026; \u00601acfb6ed\u0060 feat!: use indirect indices for bloom filter to reduce size (#5377); \u00605cf9d7b6\u0060 fix(bloom-filter): filter rows with segment precision (#5286) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/index/src/bloom_filter/applier.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"578e64036118c364662c8f4a626aec798a5e871b883ea869b5a0f8ec1a6540f5"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: export.rs \u2194 import.rs: \u0060src/cli/src/data/export.rs\u0060 and \u0060src/cli/src/data/import.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 \u00606adc348f\u0060 feat: support parallel table operations in \u0060COPY DATABASE\u0060 (#7213); \u0060a049b68c\u0060 feat: import backup data from local files (#7180); \u006011c0381f\u0060 chore: set default catalog using build env (#7156) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/cli/src/data/export.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"62c8f7a2e2e112143c72012a33ff42bc4adf9d5612fd606c44ff83432016795c"}},{"ruleId":"D35","level":"warning","message":{"text":"Change-coupling hub: unordered_scan.rs \u2192 range.rs, seq_scan.rs, series_scan.rs: \u0060src/mito2/src/read/unordered_scan.rs\u0060 changes together with 3 other files \u2014 \u0060src/mito2/src/read/range.rs\u0060, \u0060src/mito2/src/read/seq_scan.rs\u0060, \u0060src/mito2/src/read/series_scan.rs\u0060 \u2014 none of which declares a dependency on it: one file is the hub of 3 separate couplings, not 3 unrelated pairs. Read the hub first: if the others each duplicate a part of what it does, the shared concern belongs in ONE unit and extracting it clears every edge at once; if the hub is a registry, dispatcher or barrel that must name each of them, the coupling is structural and the question is whether that list can be discovered instead of enumerated. Fixing the hub is one change; breaking the couplings one pair at a time is 3."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/read/unordered_scan.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d67110bfc63f8dcf100c7a0d56bb6ae4f476a101a244be8e7c366826993659"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: csv.rs \u2194 json.rs: \u0060src/common/datasource/src/file_format/csv.rs\u0060 and \u0060src/common/datasource/src/file_format/json.rs\u0060 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) 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 8 shared commits counted here, the most recent 3 are \u0060a35f9d5c\u0060 fix: address Windows test failures and run full Windows CI (#9305); \u0060969a64d4\u0060 fix(copy): treat null inferred columns as Utf8 to preserve later valu\u2026; \u006026535f57\u0060 feat: enable concurrent write (#3214) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/datasource/src/file_format/csv.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cb16f9694c8480484694ba2980ef419c698f1494bc8588fe29395cdebb3d04f"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling clique: failure_handler.rs, region_lease_handler.rs, weight_compute.rs: 3 files \u2014 \u0060src/meta-srv/src/handler/failure_handler.rs\u0060, \u0060src/meta-srv/src/handler/region_lease_handler.rs\u0060, \u0060src/meta-srv/src/selector/weight_compute.rs\u0060 \u2014 all change together with no explicit dependency: a fully-connected co-change clique, not 3 separate couplings. They share one concern (thin parallel siblings over a common abstraction), so extract the shared part into ONE unit and the whole clique\u0027s coupling clears at once \u2014 you do not need to break each pair individually."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/handler/failure_handler.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0526c6c6fc467f181d8f74db6e89d38bb6331748be110f407f540858a7393c2"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: reader.rs \u2194 tests.rs: \u0060src/puffin/src/puffin_manager/fs_puffin_manager/reader.rs\u0060 and \u0060src/puffin/src/puffin_manager/tests.rs\u0060 change together 70% of the time (7 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 7 shared commits counted here, the most recent 3 are \u0060dce5e35d\u0060 feat: apply terms with fulltext tantivy backend (#5869); \u00607bcb01d2\u0060 feat: utilize blob metadata properties (#5767); \u00608d05fb35\u0060 feat: unify puffin name passed to stager (#5564) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/puffin/src/puffin_manager/fs_puffin_manager/reader.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5ae3bf9f15862ca4bf09f9e85797de4c21ccd4de5959e38deda4e8682781e26"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: empty_table.rs \u2194 memtable.rs: \u0060src/table/src/test_util/empty_table.rs\u0060 and \u0060src/table/src/test_util/memtable.rs\u0060 change together 70% of the time (7 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 7 shared commits counted here, the most recent 3 are \u0060e920f959\u0060 refactor: drop Table trait (#3654); \u0060d6c82867\u0060 refactor: remove the most Table impls (#2274); \u00607abe71f3\u0060 fix(table): return correct table types (#2131) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/table/src/test_util/empty_table.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"75ef14828d6aaac949efd798cd6acd451dba566fc3f5da5da8f21a3389da4344"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: test_util.rs \u2194 handle_create.rs: \u0060src/mito2/src/test_util.rs\u0060 and \u0060src/mito2/src/worker/handle_create.rs\u0060 change together 70% of the time (16 of the 23 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 16 shared commits counted here, the most recent 3 are \u00601ca29c34\u0060 feat: support create region requirements (#8281); \u006024671b60\u0060 feat: tracks index files in another cache and preloads them (#7181); \u00609fe84f6f\u0060 feat(mito): backfill partition expr on region open (#6862) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/test_util.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"741fce63894d76048ccb5b0f9afdbd8368222e36503257f5d0191581896b2423"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: context.rs \u2194 reader.rs: \u0060src/mito2/src/memtable/bulk/context.rs\u0060 and \u0060src/mito2/src/sst/parquet/reader.rs\u0060 change together 69% of the time (9 of the 13 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 9 shared commits counted here, the most recent 3 are \u00605b1b12d0\u0060 fix(mito2): adapt batch size for wide rows (#8543); \u00606a84393e\u0060 feat: support prefiltering any columns in flat format (#7972); \u0060922f9cb3\u0060 feat: use dyn filter (#7545) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/memtable/bulk/context.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e219db94040dfaf10b704b7b55214ae3d6ba5c1cb487685735cfcd4fc14bd3ae"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: table_flownode.rs \u2194 create_flow.rs: \u0060src/common/meta/src/cache/flow/table_flownode.rs\u0060 and \u0060src/common/meta/src/ddl/create_flow.rs\u0060 change together 69% of the time (9 of the 13 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 9 shared commits counted here, the most recent 3 are \u0060ba15a9c0\u0060 feat: support pending flow metadata with defer_on_missing_source (#8124); \u00608452a9d5\u0060 feat(flow): add eval interval option (#6623); \u0060038acda7\u0060 fix: flow update use proper update (#6108) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/cache/flow/table_flownode.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8152d608902422b14e747d9bdcac4d2d3c805d3df3b61eac9590b4b78199296"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: close_region.rs \u2194 open_region.rs: \u0060src/datanode/src/heartbeat/handler/close_region.rs\u0060 and \u0060src/datanode/src/heartbeat/handler/open_region.rs\u0060 change together 69% of the time (9 of the 13 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 9 shared commits counted here, the most recent 3 are \u0060328ec56b\u0060 feat: introduce \u0060OpenRegions\u0060 and \u0060CloseRegions\u0060 instructions to supp\u2026; \u0060b2f61aa1\u0060 fix: format error correctly (#4204); \u0060485a91f4\u0060 feat: implement handle upgrade region instruction (#3013) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/datanode/src/heartbeat/handler/close_region.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b1d0f4b39dd4ed235440f0bbb46d32b77adda5ce11a0afda18ed7207f024e19"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: decode.rs \u2194 prom_row_builder.rs: \u0060src/servers/src/prom_remote_write/decode.rs\u0060 and \u0060src/servers/src/prom_row_builder.rs\u0060 change together 69% of the time (11 of the 16 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 11 shared commits counted here, the most recent 3 are \u00602000611e\u0060 perf(remote-write): optimize decode prom  (#7761) (at that commit the file was still \u0060src/servers/src/proto.rs\u0060); \u00607ba23a99\u0060 perf: prom decode (#7737) (at that commit the file was still \u0060src/servers/src/proto.rs\u0060); \u00602f9a10ab\u0060 refactor: expose bulk symbols (#6467) (at that commit the file was still \u0060src/servers/src/proto.rs\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/prom_remote_write/decode.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"041af2fe5d9086c305ef8c1a819f99ce6d602cba115ff46f04eeae55516ad058"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: builder.rs \u2194 test_util.rs: \u0060src/meta-srv/src/metasrv/builder.rs\u0060 and \u0060src/meta-srv/src/test_util.rs\u0060 change together 67% of the time (10 of the 15 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 10 shared commits counted here, the most recent 3 are \u00608cbe7166\u0060 refactor: migrate region failover implementation to region migration \u2026; \u00604c3d4af1\u0060 feat: register flow node (#4166); \u00600afac58e\u0060 feat(metasrv): implement maintenance (#3527) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/metasrv/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aed795d2a678e7877d8e60d6897e37eb94e70b2e19b9b633ded358aa0add260e"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: create.rs \u2194 state.rs: \u0060src/metric-engine/src/engine/create.rs\u0060 and \u0060src/metric-engine/src/engine/state.rs\u0060 change together 67% of the time (8 of the 12 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 8 shared commits counted here, the most recent 3 are \u006090752f56\u0060 feat: persist Prometheus remote write v2 native histograms (#8382); \u0060148d96fc\u0060 fix: ensures logical and physical region have the same timestamp unit\u2026; \u0060d363c8ee\u0060 fix: check physical region before use (#5612) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/metric-engine/src/engine/create.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"35084708d1ee5bb753987eb1b5f76413e7f29171c32a1a8599d5b48924243a99"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: reader.rs \u2194 bounded_stager.rs: \u0060src/puffin/src/puffin_manager/fs_puffin_manager/reader.rs\u0060 and \u0060src/puffin/src/puffin_manager/stager/bounded_stager.rs\u0060 change together 58% of the time (7 of the 12 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 \u00608d05fb35\u0060 feat: unify puffin name passed to stager (#5564); \u006096b2a5fb\u0060 feat: introduce \u0060ParallelFstValuesMapper\u0060 (#5276); \u0060cbf21e53\u0060 feat(puffin): apply range reader (#4928) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/puffin/src/puffin_manager/fs_puffin_manager/reader.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf87f14046a1a8b1c40bb2cca7444727befc13da4993f38709402e38b2daff61"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: lease_based.rs \u2194 load_based.rs: \u0060src/meta-srv/src/selector/lease_based.rs\u0060 and \u0060src/meta-srv/src/selector/load_based.rs\u0060 change together 56% of the time (9 of the 16 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 9 shared commits counted here, the most recent 3 are \u00606a15e627\u0060 feat: expose workload filter to selector options (#6951); \u00604c2955b8\u0060 fix: time unit mismatch in \u0060lookup_frontends\u0060 function (#6798); \u00608dca448b\u0060 feat: add datanode workloads support (#6055) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/selector/lease_based.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"078a2469760652e6ebad572554092fd711047a10e7ab76ec964a3f8cb121e53b"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: prom_store.rs \u2194 prom_row_builder.rs: \u0060src/servers/src/http/prom_store.rs\u0060 and \u0060src/servers/src/prom_row_builder.rs\u0060 change together 56% of the time (9 of the 16 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 9 shared commits counted here, the most recent 3 are \u0060fedce5c5\u0060 feat: support non-millisecond time index units in the logical batcher\u2026; \u0060941193e9\u0060 refactor: reorganize logical table batching and isolate encoding (#9210); \u00602000611e\u0060 perf(remote-write): optimize decode prom  (#7761) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/prom_store.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b017c861358cca3b1a04d7d9fd259901448805d99e3ba7943c3e67f87f31744"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: jaeger.rs \u2194 v0.rs: \u0060src/servers/src/http/jaeger.rs\u0060 and \u0060src/servers/src/otlp/trace/v0.rs\u0060 change together 55% of the time (6 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 6 shared commits counted here, the most recent 3 are \u00606caff50d\u0060 chore: improve search traces and jaeger resp (#7166); \u00600a396192\u0060 refactor!: add a \u0060opentelemetry_traces_operations\u0060 table to aggregate\u2026; \u0060ee4fe9d2\u0060 refactor: improve performance for Jaeger APIs  (#5838) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/jaeger.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d65249f90e09c979f7cdf9fde40d6516b3bca7f4091d3bcc43307dcd0a55853"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: range.rs \u2194 reader.rs: \u0060src/mito2/src/read/range.rs\u0060 and \u0060src/mito2/src/sst/parquet/reader.rs\u0060 change together 54% of the time (7 of the 13 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 \u00601451a51e\u0060 feat: add tools for development (#8260); \u0060922f9cb3\u0060 feat: use dyn filter (#7545); \u0060c34d142e\u0060 fix: clear unused range builders eagerly (#7569) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/read/range.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0481f45e2b81f9b194f2245cde48221af11e205d5bba3e651a048f517e06c75"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: metasrv.rs \u2194 test_util.rs: \u0060src/meta-srv/src/metasrv.rs\u0060 and \u0060src/meta-srv/src/test_util.rs\u0060 change together 53% of the time (8 of the 15 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 8 shared commits counted here, the most recent 3 are \u00608cbe7166\u0060 refactor: migrate region failover implementation to region migration \u2026; \u00604c3d4af1\u0060 feat: register flow node (#4166); \u00600afac58e\u0060 feat(metasrv): implement maintenance (#3527) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/meta-srv/src/metasrv.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7662d81e1d075700a054f263d807cc62e65c5cfd6940d9fba4726c4046cb8bb"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: datanode.rs \u2194 metasrv.rs: \u0060src/common/wal/src/config/kafka/datanode.rs\u0060 and \u0060src/common/wal/src/config/kafka/metasrv.rs\u0060 change together 53% of the time (8 of the 15 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 8 shared commits counted here, the most recent 3 are \u0060fbdc35a1\u0060 ci: add remote WAL logical pruning fuzz (#8307); \u0060021ad09c\u0060 refactor: simplify WAL pruning procedure  and introduce region flush \u2026; \u0060ee07b9bf\u0060 test: update configs to enable auto wal prune (#5938) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/wal/src/config/kafka/datanode.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc1d045dbbff565a62011479693ddcd314b7ce36d38c663b557c83334e188165"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: numbers.rs \u2194 memtable.rs: \u0060src/table/src/table/numbers.rs\u0060 and \u0060src/table/src/test_util/memtable.rs\u0060 change together 53% of the time (8 of the 15 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 8 shared commits counted here, the most recent 3 are \u00603e67c676\u0060 refactor: simplify scan projection to root column indices (#8629); \u0060c90e4147\u0060 refactor: introduce the ProjectInput structure (#7908); \u0060e375a180\u0060 fix: conversion from TableMeta to TableMetaBuilder (#5693) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/table/src/table/numbers.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7f6b0cc4f8b641fc117659b5998d39051234a2f4f54e98e7b31006eac34a314"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: table_info.rs \u2194 table_route.rs: \u0060src/common/meta/src/key/table_info.rs\u0060 and \u0060src/common/meta/src/key/table_route.rs\u0060 change together 53% of the time (9 of the 17 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 9 shared commits counted here, the most recent 3 are \u00609aa2182c\u0060 refactor: make txn easy to use (#3905); \u0060c91132bd\u0060 feat: introduce \u0060TableNameCache\u0060 \u0026 \u0060TableInfoCache\u0060 \u0026 \u0060TableRouteCach\u2026; \u006051078226\u0060 refactor: avoid unnecessary cloning (#3734) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/key/table_info.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c402694a82ade91457af310ee7fc9ba24fdae24f1335d1e0fa4126ee8af0e9a"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: test.rs \u2194 commutativity.rs: \u0060src/query/src/dist_plan/analyzer/test.rs\u0060 and \u0060src/query/src/dist_plan/commutativity.rs\u0060 change together 52% of the time (11 of the 21 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 11 shared commits counted here, the most recent 3 are \u0060def0c2ec\u0060 fix: only push down aggregates grouped by the partition columns thems\u2026; \u006082444635\u0060 feat: support quantile and fraction queries on mixed histograms (#8874); \u00604f5dccf6\u0060 fix(query): push down PromQL cast filters (#8407) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/analyzer/test.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6bdb63981f0242e38ed302f36ef5e9851399884471b84bbe7465c2f5959bae5"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: engine.rs \u2194 handle_create.rs: \u0060src/mito2/src/engine.rs\u0060 and \u0060src/mito2/src/worker/handle_create.rs\u0060 change together 52% of the time (12 of the 23 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 12 shared commits counted here, the most recent 3 are \u00609fe84f6f\u0060 feat(mito): backfill partition expr on region open (#6862); \u0060f7c8d86e\u0060 feat: file ref mgr (#6844); \u0060ff8c10ea\u0060 feat: add CatchupRequest to engine (#2939) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/engine.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"64a838fbef6ba0d31c6c7818a5f538fb0160a1e888f38d176c4733bf435347cf"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: create_table.rs \u2194 drop_table.rs: \u0060src/common/meta/src/ddl/create_table.rs\u0060 and \u0060src/common/meta/src/ddl/drop_table.rs\u0060 change together 50% of the time (18 of the 36 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 18 shared commits counted here, the most recent 3 are \u00608aefcfae\u0060 fix(meta): renew operating region leases from keeper roles (#7971); \u0060dca451c4\u0060 fix: remap peer addresses during retries (#7933); \u0060981d5178\u0060 fix: throw errors instead of ignoring (#5792) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/ddl/create_table.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c848b0a48bcf13b0b1f93a1fdc1bba9c3720e74328820a74962b575ddef9a21e"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: twcs.rs \u2194 handle_compaction.rs: \u0060src/mito2/src/compaction/twcs.rs\u0060 and \u0060src/mito2/src/worker/handle_compaction.rs\u0060 change together 50% of the time (11 of the 22 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 11 shared commits counted here, the most recent 3 are \u00609cfbc421\u0060 refactor(mito2): prioritize file count in TWCS picker (#8765); \u0060f524a0b5\u0060 feat: support time range in manual compaction (#8669); \u006098612800\u0060 perf(mito2): make compaction picker asynchronous to avoid blocking th\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/compaction/twcs.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f44e97897b230a81c77cac6835e0a7009120c2838d3dbda53f59d654eb9a8fd"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: columns.rs \u2194 tables.rs: \u0060src/catalog/src/system_schema/information_schema/columns.rs\u0060 and \u0060src/catalog/src/system_schema/information_schema/tables.rs\u0060 change together 50% of the time (8 of the 16 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 8 shared commits counted here, the most recent 3 are \u0060f995f609\u0060 chore: avoid double future (#3890) (at that commit the files were still \u0060src/catalog/src/information_schema/columns.rs\u0060 and \u0060src/catalog/src/information_schema/tables.rs\u0060); \u0060c6c4ea5e\u0060 feat: tables stream with CatalogManager (#3180) (at that commit the files were still \u0060src/catalog/src/information_schema/columns.rs\u0060 and \u0060src/catalog/src/information_schema/tables.rs\u0060); \u0060c2db9706\u0060 feat: pushdown filters for some information_schema tables (#3091) (at that commit the files were still \u0060src/catalog/src/information_schema/columns.rs\u0060 and \u0060src/catalog/src/information_schema/tables.rs\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/catalog/src/system_schema/information_schema/columns.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec31b19a44caef906d3471f1dbfdef13f5914c70a5ae79823f2f75716255108a"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: listener.rs \u2194 request.rs: \u0060src/mito2/src/engine/listener.rs\u0060 and \u0060src/mito2/src/request.rs\u0060 change together 50% of the time (7 of the 14 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 \u006025090b9f\u0060 feat(mito2): support cancelling flush jobs (#8685); \u0060f817690b\u0060 fix(mito2): make async index publication conditional (#8676); \u006098612800\u0060 perf(mito2): make compaction picker asynchronous to avoid blocking th\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/engine/listener.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2991a12e12287413d2f406368f192493469b6eb031eee44e138596e6006c5cc7"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: flush.rs \u2194 handle_close.rs: \u0060src/mito2/src/flush.rs\u0060 and \u0060src/mito2/src/worker/handle_close.rs\u0060 change together 50% of the time (7 of the 14 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 \u006059e4e7ef\u0060 fix: preserve close-time flush responses (#8443); \u006015fc148e\u0060 refactor: clarify region flush reasons (#8146); \u006045e990b7\u0060 refactor: propagate flush reasons through FlushRegions path (#8051) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/flush.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e43d40a6493e7c115f620f425d4a19f908d318cdd58bc4dea586db725127cb1"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: influxdb.rs \u2194 prometheus.rs: \u0060src/servers/src/http/influxdb.rs\u0060 and \u0060src/servers/src/http/prometheus.rs\u0060 change together 50% of the time (7 of the 14 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 7 shared commits counted here, the most recent 3 are \u00603acd5bfa\u0060 chore: http header with metrics (#3536); \u006053f2a584\u0060 feat: support tracing rule sampler (#3405); \u006089366ba9\u0060 refactor: Holds histogram in the timer to avoid clone labels if possi\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/servers/src/http/influxdb.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"96b21c277944381480639c151524960a146e4a317735008f42cbe0c12d288ddb"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: opener.rs \u2194 handle_truncate.rs: \u0060src/mito2/src/region/opener.rs\u0060 and \u0060src/mito2/src/worker/handle_truncate.rs\u0060 change together 50% of the time (6 of the 12 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 \u0060bb6a3a2f\u0060 feat: support altering sst format for a table (#7206); \u0060bacd9c7d\u0060 feat: add event ts to region manifest (#6751); \u006025f926ea\u0060 feat: mito region staging state (#6664) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/mito2/src/region/opener.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8f311299704f2e9de93a33d2462e1be6593fc56938b2b8b0315a450d315cf09"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: plan_rewrite.rs \u2194 tests.rs: \u0060src/query/src/range_select/plan_rewrite.rs\u0060 and \u0060src/query/src/tests.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 \u0060747b71bf\u0060 feat: add query engine options (#5895); \u0060fd8eba36\u0060 refactor: make use of the \u0022pre_execute\u0022 in sql execution interceptor \u2026; \u00600bf26642\u0060 feat: re-support query engine execute dml (#2484) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/range_select/plan_rewrite.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a468fd1f9627ca21f15abd6bff5d4c4712b074996cffaf0e1b3fff18ca0d7a19"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: ddl.rs \u2194 metrics.rs: \u0060src/common/meta/src/ddl.rs\u0060 and \u0060src/common/meta/src/metrics.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 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 5 shared commits counted here, the most recent 3 are \u0060ab22bbac\u0060 feat: impl drop view (#4231); \u0060b493ea1b\u0060 feat: implement the \u0060CreateFlowProcedure\u0060 (#3810); \u00601fab7ab7\u0060 feat: batch create ddl (#3194) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/ddl.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"447cea70e805a2e7fb9e3ade2371356d0f74b6044e01e36929c03a0e29900ed6"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: ddl_manager.rs \u2194 metrics.rs: \u0060src/common/meta/src/ddl_manager.rs\u0060 and \u0060src/common/meta/src/metrics.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 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 5 shared commits counted here, the most recent 3 are \u0060ab22bbac\u0060 feat: impl drop view (#4231); \u0060b493ea1b\u0060 feat: implement the \u0060CreateFlowProcedure\u0060 (#3810); \u00601fab7ab7\u0060 feat: batch create ddl (#3194) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/ddl_manager.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"25f9e34f992cb05869b3084a10962b5c340fcb2692b569c14e897fbe412b87f8"}},{"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"}},{"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":"0e17f71490e4d120a48b2b2881ab866c93b272bef2febb673a3e8e42b2c288ab"}},{"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"}},{"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"}},{"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":"cc682cd7167c2c692b624e54d299d32b2ea2b5b3eb72f5516f0dfab9c0ce991d"}},{"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":"773b03fbd8de4cf3e15428d0aeb3000fa65e5c37dcbe1d467ae3d9fe7f39f70d"}},{"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":"0752d0df7434000fcabf1048e2de30a7a1a8b982b3db9a19898c4dec199856b4"}},{"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":"d068c977b62d9a977df1bb6f53e8b00b586c3abee955f91d715f92b8e019d624"}},{"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":"4f1e7684f8281bd255ddef97105c7055c2ebae06964c8745716b83e174debe83"}},{"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":"ace515990e7ee0f17b5c17e44dd168a5bdecf90804a3a3dd845cf05540978013"}},{"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: Workloads do not set a seccomp profile (RuntimeDefault or a Localhost profile). Seccomp blocks the syscalls a container never needs, shrinking the kernel attack surface a container escape would use."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3f418e9f76c3ac90484e0e94a454bfe9b08e914e1cdd218e1fc9e3b261a3bf6e"}},{"ruleId":"D41","level":"note","message":{"text":"No AppArmor/SELinux confinement: Workloads declare no AppArmor or SELinux profile. A mandatory-access-control profile confines what a compromised container can touch on the host, complementing seccomp\u0027s syscall filter."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e83fbc31033373d6c51983ed230eb4ba61f7775ed02afb30f5fc1840bde01d4f"}},{"ruleId":"D44","level":"warning","message":{"text":"End-of-life runtime: Rust 1.96: rust-toolchain.toml declares Rust 1.96 as this project\u0027s toolchain file, and Rust 1.96, superseded by 1.97 on 2026-07-09 (the Rust project patches only the current stable). An unsupported runtime receives no security patches, so every vulnerability disclosed in it since 2026-07-09 is present and unfixable without moving off it. This is a migration rather than an upgrade: there is no newer release of a runtime that has ended."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b4d8e9b51cd4b2493b326110bfe409c9598039c510d25150fcc40f653a675ac1"}},{"ruleId":"AX8","level":"error","message":{"text":"Production project references a test project: file-engine \u2192 common-test-util: \u0060file-engine\u0060 (production) references the test project \u0060common-test-util\u0060. Production must never depend on test code \u2014 it pulls a unit-test framework and test fixtures into the shipped product and inverts the only correct direction (tests depend on production, never the reverse). Move any shared helper into a production support library, or invert the reference."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c655cb20c40a79ce2dd0baaa12b396c0aa66d6272e73b75c1aa0ac8cfa1090c2"}},{"ruleId":"AX8","level":"error","message":{"text":"Production project references a test project: mito2 \u2192 common-test-util: \u0060mito2\u0060 (production) references the test project \u0060common-test-util\u0060. Production must never depend on test code \u2014 it pulls a unit-test framework and test fixtures into the shipped product and inverts the only correct direction (tests depend on production, never the reverse). Move any shared helper into a production support library, or invert the reference."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"96523845da4a4de9a861af949776b98b431d3c8f3ecf162f687cafafb9ca4088"}},{"ruleId":"AX8","level":"error","message":{"text":"Production project references a test project: puffin \u2192 common-test-util: \u0060puffin\u0060 (production) references the test project \u0060common-test-util\u0060. Production must never depend on test code \u2014 it pulls a unit-test framework and test fixtures into the shipped product and inverts the only correct direction (tests depend on production, never the reverse). Move any shared helper into a production support library, or invert the reference."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6188cdeccdc74882e2f1b11e676fbe998c23acbd4cfd0605c001dfba6ef1912e"}},{"ruleId":"DM4","level":"error","message":{"text":"Anemic domain model: DroppedTableLifecycle: \u0060DroppedTableLifecycle\u0060 is a data-only domain entity with \u0060pub\u0060 mutable state and no invariant-enforcing behaviour of its own, while the repo holds the logic in a foreign service/manager/use-case \u2014 the anemic domain model. Move the behaviour onto the entity so it enforces its own invariants (or make it an immutable value object with private fields) rather than being driven from outside."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/meta/src/key.rs"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb31eaeb23fa6426735e010b0d09b8d6c926f5409654fbf5fe16b9753b30542d"}},{"ruleId":"P4","level":"note","message":{"text":"No release approval gate: Deployment is automated and no gate that pauses it for a human is DECLARED IN THIS REPOSITORY\u0027S PIPELINE FILES. What was read: every file under \u0060.github/workflows/\u0060, \u0060.forgejo/workflows/\u0060, \u0060.gitea/workflows/\u0060, \u0060.azuredevops/\u0060 and \u0060.azure-pipelines/\u0060, plus \u0060.gitlab-ci*\u0060 and \u0060azure-pipelines*\u0060 \u2014 with comment text stripped, so documenting a gate is not declaring one. What would have counted: GitLab\u0027s \u0060when: manual\u0060, CircleCI\u0027s \u0060type: approval\u0060, an Azure \u0060ManualValidation@\u0060 task or an \u0060approvals:\u0060 block, a Jenkins \u0060input\u0060 step, a \u0060uses:\u0060 step naming an approval action, an \u0060environment:\u0060 paired with \u0060reviewers\u0060 / \u0060required_reviewers\u0060 / \u0060protection\u0060 / \u0060wait-timer\u0060 / \u0060deployment_branch_policy\u0060, a draft-release step, a \u0060workflow_dispatch\u0060 promotion, or a release-event gate. \u2605 What this cannot see, because none of it is a file: a GitHub environment whose required reviewers are configured in repo SETTINGS, a branch protection rule, or an organisation deployment policy \u2014 all of them real, enforced gates that live outside the repository. If yours is one of those, this row is wrong and nothing in the tree could have told us. Otherwise: whatever reaches the release trigger goes to production unreviewed, so a mistaken merge or tag is live before anyone can stop it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6c11e2dbd483b4b423b95ac61bfcc7af1d55351b28a20d2b1105b31cfe38cc60"}},{"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":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060end \u003C 0 or text[end \u002B 1 :].strip() and not text[end \u002B 1 :].lstrip().startswith(\u0022#\u0022)\u0060 appears character-identically in 2 files \u2014 .agents/skills/greptimedb-development-docker-image/scripts/image_config.py, .claude/skills/greptimedb-development-docker-image/scripts/image_config.py. 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":".agents/skills/greptimedb-development-docker-image/scripts/image_config.py"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e0459194e264d47d3b57c21e6e73fcaf81986034a485bd2052b440ddceed300"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060len(header) != 64 or header[:4] != b\u0022\\x7fELF\u0022\u0060 appears character-identically in 2 files \u2014 .agents/skills/greptimedb-development-docker-image/scripts/binary_platform.py, .claude/skills/greptimedb-development-docker-image/scripts/binary_platform.py. 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":".agents/skills/greptimedb-development-docker-image/scripts/binary_platform.py"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"334114a6561d31829f2a50874e758c2afb82e981dcccc6f56f7fe8aeb2b4f3c7"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060remote_section.contains(\u00221700000000000000000\u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060remote_section.contains(\u00221700000000000000000\u0022)\u0060 also satisfies \u0060remote_section.contains(\u00221700000000000\u0022)\u0060, so the \u0060||\u0060 chain is already decided by the latter. The expression is equivalent to the chain without it, which means it is wider than it reads. Delete the dead operand, or narrow the surviving one if IT is the accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/query/src/dist_plan/analyzer/test.rs"},"region":{"startLine":2787}}}],"partialFingerprints":{"codehealthFindingId/v1":"9468676aefb956eda66ac0f8663242a680c3ab3aae733bccad11facc567b545a"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060str_addr.starts_with(\u00222001:db8::\u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060str_addr.starts_with(\u00222001:db8::\u0022)\u0060 also satisfies \u0060str_addr.starts_with(\u00222001:db8:\u0022)\u0060, so the \u0060||\u0060 chain is already decided by the latter. The expression is equivalent to the chain without it, which means it is wider than it reads. Delete the dead operand, or narrow the surviving one if IT is the accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/function/src/scalars/ip/cidr.rs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd1db2a9d0a783365d8c562c016d8f4004cfae6c95a94882e3df3d5c5b1594ed"}}],"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-1104","guid":"4c918cb5-b2a6-6c55-9963-a44ee464305e","name":"CWE-1104","shortDescription":{"text":"CWE-1104"},"helpUri":"https://cwe.mitre.org/data/definitions/1104.html"},{"id":"CWE-1329","guid":"f70f1c3f-4ccf-cb5e-bdd3-03ba4868d36d","name":"CWE-1329","shortDescription":{"text":"CWE-1329"},"helpUri":"https://cwe.mitre.org/data/definitions/1329.html"},{"id":"CWE-1333","guid":"11a336ce-63de-c45c-845e-29ca1e8df13d","name":"CWE-1333","shortDescription":{"text":"CWE-1333"},"helpUri":"https://cwe.mitre.org/data/definitions/1333.html"},{"id":"CWE-1352","guid":"5257f322-5cfc-6b52-bedd-0b9a526b4c7d","name":"CWE-1352","shortDescription":{"text":"CWE-1352"},"helpUri":"https://cwe.mitre.org/data/definitions/1352.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-191","guid":"31b5d115-a84b-875f-a016-48689827db3c","name":"CWE-191","shortDescription":{"text":"CWE-191"},"helpUri":"https://cwe.mitre.org/data/definitions/191.html"},{"id":"CWE-248","guid":"64b58946-d244-a556-a48a-f82fcd4f4186","name":"CWE-248","shortDescription":{"text":"CWE-248"},"helpUri":"https://cwe.mitre.org/data/definitions/248.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-269","guid":"70e1f5f6-81e5-4e5a-ba40-b541c3a346e2","name":"CWE-269","shortDescription":{"text":"CWE-269"},"helpUri":"https://cwe.mitre.org/data/definitions/269.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"CWE-353","shortDescription":{"text":"CWE-353"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-426","guid":"7b39d500-c310-9a5d-9a3d-4c2bf49492a3","name":"CWE-426","shortDescription":{"text":"CWE-426"},"helpUri":"https://cwe.mitre.org/data/definitions/426.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":"CWE-506","shortDescription":{"text":"CWE-506"},"helpUri":"https://cwe.mitre.org/data/definitions/506.html"},{"id":"CWE-522","guid":"71fb233e-ce6a-ae57-9419-ef8373540b09","name":"CWE-522","shortDescription":{"text":"CWE-522"},"helpUri":"https://cwe.mitre.org/data/definitions/522.html"},{"id":"CWE-693","guid":"b9b141dc-018a-9c59-8953-1e3c4e020745","name":"CWE-693","shortDescription":{"text":"CWE-693"},"helpUri":"https://cwe.mitre.org/data/definitions/693.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":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"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-829","guid":"13c33925-97fb-5a5e-b40c-56d328b8a4d7","name":"CWE-829","shortDescription":{"text":"CWE-829"},"helpUri":"https://cwe.mitre.org/data/definitions/829.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"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-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"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":561,"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."]}]}