{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"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":"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":"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":"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":"AC2","name":"Forms \u0026 labels","shortDescription":{"text":"Forms \u0026 labels"},"helpUri":"https://codehealth.canine.dev/dimensions/AC2"},{"id":"AC3","name":"Page structure","shortDescription":{"text":"Page structure"},"helpUri":"https://codehealth.canine.dev/dimensions/AC3"},{"id":"AC5","name":"ARIA correctness","shortDescription":{"text":"ARIA correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/AC5"},{"id":"AC6","name":"Visual \u0026 motion safety","shortDescription":{"text":"Visual \u0026 motion safety"},"helpUri":"https://codehealth.canine.dev/dimensions/AC6"},{"id":"AC7","name":"A11y enforcement","shortDescription":{"text":"A11y enforcement"},"helpUri":"https://codehealth.canine.dev/dimensions/AC7"},{"id":"AX10","name":"Code composition","shortDescription":{"text":"Code composition"},"helpUri":"https://codehealth.canine.dev/dimensions/AX10"},{"id":"AX3","name":"Project dependency cycles","shortDescription":{"text":"Project dependency cycles"},"helpUri":"https://codehealth.canine.dev/dimensions/AX3"},{"id":"AX4","name":"Dependency direction","shortDescription":{"text":"Dependency direction"},"helpUri":"https://codehealth.canine.dev/dimensions/AX4"},{"id":"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":"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":"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":"PF2","name":"Allocation hygiene","shortDescription":{"text":"Allocation hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/PF2"},{"id":"PF3","name":"Async \u0026 latency hygiene","shortDescription":{"text":"Async \u0026 latency hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/PF3"},{"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":"Operation::eq (cyclomatic 238): Operation::eq has cyclomatic complexity 238 (threshold 15). Of this number, 237 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. 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":"rust/lance-table/src/transaction/conflicts.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"676ddae2349cd6470b6d2ccbba304fcbf1d7dbc120ac8a9a7149f087713d77e6"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_datafusion::expr::safe_coerce_scalar (cyclomatic 211): lance_datafusion::expr::safe_coerce_scalar has cyclomatic complexity 211 (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":"rust/lance-datafusion/src/expr.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab646e657c0735986ce7f43b6a425f974b2604b507dd0a450055ad6225be0df7"}},{"ruleId":"D1","level":"warning","message":{"text":"OrderableScalarValue::cmp (cyclomatic 188): OrderableScalarValue::cmp has cyclomatic complexity 188 (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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"e87ec5480490351fe47c5a421452980969e53895e8ba8211f5b7de679ed74037"}},{"ruleId":"D1","level":"warning","message":{"text":"Transaction::build_manifest_prepared (cyclomatic 151): Transaction::build_manifest_prepared has cyclomatic complexity 151 (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":"rust/lance-table/src/transaction/manifest_build.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c40343c30faddd7e313b898e0fc8779bfd783eca1049ab987094c068918a7f"}},{"ruleId":"D1","level":"warning","message":{"text":"Wand::and_bulk_search (cyclomatic 139): Wand::and_bulk_search has cyclomatic complexity 139 (threshold 15). Of this number, 74 points are the body\u0027s own statements and 65 belong to 14 function items inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":4083}}}],"partialFingerprints":{"codehealthFindingId/v1":"8488a5b5aba2d9c966a417d284a7044066ec7046d02b64e07d9f58d003f6491f"}},{"ruleId":"D1","level":"warning","message":{"text":"Wand::maxscore_search (cyclomatic 128): Wand::maxscore_search has cyclomatic complexity 128 (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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":2936}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8da8c574d28a54b1e4134915355e61c106902297efbf1c5f610601edaf82ea3"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_index::vector::distributed::index_merger::merge_partial_vector_auxiliary_files_inner (cyclomatic 124): lance_index::vector::distributed::index_merger::merge_partial_vector_auxiliary_files_inner has cyclomatic complexity 124 (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":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":862}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a5b6c212ae57a4e8dded3837ec69785dfb770ef5769094490533492f0447f40"}},{"ruleId":"D1","level":"warning","message":{"text":"LanceDataset._create_index_impl (cyclomatic 78): LanceDataset._create_index_impl has cyclomatic complexity 78 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/dataset.py"},"region":{"startLine":3924}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aeb2e27ec2c3f503ebbbb7c71dccd2b7c490d28790dfb8746cea5dda453babb"}},{"ruleId":"D1","level":"warning","message":{"text":"ZoneMapIndex::evaluate_zone_against_query (cyclomatic 76): ZoneMapIndex::evaluate_zone_against_query has cyclomatic complexity 76 (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":"rust/lance-index/src/scalar/zonemap.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e61c200817f1f035f248c8d31946f7689497ce5a5d59bb069d14361ce7456f2"}},{"ruleId":"D1","level":"warning","message":{"text":"Dataset::scanner (cyclomatic 66): Dataset::scanner has cyclomatic complexity 66 (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":"python/src/dataset.rs"},"region":{"startLine":1232}}}],"partialFingerprints":{"codehealthFindingId/v1":"8854b6689408d2600249fd577a16ef85a8aa5857150d77a7260f1f0bca1f99fc"}},{"ruleId":"D1","level":"warning","message":{"text":"BloomFilterIndex::evaluate_block_against_query (cyclomatic 56): BloomFilterIndex::evaluate_block_against_query has cyclomatic complexity 56 (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":"rust/lance-index/src/scalar/bloomfilter.rs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"47944f71e5259001582d0fc1f229f13820d5e0d3da947871e3a7c40bc7f8314b"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::index::append::merge_indices_with_unindexed_frags (cyclomatic 50): lance::index::append::merge_indices_with_unindexed_frags has cyclomatic complexity 50 (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":"rust/lance/src/index/append.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"a23f6b75fb2cbc9522a23d9710015c75667338cec197765a68c33f261a97ea86"}},{"ruleId":"D1","level":"warning","message":{"text":"Dataset::create_index (cyclomatic 49): Dataset::create_index 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":"python/src/dataset.rs"},"region":{"startLine":2601}}}],"partialFingerprints":{"codehealthFindingId/v1":"af3d0d8cfc33a8636103182f8da8c92e2f3d9e1f06f3ac79f2f8209a9f2b8cb6"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_arrow_scalar::serde::format_string_to_data_type (cyclomatic 49): lance_arrow_scalar::serde::format_string_to_data_type 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":"rust/arrow-scalar/src/serde.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc01ccd40247b81a8a55f782a597e5c55547ad65b65026d12cdfc21243a6e209"}},{"ruleId":"D1","level":"warning","message":{"text":"TransactionRebase::check_create_index_txn (cyclomatic 48): TransactionRebase::check_create_index_txn has cyclomatic complexity 48 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"02b9ba580d8bc439fc95641f12200c38ad945f02752878052c9520f1370ec92e"}},{"ruleId":"D1","level":"warning","message":{"text":"Wand::complete_maxscore_single_essential (cyclomatic 45): Wand::complete_maxscore_single_essential has cyclomatic complexity 45 (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":"rust/lance-index/src/scalar/inverted/wand_maxscore.rs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f057ad665a403b8ea959ad215f6306bc541717332c7baf322be046235e066a8"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_namespace::schema::arrow_type_to_json (cyclomatic 44): lance_namespace::schema::arrow_type_to_json has cyclomatic complexity 44 (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":"rust/lance-namespace/src/schema.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"46dec146e5deb7424d49d3c238ee91556b9170816f30d6f9cdb23a0a4eab6bb1"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateIndexBuilder::execute_uncommitted_impl (cyclomatic 43): CreateIndexBuilder::execute_uncommitted_impl has cyclomatic complexity 43 (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":"rust/lance/src/index/create.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"b979844ac0362fe2d7f33552d44ee94d6ae4566181dad41d4c4435614e4ff6b8"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::index::frag_reuse::build_frag_reuse_rewrite_entry (cyclomatic 43): lance::index::frag_reuse::build_frag_reuse_rewrite_entry has cyclomatic complexity 43 (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":"rust/lance/src/index/frag_reuse.rs"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0467c8eb2202378d09f059242f0e567092f199fe3d82f65e389c367035e3b01"}},{"ruleId":"D1","level":"warning","message":{"text":"Planner::parse_sql_expr (cyclomatic 43): Planner::parse_sql_expr has cyclomatic complexity 43 (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":"rust/lance-datafusion/src/planner.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2362518ab809715fb70de73d65d5445c6b70a703e68c8afc190e2fbd8f59089"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_arrow_stats::find_min_max_indices (cyclomatic 41): lance_arrow_stats::find_min_max_indices 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":"rust/arrow-stats/src/lib.rs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5ca7e20b9c1b619c844de01bf7381c2da6bb96aca44f760efc2fdeea33477f7"}},{"ruleId":"D1","level":"warning","message":{"text":"TransactionRebase::check_update_txn (cyclomatic 41): TransactionRebase::check_update_txn has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"785fb224de006bb50447430ffe08def7896b638a89390333b124e2adda2e10da"}},{"ruleId":"D1","level":"warning","message":{"text":"TransactionRebase::check_rewrite_txn (cyclomatic 41): TransactionRebase::check_rewrite_txn has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":1234}}}],"partialFingerprints":{"codehealthFindingId/v1":"50faee0fc4005a8cb5cad28f76da47ebfb4e41609f98f359f2efd1b1611c089e"}},{"ruleId":"D1","level":"warning","message":{"text":"pylance::dataset::prepare_vector_index_params (cyclomatic 38): pylance::dataset::prepare_vector_index_params has cyclomatic complexity 38 (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":"python/src/dataset.rs"},"region":{"startLine":5111}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eb3fb13f76c4fdbc06bf61dc04d5b342d1c1ef537e9bf01128d8be29cc30f47"}},{"ruleId":"D1","level":"warning","message":{"text":"LogicalType::try_from (cyclomatic 38): LogicalType::try_from has cyclomatic complexity 38 (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":"rust/lance-core/src/datatypes.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d12f619b33df6f696e40ed561723891100540b8d77192c0da70c6cfc289d05e"}},{"ruleId":"D1","level":"warning","message":{"text":"InvertedPartition::load_posting_lists_with_policy (cyclomatic 36): InvertedPartition::load_posting_lists_with_policy has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/partition.rs"},"region":{"startLine":1314}}}],"partialFingerprints":{"codehealthFindingId/v1":"db7d01514a4c6c51933afae0d424bcc34da4c7a22f73479688e07642e0ba11df"}},{"ruleId":"D1","level":"warning","message":{"text":"PQDistCalculator::accumulate_topk_with_scratch (cyclomatic 36): PQDistCalculator::accumulate_topk_with_scratch has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/pq/storage.rs"},"region":{"startLine":982}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b9701d5fff9a2087317fbb755e14fb08ed7acb08285b4b6b965ac616e07371f"}},{"ruleId":"D1","level":"warning","message":{"text":"DirectoryNamespace::describe_table_impl (cyclomatic 36): DirectoryNamespace::describe_table_impl has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":2062}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff94a7e8f0ee74c3d0da167f9998cb55951e692699ed7c43c65d3b9276d36f5d"}},{"ruleId":"D1","level":"warning","message":{"text":"TransactionRebase::check_data_replacement_txn (cyclomatic 35): TransactionRebase::check_data_replacement_txn has cyclomatic complexity 35 (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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":1604}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa65ac8c93f0d3c54e78dfaac91abc04b1f5254b19b3751dfe9d3f65750fa15c"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_index::vector::graph::beam_search_acorn (cyclomatic 35): lance_index::vector::graph::beam_search_acorn has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/graph.rs"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6c9dbb43dc2e59b2165e910ccffc7e3da178677eb6160dddd2662608918ddd2"}},{"ruleId":"D1","level":"warning","message":{"text":"DirectoryNamespace::query_table (cyclomatic 35): DirectoryNamespace::query_table has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":5366}}}],"partialFingerprints":{"codehealthFindingId/v1":"61bfba43aaba923fb1e64680120769ac91b208fb4e1a6290ec3ed53a9653f447"}},{"ruleId":"D1","level":"warning","message":{"text":"Scanner::vector_search (cyclomatic 34): Scanner::vector_search has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":6102}}}],"partialFingerprints":{"codehealthFindingId/v1":"3864c763d1165fe1e67e41a59431da6156bf33f264dc24c63e124c4189286e30"}},{"ruleId":"D1","level":"warning","message":{"text":"MergeInsertJob::update_fragments (cyclomatic 34): MergeInsertJob::update_fragments has cyclomatic complexity 34 (threshold 15). Of this number, 21 points are the body\u0027s own statements and 13 belong to 2 function items inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":1580}}}],"partialFingerprints":{"codehealthFindingId/v1":"961db8c268f78348fd8e739157223ee311b6be5bc0aef2066427ead89248473b"}},{"ruleId":"D1","level":"warning","message":{"text":"IVFIndex::search_partitions (cyclomatic 34): IVFIndex::search_partitions has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf/v2.rs"},"region":{"startLine":2318}}}],"partialFingerprints":{"codehealthFindingId/v1":"f404b351fb43f482c80a60e30037013c16462f4447129c830eb1266fa62387dd"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::optimize::commit_compaction (cyclomatic 34): lance::dataset::optimize::commit_compaction has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":3156}}}],"partialFingerprints":{"codehealthFindingId/v1":"b14ce17cab831ec4ad29199dd23690eda1fd5f22cdf1978f87ee574faf400677"}},{"ruleId":"D1","level":"warning","message":{"text":"DecodeMiniBlockTask::map_range (cyclomatic 34): DecodeMiniBlockTask::map_range has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf72ec6fb64bb0f8400814a6dd406398886eb315ae925f76d12e3dfc2f5adbd2"}},{"ruleId":"D1","level":"warning","message":{"text":"Transaction::try_from (cyclomatic 34): Transaction::try_from has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/proto.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d5b6bc96b31d1abd17c1cf4ae86a07b746b6bff87322dcd693a81e208db45f"}},{"ruleId":"D1","level":"warning","message":{"text":"fsst::fsst::build_symbol_table (cyclomatic 33): fsst::fsst::build_symbol_table has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/compression/fsst/src/fsst.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"21c690cfe2d221775126969d42b190dcef051f058b2d344eb35250b8f074b707"}},{"ruleId":"D1","level":"warning","message":{"text":"CleanupTask::cleanup_file_if_not_referenced (cyclomatic 33): CleanupTask::cleanup_file_if_not_referenced has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":975}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ef4da7aa1e4be9e7981a60684883bb640c61ebb0448721cfac2d41af35a7c13"}},{"ruleId":"D1","level":"warning","message":{"text":"pylance::dataset::get_write_params (cyclomatic 32): pylance::dataset::get_write_params 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":"python/src/dataset.rs"},"region":{"startLine":4901}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cdd246382f0332e6dfb5abcc1163c9ed63ac643704d78c4aa3e218d7abbe130"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_datafusion::substrait::normalize_expr (cyclomatic 31): lance_datafusion::substrait::normalize_expr has cyclomatic complexity 31 (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":"rust/lance-datafusion/src/substrait.rs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"882adb0e33d22512d81dee471b1891e2fae608171a64a2cc08d5e9fe74cc99d3"}},{"ruleId":"D1","level":"warning","message":{"text":"PackedStructVariablePerValueDecompressor::decompress (cyclomatic 31): PackedStructVariablePerValueDecompressor::decompress 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":"rust/lance-encoding/src/encodings/physical/packed.rs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"167232ec3661a1ba5da7a49bc7866f81e491b91360d795b0f2f245d62bf10750"}},{"ruleId":"D1","level":"warning","message":{"text":"RawInvertedIndexParams::resolve (cyclomatic 31): RawInvertedIndexParams::resolve has cyclomatic complexity 31 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/tokenizer.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"3629c457c000314cb930dbac58b91f588925b3d686f606bec0fa08713ba7a73f"}},{"ruleId":"D1","level":"warning","message":{"text":"Scanner::plan_compound_scorer (cyclomatic 30): Scanner::plan_compound_scorer 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":4837}}}],"partialFingerprints":{"codehealthFindingId/v1":"358ab1b8246cca4dc491f55d56c9cd3cf868564274e5c8867e60b37846dfce04"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::io::exec::count_pushdown::try_rewrite (cyclomatic 30): lance::io::exec::count_pushdown::try_rewrite 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":"rust/lance/src/io/exec/count_pushdown.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a2ea44199610456dd29fc15d9c2fccaa7bc8c8a952de39b2fca420d40c1509f"}},{"ruleId":"D1","level":"warning","message":{"text":"PrimitiveStructuralEncoder::encode_dense_page (cyclomatic 30): PrimitiveStructuralEncoder::encode_dense_page 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":7170}}}],"partialFingerprints":{"codehealthFindingId/v1":"0378bef4af40fb34870b0b6f4345d8876d1da646301c60078c273962ce7ab664"}},{"ruleId":"D1","level":"warning","message":{"text":"Wand::search (cyclomatic 30): Wand::search 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":2667}}}],"partialFingerprints":{"codehealthFindingId/v1":"46fb447610164c91686075bc8bca9b2aa58e6d43fe7ee120cd2b83aee62b7a18"}},{"ruleId":"D1","level":"warning","message":{"text":"dataset._build_vector_search_query (cyclomatic 30): dataset._build_vector_search_query has cyclomatic complexity 30 (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":"python/python/lance/dataset.py"},"region":{"startLine":8430}}}],"partialFingerprints":{"codehealthFindingId/v1":"2906b0ec3444ee546de17673dcac2fd370df37b3cf8d85925f9da74384776826"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_jni::transaction::convert_to_rust_operation (cyclomatic 29): lance_jni::transaction::convert_to_rust_operation has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/transaction.rs"},"region":{"startLine":1682}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ae3565b4d69d64b150ce8c3f19361374d4fb779a7cdfa5756d1cb6ca630701e"}},{"ruleId":"D1","level":"warning","message":{"text":"Merger::execute_batch (cyclomatic 29): Merger::execute_batch has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":3533}}}],"partialFingerprints":{"codehealthFindingId/v1":"dab2b5b1e2ed8b9595ad68b4ec1484a7a21adf82b99b3d0690b51af8d2a6e763"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_jni::blocking_scanner::build_scanner_with_options (cyclomatic 28): lance_jni::blocking_scanner::build_scanner_with_options has cyclomatic complexity 28 (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":"java/lance-jni/src/blocking_scanner.rs"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"98e2199aca117e19cf18acb39ede99850904994711e5e37124370d21aa7fb2cf"}},{"ruleId":"D1","level":"warning","message":{"text":"Scanner::create_plan_impl (cyclomatic 28): Scanner::create_plan_impl 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":3271}}}],"partialFingerprints":{"codehealthFindingId/v1":"16978ffb338f007faf7fb4543760abd00adf565dae4121681e5d49432229da40"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::versions::check_manifest_storage_contract (cyclomatic 28): lance::dataset::versions::check_manifest_storage_contract 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":"rust/lance/src/dataset/versions/mod.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4eae89bb44b802fc0706a83196844cf36b0f7d3fe6642b0ad3c0caf5c85cb03"}},{"ruleId":"D1","level":"warning","message":{"text":"SerializerContext::normalize_specials_and_plan_splits (cyclomatic 28): SerializerContext::normalize_specials_and_plan_splits has cyclomatic complexity 28 (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":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"5541508cb4653f087061b6923379a919310857db2d041f060419e80656859b3f"}},{"ruleId":"D1","level":"warning","message":{"text":"Wand::next_and_candidate (cyclomatic 28): Wand::next_and_candidate 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":3922}}}],"partialFingerprints":{"codehealthFindingId/v1":"64b6e6b13c9b26a282461f32413c993bedfc130c3fbfa6bd38c33290e7e1249d"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_io::local::remove_empty_dirs (cyclomatic 28): lance_io::local::remove_empty_dirs 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":"rust/lance-io/src/local.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"52745b4a74a77b3aa139df81e68c572aa5a687732650bd92e1c4070d2ed09453"}},{"ruleId":"D1","level":"warning","message":{"text":"RowIdSequence::mask_to_offset_ranges (cyclomatic 28): RowIdSequence::mask_to_offset_ranges 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":"rust/lance-table/src/rowids.rs"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"faf691737d152b74316e8f2d7ff157db0d0330ce2cb1284565a6cebe66c61f18"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_jni::transaction::convert_to_java_operation_inner (cyclomatic 27): lance_jni::transaction::convert_to_java_operation_inner has cyclomatic complexity 27 (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":"java/lance-jni/src/transaction.rs"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"844a2b9ccbfee0e7ee3ca242fc678bf94a3b8cb6778e69acdbe92793e333fcf6"}},{"ruleId":"D1","level":"warning","message":{"text":"CleanupTask::delete_unreferenced_files (cyclomatic 27): CleanupTask::delete_unreferenced_files 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":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dee1820559465b3c89cb2a6299f7c9a59dc2a2729c15f927e9640168c372723"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::optimize::binary_copy::rewrite_files_binary_copy (cyclomatic 27): lance::dataset::optimize::binary_copy::rewrite_files_binary_copy 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":"rust/lance/src/dataset/optimize/binary_copy.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"49e57777da57a8d5d72116a9e48b3d74b7df13f9721de6e7966d659db4ca2337"}},{"ruleId":"D1","level":"warning","message":{"text":"Builder.build (cyclomatic 27): Builder.build has cyclomatic complexity 27 (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":"java/src/main/java/org/lance/index/scalar/InvertedIndexParams.java"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"77b206a5374e5eaf1cf276d15b0318c09f6ed245da53e1e97351a3ed0b7317d3"}},{"ruleId":"D1","level":"warning","message":{"text":"LanceDataset._prepare_scalar_index_request (cyclomatic 27): LanceDataset._prepare_scalar_index_request 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":"python/python/lance/dataset.py"},"region":{"startLine":3491}}}],"partialFingerprints":{"codehealthFindingId/v1":"9482c6ac25cef9b7ab2755aee0214d3750d3d004b2670b3bc1dd5a9b945a5607"}},{"ruleId":"D1","level":"warning","message":{"text":"DatasetBuilder::load_impl (cyclomatic 26): DatasetBuilder::load_impl has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/builder.rs"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"da504b1338e8c7141d24426b75fc054ff99a1fcb003fa479f0f8788c775cba47"}},{"ruleId":"D1","level":"warning","message":{"text":"FtsMemIndex::to_index_builder (cyclomatic 26): FtsMemIndex::to_index_builder has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":2689}}}],"partialFingerprints":{"codehealthFindingId/v1":"db24672ac7ebed4fc5f410145dc87be85204a130de3615a7fb1a6f630fb99de7"}},{"ruleId":"D1","level":"warning","message":{"text":"DirectoryNamespace::build_index_params (cyclomatic 26): DirectoryNamespace::build_index_params has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":2410}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c4f824273a49e4bb5a020839a6bc78bed994e2bb220e731310bd162e7c0c1e5"}},{"ruleId":"D1","level":"warning","message":{"text":"BlobPreprocessor::logical_to_prepared_blob_array (cyclomatic 25): BlobPreprocessor::logical_to_prepared_blob_array 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":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":1122}}}],"partialFingerprints":{"codehealthFindingId/v1":"219c5a23ec4dd661bdaef8dc0240bef2fe78a4b240f4cd237f121626628cef3b"}},{"ruleId":"D1","level":"warning","message":{"text":"Dataset::merge_existing_index_segments (cyclomatic 25): Dataset::merge_existing_index_segments 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":"rust/lance/src/index.rs"},"region":{"startLine":2095}}}],"partialFingerprints":{"codehealthFindingId/v1":"410f2a744872f9db77d630dfbe3cb421899b5b75c81386606c94c3c52a79a322"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::optimize::rewrite_files (cyclomatic 25): lance::dataset::optimize::rewrite_files 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":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":2443}}}],"partialFingerprints":{"codehealthFindingId/v1":"59a431c3466e2a8d5656756141ff16b1501f8dd66f325b1108e04981d46cdf3f"}},{"ruleId":"D1","level":"warning","message":{"text":"PostingIterator::merge_optional_freqs (cyclomatic 25): PostingIterator::merge_optional_freqs 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":"rust/lance-index/src/scalar/inverted/wand_maxscore.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7fbddeb6255e2544e9830f768aa76ab4d0bf957870b78249470a2bba1dea4ec"}},{"ruleId":"D1","level":"warning","message":{"text":"DirectoryNamespace::alter_transaction (cyclomatic 25): DirectoryNamespace::alter_transaction 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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":4523}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc5a1d4a168499faa0703b3e463087327aa226f410819b65de80d653f804c3f4"}},{"ruleId":"D1","level":"warning","message":{"text":"U64Segment::with_new_high (cyclomatic 25): U64Segment::with_new_high 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":"rust/lance-table/src/rowids/segment.rs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"26bd4b9f9a6a8d6465d8c6692d3dd99d5e4631f44bc54f97e3720c0c9cb9927a"}},{"ruleId":"D1","level":"warning","message":{"text":"types._coerce_reader (cyclomatic 25): types._coerce_reader 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":"python/python/lance/types.py"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"11d76d3d83403c382a19ae117350d764a9977a615c21b340488118e7b5cb26e7"}},{"ruleId":"D1","level":"warning","message":{"text":"FileFragment::scanner (cyclomatic 24): FileFragment::scanner has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/fragment.rs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"d62bbb54f338a594ae9f7b121591d4e556e437743a01b06edf421500a3c89057"}},{"ruleId":"D1","level":"warning","message":{"text":"PyLance::into_pyobject (cyclomatic 24): PyLance::into_pyobject 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":"python/src/transaction.rs"},"region":{"startLine":659}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b420076c2f48d185ac74f8630d32c80defccc2656dd32b4ea2660706aa5033"}},{"ruleId":"D1","level":"warning","message":{"text":"CompactionOptions::apply_dataset_config (cyclomatic 24): CompactionOptions::apply_dataset_config 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":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c4ea47cdfa87d5023dc980c7906f278473ab4c6004a40a3c21fc2690edaed1a"}},{"ruleId":"D1","level":"warning","message":{"text":"CommitBuilder::execute_inner (cyclomatic 24): CommitBuilder::execute_inner has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/commit.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"43acb54b80b4527db8e4a4a3e410c64a4826fed1a9011232ea7727a1c15d62a2"}},{"ruleId":"D1","level":"warning","message":{"text":"IvfIndexBuilder::build_partitions (cyclomatic 24): IvfIndexBuilder::build_partitions 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":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":999}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cef3dbc24aabfc7911185e10b262dfcc044647e1dae0aff30c0e636ecd3f33b"}},{"ruleId":"D1","level":"warning","message":{"text":"TransactionRebase::check_txn (cyclomatic 24): TransactionRebase::check_txn 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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"65da754b31e83749a9b229efd36c65c46483ad2a059d8a5f2f1c1b00cc2d480b"}},{"ruleId":"D1","level":"warning","message":{"text":"CompoundQueryExec::execute (cyclomatic 24): CompoundQueryExec::execute 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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"97ebb46c5fd3fc3b515e9e60e98cbfca8438908189e34d7752668e9390fc97a5"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::write::do_write_fragments_impl (cyclomatic 24): lance::dataset::write::do_write_fragments_impl 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":"rust/lance/src/dataset/write.rs"},"region":{"startLine":919}}}],"partialFingerprints":{"codehealthFindingId/v1":"85f683281ff3ce3a366b9e77b5768fda821d547a00de446bc714df8c3fe579cc"}},{"ruleId":"D1","level":"warning","message":{"text":"IndexWorker::process_document (cyclomatic 24): IndexWorker::process_document 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":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":1573}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf8b8f6cd0efd7d7118129b5628e7a33b6e6c1ebc68dc61087001519d6dffee6"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_index::scalar::inverted::index::flat_search::tokenize_and_count (cyclomatic 24): lance_index::scalar::inverted::index::flat_search::tokenize_and_count 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":"rust/lance-index/src/scalar/inverted/index/flat_search.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"144d90e3b7c3986841a5d29bc4521987c99d49fe1cbd6251a14066166d41cd2f"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_index::scalar::expression::extract_like_leading_prefix (cyclomatic 24): lance_index::scalar::expression::extract_like_leading_prefix 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":"rust/lance-index/src/scalar/expression.rs"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"39e9867ca77ec1528061e993a0f4b9b1060657dcfcb9e2b17601b85ca6afb697"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_table::utils::stream::apply_row_id_and_deletes_with_system_columns (cyclomatic 24): lance_table::utils::stream::apply_row_id_and_deletes_with_system_columns has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/utils/stream.rs"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e4cf7fd60ec89934deef5aba1985741ef05c5cfa135763f930ebf3346039aad"}},{"ruleId":"D1","level":"warning","message":{"text":"Dataset::new (cyclomatic 23): Dataset::new has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f878503721110b5fb1600fa4b3c5b52832a4c609acf3650ebaeaffc6dc5d5d8"}},{"ruleId":"D1","level":"warning","message":{"text":"FtsTokenizerOptions::apply (cyclomatic 23): FtsTokenizerOptions::apply has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/fts.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"268872f876b315642addf0aeb563e41a682ff9e6289d0b552a413507aab8bd72"}},{"ruleId":"D1","level":"warning","message":{"text":"FtsIndexExec::materialize_rows_sorted (cyclomatic 23): FtsIndexExec::materialize_rows_sorted has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/fts.rs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"caf8dbb3e117275719fce0bab149e0af96a5bd565f758a3b6a608b51c2f5f528"}},{"ruleId":"D1","level":"warning","message":{"text":"TakeOperation::try_from_expr (cyclomatic 23): TakeOperation::try_from_expr has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":1337}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ca0893a7ee8182338bdfc0104e369705e266e593dc5639e202439767f261f8c"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::schema_evolution::alter_columns (cyclomatic 23): lance::dataset::schema_evolution::alter_columns has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/schema_evolution.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"f70a0e1dacac2cc33cc5674d4d00730cc1fcbeec67c309b9ceef3821cbffdd59"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::io::commit::commit_transaction (cyclomatic 23): lance::io::commit::commit_transaction has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit.rs"},"region":{"startLine":1576}}}],"partialFingerprints":{"codehealthFindingId/v1":"938626e8ea7a5a2a4dd214111d4d514a0cd44fb368f78a71c3d51ed1e58f0a36"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_datafusion::signed_zero::rewrite_node (cyclomatic 23): lance_datafusion::signed_zero::rewrite_node has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/signed_zero.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"754ad16e3d42588fe39c562d587314dbb4cd3c3365e4a9d469a3a58790ed0c43"}},{"ruleId":"D1","level":"warning","message":{"text":"BitmapIndex::search_with_options (cyclomatic 23): BitmapIndex::search_with_options has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/bitmap.rs"},"region":{"startLine":768}}}],"partialFingerprints":{"codehealthFindingId/v1":"97f105676c1c049ae5c2837838ad705846ac93c0ac6a0e497c92c4e766a5f0c2"}},{"ruleId":"D1","level":"warning","message":{"text":"BTreeLookup::pages_between (cyclomatic 23): BTreeLookup::pages_between 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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":1059}}}],"partialFingerprints":{"codehealthFindingId/v1":"01e92618498057904593d958f13c5e2baffa879453d031e34f9c9d378a5d3416"}},{"ruleId":"D1","level":"warning","message":{"text":"CompoundScorerPlan::analyze_node (cyclomatic 23): CompoundScorerPlan::analyze_node has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"41968bc00ac66657ee308597b07ac2cb0b9404365f5a09282c4c7c1458ffb327"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_table::transaction::row_version::resolve_update_version_metadata (cyclomatic 23): lance_table::transaction::row_version::resolve_update_version_metadata has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/row_version.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"b14eb65f0dd7e90c37b60385ad7255eb2b17b4f8d9709ee18ae0c2d332e10e8b"}},{"ruleId":"D1","level":"warning","message":{"text":"dataset.write_dataset (cyclomatic 23): dataset.write_dataset has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/dataset.py"},"region":{"startLine":8037}}}],"partialFingerprints":{"codehealthFindingId/v1":"689bf29bfba459a6b1802f5cde9dfcea4f5e90212b513dd613e00172897e8230"}},{"ruleId":"D1","level":"warning","message":{"text":"FileFragment::validate (cyclomatic 22): FileFragment::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":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":1765}}}],"partialFingerprints":{"codehealthFindingId/v1":"14c5c0324c448ba9ca72fda56a5a8ef0c04df8aa392783de747a8d86c3c6b1a8"}},{"ruleId":"D1","level":"warning","message":{"text":"Dataset::commit_existing_index_segments (cyclomatic 22): Dataset::commit_existing_index_segments 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":"rust/lance/src/index.rs"},"region":{"startLine":2260}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a40cda5912482468557b3fde625df40ecb12bbcd19d7a5220908dfd553c9c82"}},{"ruleId":"D1","level":"warning","message":{"text":"Dataset::open_vector_index_from_metadata (cyclomatic 22): Dataset::open_vector_index_from_metadata 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":"rust/lance/src/index.rs"},"region":{"startLine":3376}}}],"partialFingerprints":{"codehealthFindingId/v1":"80a996ec2a142dd191f72344dd1c26274f1d57916eedcbcf076c4bb3ae1969ab"}},{"ruleId":"D1","level":"warning","message":{"text":"IvfIndexBuilder::merge_partitions (cyclomatic 22): IvfIndexBuilder::merge_partitions 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":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":1597}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8bf663b14beb35f0c50d0089ce522bccb76cbc7db6ae7f0524de08e5e991615"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::index::scalar::index_matches_criteria (cyclomatic 22): lance::index::scalar::index_matches_criteria 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":"rust/lance/src/index/scalar.rs"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"56c914c34db1528dc7838d367132a4fc1ade0bda3c7bd2b0520934eb73f8675e"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::index::vector::build_distributed_vector_index (cyclomatic 22): lance::index::vector::build_distributed_vector_index 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":"rust/lance/src/index/vector.rs"},"region":{"startLine":793}}}],"partialFingerprints":{"codehealthFindingId/v1":"e613d6d4fbc50f896f7e085b8ba71607d002d1b45791bb6455c9c3ef154a312f"}},{"ruleId":"D1","level":"warning","message":{"text":"ChunkInstructions::schedule_instructions (cyclomatic 22): ChunkInstructions::schedule_instructions 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":2407}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5cb006d445dee322cd9552dd443fbc70fa1d1b03dff31e7aa4bf1e021b49b98"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_file::concat::validate_blob_field (cyclomatic 22): lance_file::concat::validate_blob_field 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":"rust/lance-file/src/concat.rs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd6dc2cba2de384229fe37095d271761adb2c50896f2d006035e16b3f9b84c9"}},{"ruleId":"D1","level":"warning","message":{"text":"Wand::prepare_score_first_and_window (cyclomatic 22): Wand::prepare_score_first_and_window 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":3716}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7159c14ed77c3f2f9c98ee004b934b999bef2a963c9a080e5991d2a5736691e"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_index::vector::bq::ex_dot::unpack_group (cyclomatic 22): lance_index::vector::bq::ex_dot::unpack_group has cyclomatic complexity 22 (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":"rust/lance-index/src/vector/bq/ex_dot.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"afefc3bda1a348ce4f1d435e3e38acaae0bdad385334a98db2290ebbdb914d8b"}},{"ruleId":"D1","level":"warning","message":{"text":"LanceDataset.__iter__ (cyclomatic 22): LanceDataset.__iter__ 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":"python/python/lance/torch/data.py"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"b096b0c12d076de0037b0d6ba4a00313e813a90889f35a6ffa9be9dfaf0d3c57"}},{"ruleId":"D1","level":"warning","message":{"text":"pylance::dataset::vector_query_params_from_dict (cyclomatic 21): pylance::dataset::vector_query_params_from_dict has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":5680}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8702fb2dd7f488a3c65c8c55146cee45df8c5654179bed6b727ad36fae5fe98"}},{"ruleId":"D1","level":"warning","message":{"text":"FileFragment::update_columns_with_offsets (cyclomatic 21): FileFragment::update_columns_with_offsets 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":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":2393}}}],"partialFingerprints":{"codehealthFindingId/v1":"8102f224f18d226d6579e70b4427d89540ff21daf32e9c0cfe0c056dfdbb4de6"}},{"ruleId":"D1","level":"warning","message":{"text":"ScalarBackend::insert_array_and_report_existing (cyclomatic 21): ScalarBackend::insert_array_and_report_existing 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":"rust/lance/src/dataset/mem_wal/index/btree.rs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9731a454f97ae694ce3bf85ed98ca884223b436adf869e06060dbcf5c6324f3"}},{"ruleId":"D1","level":"warning","message":{"text":"DefaultCompactionPlanner::plan (cyclomatic 21): DefaultCompactionPlanner::plan 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":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"823ae6b34cc21b93c81766a08f1d725e3d356efd71423146a44096af52fd64a9"}},{"ruleId":"D1","level":"warning","message":{"text":"Dataset::create_data_file (cyclomatic 21): Dataset::create_data_file has cyclomatic complexity 21 (threshold 15). Of this number, 13 points are the body\u0027s own statements and 8 belong to 3 function items inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset.rs"},"region":{"startLine":2262}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d6d61791c1c71206ce0c5476e57e74e56e27aa03a3f18a94becec6f92b81962"}},{"ruleId":"D1","level":"warning","message":{"text":"FilteredReadStream::plan_scan (cyclomatic 21): FilteredReadStream::plan_scan 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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"2900f75dbec46674c7c8f655f6903f10fae9c5a4f15c9ae61783c645828a973f"}},{"ruleId":"D1","level":"warning","message":{"text":"FilteredReadExec::try_new_row_stream (cyclomatic 21): FilteredReadExec::try_new_row_stream has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":2194}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ef02a8e15d5d6054886a60f31bc7219d4c92bdb1fd22d34a025f8a9e5c2b8bf"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::index::vector::ivf::train_weighted_hierarchical_f32_kmeans (cyclomatic 21): lance::index::vector::ivf::train_weighted_hierarchical_f32_kmeans 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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":4376}}}],"partialFingerprints":{"codehealthFindingId/v1":"c565f8d70ec634790fdd54b6f6be0c870741359209888019bcc631185248a13d"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::index::vector::build_vector_index_impl (cyclomatic 21): lance::index::vector::build_vector_index_impl 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":"rust/lance/src/index/vector.rs"},"region":{"startLine":1201}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d653bf9c18ef74e0f07b7c3f1dfb9e3c60943ee6f9163f3ee7cd830c30bdaed"}},{"ruleId":"D1","level":"warning","message":{"text":"Field::project_by_field (cyclomatic 21): Field::project_by_field has cyclomatic complexity 21 (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":"rust/lance-core/src/datatypes/field.rs"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"577c6a54e0949c7c4ce1a8ccf4f78da059def909b559efde16979156ac3e71de"}},{"ruleId":"D1","level":"warning","message":{"text":"RepDefUnraveler::unravel_offsets (cyclomatic 21): RepDefUnraveler::unravel_offsets 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":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":1720}}}],"partialFingerprints":{"codehealthFindingId/v1":"29cb7400b48e50ce6d1ba8e153fc4dc7654a11b4e33abc98ead5e2ad9b8ae14b"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_encoding::encodings::logical::primitive::dict::dictionary_encode (cyclomatic 21): lance_encoding::encodings::logical::primitive::dict::dictionary_encode 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":"rust/lance-encoding/src/encodings/logical/primitive/dict.rs"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b1e3634d8ba8838616b9d9b447a465c01b644be79d17d663dd3fc7e1041f506"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_encoding::array_encoding::physical::decoder_from_array_encoding (cyclomatic 21): lance_encoding::array_encoding::physical::decoder_from_array_encoding 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":"rust/lance-encoding/src/array_encoding/physical.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"f82021a1c4ffcaa0d4a93a5e0fb9fac8ae9d4c3ad3bfc2e54416f45610b23e2f"}},{"ruleId":"D1","level":"warning","message":{"text":"RQTransformer::transform (cyclomatic 21): RQTransformer::transform 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":"rust/lance-index/src/vector/bq/transform.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bf65ac9c38ea8538dbe73d7b710ef6dc4936e5bd3f82668fa7740b6531b09fb"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_index::vector::distributed::index_merger::fixed_size_list_almost_equal (cyclomatic 21): lance_index::vector::distributed::index_merger::fixed_size_list_almost_equal 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":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae44c9b68b2ad9c9a3bd8e80e645c3f2c31747ba6565e5cf589246e9ba2fa38a"}},{"ruleId":"D1","level":"warning","message":{"text":"data._to_tensor (cyclomatic 21): data._to_tensor 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":"python/python/lance/torch/data.py"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cdbe4fd1dfb1aec2a7b67609574a1cdbcbf32058205be0eb487ffedf9ba5f50"}},{"ruleId":"D1","level":"warning","message":{"text":"pylance::dataset::optimize::parse_compaction_options (cyclomatic 20): pylance::dataset::optimize::parse_compaction_options 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":"python/src/dataset/optimize.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b11a7d8d1da27051f8f7538f69bd0aadddf69cd6141494e80c672899ee0df43"}},{"ruleId":"D1","level":"warning","message":{"text":"BytesBackend::insert_array_and_report_existing (cyclomatic 20): BytesBackend::insert_array_and_report_existing 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":"rust/lance/src/dataset/mem_wal/index/btree.rs"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"42503ef2b733143e0a4e23ffec95e245de69f09afe44b4a417b705eae1b88d78"}},{"ruleId":"D1","level":"warning","message":{"text":"LsmFtsSearchPlanner::plan_bound_search (cyclomatic 20): LsmFtsSearchPlanner::plan_bound_search has cyclomatic complexity 20 (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":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"a10966324df8dc6af2a30add6b3f9be37d7957fbf6b142713a260f2b5a5587f6"}},{"ruleId":"D1","level":"warning","message":{"text":"Dataset::filter_addr_or_ids (cyclomatic 20): Dataset::filter_addr_or_ids 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":"rust/lance/src/dataset.rs"},"region":{"startLine":2901}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f65cb731d981a89d08642d576f1dab3800283f99ba3addd79fa104827dabbb5"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::take::do_take_rows (cyclomatic 20): lance::dataset::take::do_take_rows 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":"rust/lance/src/dataset/take.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"5013f65a7f2ee26274f778e13824de62da7a1b083dc373ae1521b057133e7923"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::index::frag_reuse::validate_folded_deletions (cyclomatic 20): lance::index::frag_reuse::validate_folded_deletions has cyclomatic complexity 20 (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":"rust/lance/src/index/frag_reuse.rs"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5c531703d6de5899d07f00d40c76e0c03332469e39e05a2df95d8f043cab56e"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::optimize::remapping::remap_index (cyclomatic 20): lance::dataset::optimize::remapping::remap_index 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":"rust/lance/src/dataset/optimize/remapping.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"8280e6269f8e57cbf8de924b55597f4e45d3319b8c8850a13b3b777a9b5064ab"}},{"ruleId":"D1","level":"warning","message":{"text":"BitpackedPageDecoder::decode (cyclomatic 20): BitpackedPageDecoder::decode 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":"rust/lance-encoding/src/array_encoding/physical/bitpack.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2ddf6092cf58dab2e5e05f5cce52b64c930263a439fd22880448ee18147db14"}},{"ruleId":"D1","level":"warning","message":{"text":"ArrayFieldEncodingStrategy::validate_v2_0_array_reachability (cyclomatic 20): ArrayFieldEncodingStrategy::validate_v2_0_array_reachability 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":"rust/lance-encoding/src/array_encoding/strategy.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"5679dc3922e69a7db1b495646b517fee3fc04e310583d3759191187157336902"}},{"ruleId":"D1","level":"warning","message":{"text":"DataBlock::from_arrays (cyclomatic 20): DataBlock::from_arrays 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":"rust/lance-encoding/src/data.rs"},"region":{"startLine":1891}}}],"partialFingerprints":{"codehealthFindingId/v1":"a529fb2a7a74feb2d51594b87958fb0db95f23be314e614986423e41afa49235"}},{"ruleId":"D1","level":"warning","message":{"text":"Wand::next (cyclomatic 20): Wand::next 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":3833}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5743693b5232d2cc32abcaed10b7efaf26997793239c5de800fc989aefb26c5"}},{"ruleId":"D1","level":"warning","message":{"text":"RQPairScorer::stage (cyclomatic 20): RQPairScorer::stage has cyclomatic complexity 20 (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":"rust/lance-index/src/vector/bq/pairwise.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c78a61e524aa3973d1747d85aa48db1b89d5feeb32a94b39422fe0fc737f225"}},{"ruleId":"D1","level":"warning","message":{"text":"MemTableBruteForceVectorExec::compute_topk (cyclomatic 19): MemTableBruteForceVectorExec::compute_topk 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a3afea9ae6cc879bab714541e80379c6d58db74055d13849556968c9f2110ae"}},{"ruleId":"D1","level":"warning","message":{"text":"LsmFtsSearchPlanner::build_source_plan (cyclomatic 19): LsmFtsSearchPlanner::build_source_plan 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":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bc56635156bcff50c8fa90ff4f8ad2679a7014004311a76964307d8e049c932"}},{"ruleId":"D1","level":"warning","message":{"text":"Scanner::plan_phrase_query (cyclomatic 19): Scanner::plan_phrase_query 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5316}}}],"partialFingerprints":{"codehealthFindingId/v1":"e29b423f1054080b34c3590996d0617f789e47ce087cd226d9ae5d151332bd8d"}},{"ruleId":"D1","level":"warning","message":{"text":"MergeInsertJob::execute_uncommitted_impl (cyclomatic 19): MergeInsertJob::execute_uncommitted_impl 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":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":2726}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcc6a34e099b386ff1006c0ba1699748a647e27add3c10ccb40342636362574c"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::index::vector::dedup::plan (cyclomatic 19): lance::index::vector::dedup::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":"rust/lance/src/index/vector/dedup.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"6588c50b52a048b71162458b62b6ee76f5e52a3dc3afe330b87d054f4be2e19e"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::io::commit::do_commit_new_dataset (cyclomatic 19): lance::io::commit::do_commit_new_dataset 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":"rust/lance/src/io/commit.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"d561d4a433f4937b1574fbbc6279d523255181d1162170cf04f6a6ef8db54c7e"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::write::validate_and_resolve_target_bases_with_primary (cyclomatic 19): lance::dataset::write::validate_and_resolve_target_bases_with_primary 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":"rust/lance/src/dataset/write.rs"},"region":{"startLine":1426}}}],"partialFingerprints":{"codehealthFindingId/v1":"da8874cac088f0a46e36e403963f3f2c36a53227d5b5e1cbce514e90b36facef"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::blob::collect_external_blob_uris (cyclomatic 19): lance::dataset::blob::collect_external_blob_uris 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":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"005db3b488e2acc09aa83207c9a638628c1634feadef69069e379e7f9f0a147b"}},{"ruleId":"D1","level":"warning","message":{"text":"Field::try_from (cyclomatic 19): Field::try_from 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":"rust/lance-core/src/datatypes/field.rs"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"39145e3b9ccba8040087fcc02c3c03b0489a875aa5acaeafa70bcaac56027187"}},{"ruleId":"D1","level":"warning","message":{"text":"SparseStructuralScheduler::validate_value_encoding (cyclomatic 19): SparseStructuralScheduler::validate_value_encoding 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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":1425}}}],"partialFingerprints":{"codehealthFindingId/v1":"a224340faad189d86a76c2233393a2c8dd6ba8b7363bf925e0594e30db758085"}},{"ruleId":"D1","level":"warning","message":{"text":"DecodeSparseStructuralTask::validate_value_buffers (cyclomatic 19): DecodeSparseStructuralTask::validate_value_buffers 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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":3453}}}],"partialFingerprints":{"codehealthFindingId/v1":"77973b0177c10115580499925ab3fd4fa39824ae7e0ce235effebee9e638410c"}},{"ruleId":"D1","level":"warning","message":{"text":"PrimitiveStructuralEncoder::serialize_miniblocks (cyclomatic 19): PrimitiveStructuralEncoder::serialize_miniblocks 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":5751}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee60b2b9742020c323d633896b0ad1c783563c3eaac524c70f3a1fc76dfdf929"}},{"ruleId":"D1","level":"warning","message":{"text":"PrimitiveStructuralEncoder::is_constant_values (cyclomatic 19): PrimitiveStructuralEncoder::is_constant_values 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6196}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f4043e8f16c2bbe6b2af2a88f084725cf7a45aa55052817063819575ba30fa6"}},{"ruleId":"D1","level":"warning","message":{"text":"PrimitiveStructuralEncoder::sample_unique_ratio (cyclomatic 19): PrimitiveStructuralEncoder::sample_unique_ratio has cyclomatic complexity 19 (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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6962}}}],"partialFingerprints":{"codehealthFindingId/v1":"b178f2a1cf695c9dbd16fe4203d8d8d39274d3a5248d548b3f442003c5f874a2"}},{"ruleId":"D1","level":"warning","message":{"text":"RepDefBuilder::concat_layers (cyclomatic 19): RepDefBuilder::concat_layers 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":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":1409}}}],"partialFingerprints":{"codehealthFindingId/v1":"146116360d0f8400e3d3850b589e9b56db627f500d8ec7916a1333cf6a288e55"}},{"ruleId":"D1","level":"warning","message":{"text":"ReqOptScorer::position (cyclomatic 19): ReqOptScorer::position 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":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":3156}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d5c3a051f4c966ab83c7e159a10b4cdfd43bfe03914794b5777448c9b54bc24"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_io::uring::thread::run_uring_thread (cyclomatic 19): lance_io::uring::thread::run_uring_thread 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":"rust/lance-io/src/uring/thread.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f0b130ba3c43e0d7f4f2bd2dcd39e153c6962baf23990c479c710e07e06a116"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_jni::index::determine_index_type (cyclomatic 18): lance_jni::index::determine_index_type 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":"java/lance-jni/src/index.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"cee656eb79f6e706cad3956a8e66cf83335bc8425af13c6b498dee4f1e5fae3a"}},{"ruleId":"D1","level":"warning","message":{"text":"PyLance::extract (cyclomatic 18): PyLance::extract 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":"python/src/transaction.rs"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"70a482ebc80de684b6c1bab410b38ee6d09101bb87977656f428bf55e0c50a73"}},{"ruleId":"D1","level":"warning","message":{"text":"Scanner::new_filtered_read (cyclomatic 18): Scanner::new_filtered_read 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":3644}}}],"partialFingerprints":{"codehealthFindingId/v1":"15c6bf3488d68a661434642431a5e4075a4a6fa60e456a37b51f9bf7029edea3"}},{"ruleId":"D1","level":"warning","message":{"text":"Scanner::plan_match_query (cyclomatic 18): Scanner::plan_match_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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5480}}}],"partialFingerprints":{"codehealthFindingId/v1":"e30d2cbe0dac235d3a2da02b23a626575a9c573a8582c93318d6e4e9e64baeec"}},{"ruleId":"D1","level":"warning","message":{"text":"Scanner::plan_combined_fields_query (cyclomatic 18): Scanner::plan_combined_fields_query 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5784}}}],"partialFingerprints":{"codehealthFindingId/v1":"b259a0cc34dfaada8acd4b4dec50351835619dae387a641ceb4fa62e4c5a3346"}},{"ruleId":"D1","level":"warning","message":{"text":"KNNVectorDistanceExec::execute_batch (cyclomatic 18): KNNVectorDistanceExec::execute_batch 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":"rust/lance/src/io/exec/knn.rs"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ebca57f9674137298fe490f7abc4174cd101c5c04f8d702473377b399df2c93"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::blob::validate_prepared_blob_value_array (cyclomatic 18): lance::blob::validate_prepared_blob_value_array 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":"rust/lance/src/blob.rs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ec37437e8f855015210e089fb72ee98150ba3340d10f8f2fa54f93ce77aabd"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_core::utils::cpu::detect_host_features (cyclomatic 18): lance_core::utils::cpu::detect_host_features 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":"rust/lance-core/src/utils/cpu.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2f8f9844138eeeb653278295d374ed021edd7638cd5bc55dee4650d1c5347e1"}},{"ruleId":"D1","level":"warning","message":{"text":"PrimitiveStructuralEncoder::should_dictionary_encode (cyclomatic 18): PrimitiveStructuralEncoder::should_dictionary_encode 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6837}}}],"partialFingerprints":{"codehealthFindingId/v1":"e98524debd92279a257668fe5ae1849a89169b3d3a33e23f7820c594a2bac101"}},{"ruleId":"D1","level":"warning","message":{"text":"SerializerContext::record_offsets (cyclomatic 18): SerializerContext::record_offsets 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":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd3576a408d1b3cf2c781de26950cf5cadf72e537fae72e1a96c34b7ea91aa27"}},{"ruleId":"D1","level":"warning","message":{"text":"HnswBuilder::connect_stranded_nodes (cyclomatic 18): HnswBuilder::connect_stranded_nodes 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":"rust/lance-index/src/vector/hnsw/builder.rs"},"region":{"startLine":940}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bd154b3b0133c8df47715919e55272404a4f4672c916ac61345f27c9e42d03d"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_index::scalar::fmindex::write_partitioned_fmindex_stream_with_config (cyclomatic 18): lance_index::scalar::fmindex::write_partitioned_fmindex_stream_with_config has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/fmindex.rs"},"region":{"startLine":1734}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0d64c49766c4988bb0f95d914c9345ba138f9d1a32e0dffc271ba9b8b65cfa2"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_index::scalar::inverted::cross_column::score_cross_column_sources (cyclomatic 18): lance_index::scalar::inverted::cross_column::score_cross_column_sources 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":"rust/lance-index/src/scalar/inverted/cross_column.rs"},"region":{"startLine":1167}}}],"partialFingerprints":{"codehealthFindingId/v1":"72fa3b16640e8fb1afa2e61c9a3afa264a613a40f2658e8875030d9a01d2a94a"}},{"ruleId":"D1","level":"warning","message":{"text":"GooseFsStoreProvider::parse_decimal_times_unit (cyclomatic 18): GooseFsStoreProvider::parse_decimal_times_unit 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":"rust/lance-io/src/object_store/providers/goosefs.rs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a920a106b252b26a60fc8c2aafa082b0269834a95c908d8222307715b6c84eb"}},{"ruleId":"D1","level":"warning","message":{"text":"ManifestNamespace::create_table (cyclomatic 18): ManifestNamespace::create_table 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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2950}}}],"partialFingerprints":{"codehealthFindingId/v1":"640dcd865a30e35405070c812df3d45f2d31265495fb62c5ce87733b37cc751c"}},{"ruleId":"D1","level":"warning","message":{"text":"DirectoryNamespace::apply_query_params_to_scanner (cyclomatic 18): DirectoryNamespace::apply_query_params_to_scanner 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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":3162}}}],"partialFingerprints":{"codehealthFindingId/v1":"5af8ec854ff987ea4e7f380e30e6cc100303d03bb6c08d3a0edfa441da96cd2b"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_table::format::key_existence::extract_key_value (cyclomatic 18): lance_table::format::key_existence::extract_key_value 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":"rust/lance-table/src/format/key_existence.rs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2035a80f047f50e0ca6e45afdfffb8493d256a59de99541e92fc0b0e092cad7"}},{"ruleId":"D1","level":"warning","message":{"text":"udf.normalize_transform (cyclomatic 18): udf.normalize_transform 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":"python/python/lance/udf.py"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"973302930bbd289d28d1b5e47d9c2753c8ff7594aaee3df18a82d80ef533c726"}},{"ruleId":"D1","level":"warning","message":{"text":"pylance::dataset::writer_config_from_kwargs (cyclomatic 17): pylance::dataset::writer_config_from_kwargs 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":"python/src/dataset.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"5863a7ec5d3eca43777aeb1465c511fabdde26b60c7ec19b46dee81560b74e3c"}},{"ruleId":"D1","level":"warning","message":{"text":"FixedIntBackend::insert_array_and_report_existing (cyclomatic 17): FixedIntBackend::insert_array_and_report_existing 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":"rust/lance/src/dataset/mem_wal/index/btree.rs"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa227d7c68b8e667d5e107918b115068fc547ff55c9657c474fc41abbc608b62"}},{"ruleId":"D1","level":"warning","message":{"text":"Partition::maxscore_loop (cyclomatic 17): Partition::maxscore_loop 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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":4565}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d7901a2f3402bef71ec1c6f045abf00e53a35bedc6d9c06fdf4670a94115f8d"}},{"ruleId":"D1","level":"warning","message":{"text":"IndexStore::insert_batches (cyclomatic 17): IndexStore::insert_batches 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":"rust/lance/src/dataset/mem_wal/index.rs"},"region":{"startLine":1008}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d3e6cbe99544eea396e255351f81bd07e6db4b76568ae6f7d83424d675e14c6"}},{"ruleId":"D1","level":"warning","message":{"text":"LsmPointLookupPlanner::lookup_many (cyclomatic 17): LsmPointLookupPlanner::lookup_many 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":"rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2637afc0a9dbc42447ea7373ce42380dfe198661cbfe2a925db9b65e93022bc"}},{"ruleId":"D1","level":"warning","message":{"text":"Scanner::calculate_final_projection (cyclomatic 17): Scanner::calculate_final_projection 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":2540}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c131d9047e093840e34bdd51169f878ada7dcfb08e5cac8d0d818a3e15278d3"}},{"ruleId":"D1","level":"warning","message":{"text":"Scanner::fts_document_granularity (cyclomatic 17): Scanner::fts_document_granularity has cyclomatic complexity 17 (threshold 15). Most of this is not in the body itself: 1 of the 17 points is its own statement and the rest belongs to 2 function items inside it that branch (visit, add_leaf). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":4497}}}],"partialFingerprints":{"codehealthFindingId/v1":"56842488d281bf47ff7b927037b692064cf8a8c62270c24e821cb27abf13b4f3"}},{"ruleId":"D1","level":"warning","message":{"text":"UpdateJob::execute_impl (cyclomatic 17): UpdateJob::execute_impl 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":"rust/lance/src/dataset/write/update.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"a380343b6362d11c6eefe51a8b2e97e58b0000e03e9e3ed679fa7394645c7171"}},{"ruleId":"D1","level":"warning","message":{"text":"FragmentScanner::read_batch (cyclomatic 17): FragmentScanner::read_batch 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":"rust/lance/src/io/exec/pushdown_scan.rs"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"04f2c1e91f71d9aee73afcc93a4e15a0a6997f037a62d1f34b754fd4b2ec19f2"}},{"ruleId":"D1","level":"warning","message":{"text":"FragmentScanner::extract_guarantees (cyclomatic 17): FragmentScanner::extract_guarantees 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":"rust/lance/src/io/exec/pushdown_scan.rs"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e5a9cb8d52894296d43dee2f3f2d0f4efc8a17bdc4ddeef52b36480afccfa13"}},{"ruleId":"D1","level":"warning","message":{"text":"TakeStream::map_batch (cyclomatic 17): TakeStream::map_batch 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":"rust/lance/src/io/exec/take.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d5612be5ed6f0621fbadd95bb1ad27d9e309f431df8359da218cf214b010e12"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::index::vector::details::apply_runtime_hints (cyclomatic 17): lance::index::vector::details::apply_runtime_hints 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":"rust/lance/src/index/vector/details.rs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa1dbf15f5cf1dbd6812fb9765e4b0e43c769127cc50061a4756738b83c29caa"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::index::vector::details::convert_v3_metadata_to_details (cyclomatic 17): lance::index::vector::details::convert_v3_metadata_to_details 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":"rust/lance/src/index/vector/details.rs"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6645afa23203b08b20ecdc0827f14b134add0da270f277a2bd0a6ba87bd2a5f"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::mem_wal::scanner::exec::pk::compute_pk_hash (cyclomatic 17): lance::dataset::mem_wal::scanner::exec::pk::compute_pk_hash 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":"rust/lance/src/dataset/mem_wal/scanner/exec/pk.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"195448c954123163f8446d8f5d907a1689c28cd255053d6b9ad9b1e28591b5b0"}},{"ruleId":"D1","level":"warning","message":{"text":"CoreFieldDecoderStrategy::create_array_field_scheduler (cyclomatic 17): CoreFieldDecoderStrategy::create_array_field_scheduler 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":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2b95a91fb0565a83c78cbc18eddc9efa55fba7c0759fa4a93667ff7f911b1f0"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_file::concat::check_compatibility (cyclomatic 17): lance_file::concat::check_compatibility 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":"rust/lance-file/src/concat.rs"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a59ae271ccaa67955682a80b0eeafebe4977887da199b718279b0b7869897e2"}},{"ruleId":"D1","level":"warning","message":{"text":"SargableQuery::to_expr (cyclomatic 17): SargableQuery::to_expr 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":"rust/lance-index/src/scalar.rs"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"410d7810d02ecc2d428cfbd6c0463ce3504b62bf307cbf71377a0baa40683529"}},{"ruleId":"D1","level":"warning","message":{"text":"FlatIndex::search_with_scratch (cyclomatic 17): FlatIndex::search_with_scratch 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":"rust/lance-index/src/vector/flat/index.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef170d53fa79f2057d25e082480cccd88cf74442f666c7f5b8dbccfdc97b1d3e"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_index::scalar::inverted::wand::exclusive_partial_score_limit (cyclomatic 17): lance_index::scalar::inverted::wand::exclusive_partial_score_limit 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":1833}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a807036a34dccc39c9c8872deb00c7eca2d87bddca4296a6b5fff1d98c23849"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_index::vector::distributed::index_merger::read_shard_window_partitions (cyclomatic 17): lance_index::vector::distributed::index_merger::read_shard_window_partitions 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":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ac739faad86f6ce1e04417337d4625f0eb8f2cf046ae6753d7acf1f363a3485"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_linalg::distance::multivec_distance (cyclomatic 17): lance_linalg::distance::multivec_distance 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":"rust/lance-linalg/src/distance.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c2c0f0251d425d776ca006f69f73135ac23805310fac935bb500ca85f481d3a"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_table::system_index::frag_reuse::gate::classify (cyclomatic 17): lance_table::system_index::frag_reuse::gate::classify 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":"rust/lance-table/src/system_index/frag_reuse/gate.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce41b3d42dbfcab0ce784f97b9d32c9b251679f456c66503fbe8267e2b4f95a1"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_jni::transaction::inner_commit_to_uri (cyclomatic 16): lance_jni::transaction::inner_commit_to_uri 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":"java/lance-jni/src/transaction.rs"},"region":{"startLine":2224}}}],"partialFingerprints":{"codehealthFindingId/v1":"12456577e711ff5a824a1d59723e195f124b4557f45360f5db3435824a2d0113"}},{"ruleId":"D1","level":"warning","message":{"text":"CleanupTask::process_branch_referenced_manifests (cyclomatic 16): CleanupTask::process_branch_referenced_manifests 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":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":1325}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e7a2d8498ce2d07b8bd57ffdb94c1b39229bbdfe46a7682c887c187cc9a36b9"}},{"ruleId":"D1","level":"warning","message":{"text":"FtsMemIndex::expand_fuzzy_term (cyclomatic 16): FtsMemIndex::expand_fuzzy_term 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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":2443}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ef770ce68f2151292560a745952fc18c4ede1cfe0f4293e623a2f20c7918eb6"}},{"ruleId":"D1","level":"warning","message":{"text":"MemTableScanner::collect_or_equalities (cyclomatic 16): MemTableScanner::collect_or_equalities has cyclomatic complexity 16 (threshold 15). 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, 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs"},"region":{"startLine":1375}}}],"partialFingerprints":{"codehealthFindingId/v1":"da47b7ed45d31a4f698dd3940bad720ca6b7ddb0c82fcfc2197b813c6db378e9"}},{"ruleId":"D1","level":"warning","message":{"text":"MemTableDedupScanExec::execute (cyclomatic 16): MemTableDedupScanExec::execute 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_scan.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"26fbf0603f77ddd2fd911b9ddd707e5ea538b94d968b5fb89e241d389c8eae4c"}},{"ruleId":"D1","level":"warning","message":{"text":"MemTableScanExec::execute (cyclomatic 16): MemTableScanExec::execute 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/scan.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4071235f137df36d7bfe63800fcb7b6f1dd411134511333122d90666dcc4340"}},{"ruleId":"D1","level":"warning","message":{"text":"CoalesceFirstStream::poll_next (cyclomatic 16): CoalesceFirstStream::poll_next 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":"rust/lance/src/dataset/mem_wal/scanner/exec/coalesce_first.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef7e509432a9df5a0f4177473a950d3d6053d099b0a0be5cdd467177853a8f2b"}},{"ruleId":"D1","level":"warning","message":{"text":"LsmScanPlanner::plan_scan (cyclomatic 16): LsmScanPlanner::plan_scan 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":"rust/lance/src/dataset/mem_wal/scanner/planner.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb3fcd2e1610dc4ba6004e4ad422d3b701088a0398fe1ea0cfd4ea202d226232"}},{"ruleId":"D1","level":"warning","message":{"text":"Scanner::nearest (cyclomatic 16): Scanner::nearest 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":1990}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b88cfbdcef5e49813a087470ca807b73c0fd2354afbdecda1b23d8eb9fdccdb"}},{"ruleId":"D1","level":"warning","message":{"text":"Scanner::plan_fts (cyclomatic 16): Scanner::plan_fts 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5079}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b7ac3c6f46fc3a3f92eb5512fc592658e778ca2128a8704223a8844e2db1b13"}},{"ruleId":"D1","level":"warning","message":{"text":"Scanner::scalar_indexed_scan (cyclomatic 16): Scanner::scalar_indexed_scan 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":7025}}}],"partialFingerprints":{"codehealthFindingId/v1":"83342e51c006134c9c07aef0880ba3f4f750d558369923f2602344085045c6f5"}},{"ruleId":"D1","level":"warning","message":{"text":"IndexDescriptionImpl::try_new (cyclomatic 16): IndexDescriptionImpl::try_new 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":"rust/lance/src/index.rs"},"region":{"startLine":1578}}}],"partialFingerprints":{"codehealthFindingId/v1":"df4d70eefd96782a8f08696bf3b66cdb690f88cd8ee24f9483fcaa85665c2bc0"}},{"ruleId":"D1","level":"warning","message":{"text":"TransactionRebase::check_delete_txn (cyclomatic 16): TransactionRebase::check_delete_txn 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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb4f0c48ad93e28569b0d59c71df4c02144f0ee7f32b739862b64bc67f606f06"}},{"ruleId":"D1","level":"warning","message":{"text":"LanceStream::try_new_v2 (cyclomatic 16): LanceStream::try_new_v2 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":"rust/lance/src/io/exec/scan.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba5c575ceae39d55cd9c2ef535edac69e86335b3eee980100784ce5bef30509c"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::rowids::validate::validate_stable_row_ids (cyclomatic 16): lance::dataset::rowids::validate::validate_stable_row_ids 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":"rust/lance/src/dataset/rowids/validate.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aff6480a0d1385899bc879231335cef575378ef754f6ed8c79fd0047a6dcb7d"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::index::vector::ivf::io::write_hnsw_quantization_index_partitions (cyclomatic 16): lance::index::vector::ivf::io::write_hnsw_quantization_index_partitions 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":"rust/lance/src/index/vector/ivf/io.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"39fb3b7ae60185c1c376a088123c22ff637a88f23c0d69853adfdbe73eb7ac87"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::io::commit::do_commit_detached_transaction (cyclomatic 16): lance::io::commit::do_commit_detached_transaction 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":"rust/lance/src/io/commit.rs"},"region":{"startLine":1191}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ed18027cf03196272e93c2518aff18eaf83da6ab516cbc226dc4f46076cc447"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::mem_wal::index::fts::score_terms (cyclomatic 16): lance::dataset::mem_wal::index::fts::score_terms 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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":3082}}}],"partialFingerprints":{"codehealthFindingId/v1":"754af3b5caa51702ee22aaf57159e322c77444396cc785f60c55d68d986019ee"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::dataset::scanner::collect_fts_columns_in_order::visit (cyclomatic 16): lance::dataset::scanner::collect_fts_columns_in_order::visit 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"c93c83c09bc451be757a4db330f3c0bbc5c5423322663cc1c015fa4c1797d944"}},{"ruleId":"D1","level":"warning","message":{"text":"lance::index::vector::build_vector_index_incremental (cyclomatic 16): lance::index::vector::build_vector_index_incremental 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":"rust/lance/src/index/vector.rs"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"198b8bee70e2eca055cb999dfd3416e5cc9213e8232096c07e763cbff9f12882"}},{"ruleId":"D1","level":"warning","message":{"text":"AimdConfig::validate (cyclomatic 16): AimdConfig::validate 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":"rust/lance-core/src/utils/aimd.rs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce6aca7ae8a0457a96553b65133f68db3e9802ea901c0d97dbffb1fdb99ca4bf"}},{"ruleId":"D1","level":"warning","message":{"text":"SharedStream::poll_next (cyclomatic 16): SharedStream::poll_next 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":"rust/lance-core/src/utils/futures.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"4091ad129ed03ac03942673add38c6255f93a2b39fad1ccabe839f56ce920b0f"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_datafusion::exec::collect_execution_metrics (cyclomatic 16): lance_datafusion::exec::collect_execution_metrics 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":"rust/lance-datafusion/src/exec.rs"},"region":{"startLine":594}}}],"partialFingerprints":{"codehealthFindingId/v1":"8adc46c3806b03c2bd2bcf930d19923fc201bff0c5ed2cd63902c2f063634a6b"}},{"ruleId":"D1","level":"warning","message":{"text":"BTreeIndex::search_with_options (cyclomatic 16): BTreeIndex::search_with_options 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. This is NOT this file\u0027s highest cyclomatic complexity: BTreeLookup::candidate_pages_for_values (cyclomatic 21) 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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":2495}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c36d87c9a585691bf57a55c5fa914e9c0c6afa6a465f3241cf768721811c40a"}},{"ruleId":"D1","level":"warning","message":{"text":"ShouldMaxScoreScorer::ensure_confirmed (cyclomatic 16): ShouldMaxScoreScorer::ensure_confirmed 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":"rust/lance-index/src/scalar/inverted/compound/should_maxscore.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"dae0def89598cc69056d7ae0b9064a4966013723e02de3b339636e03ca124f40"}},{"ruleId":"D1","level":"warning","message":{"text":"JsonIndexPlugin::convert_batch_by_type (cyclomatic 16): JsonIndexPlugin::convert_batch_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":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":680}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ce64b9ec65bc0dec26a64c9695a2ab87c5a967c6385726f8ee71ec17f0159a2"}},{"ruleId":"D1","level":"warning","message":{"text":"HNSW::flat_search (cyclomatic 16): HNSW::flat_search 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":"rust/lance-index/src/vector/hnsw/builder.rs"},"region":{"startLine":621}}}],"partialFingerprints":{"codehealthFindingId/v1":"5457ca68d436663da94c747f4defecfc310907283306dbab2a5cf3366ed1894c"}},{"ruleId":"D1","level":"warning","message":{"text":"lance_index::vector::bq::ex_dot::pack_block (cyclomatic 16): lance_index::vector::bq::ex_dot::pack_block has cyclomatic complexity 16 (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":"rust/lance-index/src/vector/bq/ex_dot.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"e18d463850d263e664ee520a2a325aeb3dfb1cab5f1145154c602e06e3f71d12"}},{"ruleId":"D1","level":"warning","message":{"text":"Transaction::withdraw_rewritten_coverage (cyclomatic 16): Transaction::withdraw_rewritten_coverage 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":"rust/lance-table/src/transaction/index_maintenance.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"95119a4c79b12c2cffe10162afe56e3e0bc943a7de4e031ed4dc52418282a904"}},{"ruleId":"D1","level":"warning","message":{"text":"WriteDatasetBuilder.execute (cyclomatic 16): WriteDatasetBuilder.execute 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":"java/src/main/java/org/lance/WriteDatasetBuilder.java"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"49ccf5d6e89b76cf1a9c43a789e1cdf9e1c1db278537035f8048bec1d19faf94"}},{"ruleId":"D1","level":"warning","message":{"text":"lance.dataset (cyclomatic 16): lance.dataset 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":"python/python/lance/__init__.py"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e099770ded1a7133112e390d086a9076040e7d4697a3dd2fdb27fca176bfa85"}},{"ruleId":"D1","level":"warning","message":{"text":"pydantic.is_nullable (cyclomatic 16): pydantic.is_nullable has cyclomatic complexity 16 (threshold 15). This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/pydantic.py"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"da4ffc930721a86969a5826748e6cc1774f62dc6464249ea4a3b3a272322c7ac"}},{"ruleId":"D2","level":"warning","message":{"text":"Wand::maxscore_search (cognitive 513): Wand::maxscore_search has cognitive complexity 513 (threshold 15). Drivers by points: if/else 80 (392 pts), loops 20 (76 pts), match/switch 14 (23 pts), boolean chains 22 (nesting depth added 377). 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":2936}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9d92ef15e878dcd4b8879edc3958fbb0bc5218caf580f0f0710dbb110aa6be5"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::vector::distributed::index_merger::merge_partial_vector_auxiliary_files_inner (cognitive 298): lance_index::vector::distributed::index_merger::merge_partial_vector_auxiliary_files_inner has cognitive complexity 298 (threshold 15). Drivers by points: if/else 97 (247 pts), match/switch 8 (21 pts), loops 8 (16 pts), boolean chains 14 (nesting depth added 171). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":862}}}],"partialFingerprints":{"codehealthFindingId/v1":"196f87ab2a0504a10b914da395aa5b6a19fdc70e40b3ed2abda97a81fc455773"}},{"ruleId":"D2","level":"warning","message":{"text":"Transaction::build_manifest_prepared (cognitive 286): Transaction::build_manifest_prepared has cognitive complexity 286 (threshold 15). Drivers by points: if/else 82 (179 pts), loops 25 (66 pts), boolean chains 21, match/switch 10 (20 pts) (nesting depth added 148). 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":"rust/lance-table/src/transaction/manifest_build.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e443d60e0b9322b131ad2325e647f68b71ea815deb1ed44aabbb4f2f16f1909"}},{"ruleId":"D2","level":"warning","message":{"text":"Wand::and_bulk_search (cognitive 193): Wand::and_bulk_search has cognitive complexity 193 (threshold 15). Drivers by points: if/else 86 (220 pts), loops 33 (65 pts), match/switch 8 (24 pts), boolean chains 9 (nesting depth added 182). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (Wand::and_bulk_search::merge_window_docs_pairwise) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":4083}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc1f5bd15eafbddbe8afb27481f178b6bd524480448a633d6630af7ed46f2b7f"}},{"ruleId":"D2","level":"warning","message":{"text":"OrderableScalarValue::cmp (cognitive 144): OrderableScalarValue::cmp has cognitive complexity 144 (threshold 15). Drivers by points: if/else 90 (135 pts), match/switch 4 (5 pts), boolean chains 4 (nesting depth added 46). 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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"90e5896bf598e6ecf024481f184ceb4f235650fa7ab47e9be3c27ee58667351d"}},{"ruleId":"D2","level":"warning","message":{"text":"LanceDataset._create_index_impl (cognitive 133): LanceDataset._create_index_impl has cognitive complexity 133 (threshold 15). Drivers by points: if/else 55 (111 pts), boolean chains 20, error handling 1, loops 1 (nesting depth added 56). 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":"python/python/lance/dataset.py"},"region":{"startLine":3924}}}],"partialFingerprints":{"codehealthFindingId/v1":"17ea535c507763f4a7ca0a95dc531faedf269256a2cbfaffb8cfbbc376da2a39"}},{"ruleId":"D2","level":"warning","message":{"text":"ZoneMapIndex::evaluate_zone_against_query (cognitive 125): ZoneMapIndex::evaluate_zone_against_query has cognitive complexity 125 (threshold 15). Drivers by points: if/else 35 (82 pts), match/switch 14 (34 pts), boolean chains 9 (nesting depth added 67). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/zonemap.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c9700e7043c4155c2c8226bc746acdf506019541a3fc6a8c9c24d82c2f71001"}},{"ruleId":"D2","level":"warning","message":{"text":"DecodeMiniBlockTask::map_range (cognitive 124): DecodeMiniBlockTask::map_range has cognitive complexity 124 (threshold 15). Drivers by points: if/else 31 (103 pts), loops 5 (19 pts), match/switch 1 (2 pts) (nesting depth added 87). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"62cddb65c4a126717e0b4de14d8f929034a7666942ea09a87a971a240b945609"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::scanner (cognitive 114): Dataset::scanner has cognitive complexity 114 (threshold 15). Drivers by points: if/else 62 (98 pts), match/switch 6 (15 pts), boolean chains 1 (nesting depth added 45). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":1232}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d3ce224b3bad873ee9aafc549c208b5c732bc43a078d2b8d0cd3e04efe3cfd4"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionRebase::check_rewrite_txn (cognitive 113): TransactionRebase::check_rewrite_txn has cognitive complexity 113 (threshold 15). Drivers by points: if/else 24 (71 pts), loops 7 (31 pts), boolean chains 6, match/switch 2 (5 pts) (nesting depth added 74). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":1234}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecaa8778000f8e98427442b0202ac108d5a4b69891a8a6657dbcb02b43e9269e"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::optimize::binary_copy::rewrite_files_binary_copy (cognitive 108): lance::dataset::optimize::binary_copy::rewrite_files_binary_copy has cognitive complexity 108 (threshold 15). Drivers by points: if/else 18 (61 pts), loops 11 (45 pts), boolean chains 2 (nesting depth added 77). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/optimize/binary_copy.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"d63dd3199fa672dbac9673d8b95093209fce1a53161cbe1bd3576d307eb58bca"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionRebase::check_create_index_txn (cognitive 106): TransactionRebase::check_create_index_txn has cognitive complexity 106 (threshold 15). Drivers by points: if/else 23 (70 pts), loops 5 (20 pts), boolean chains 14, match/switch 1 (2 pts) (nesting depth added 63). 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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb5485e0cde2755469d19e1e50dfa06b0b2298a3f738d216823b20725dc600b9"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionRebase::check_update_txn (cognitive 105): TransactionRebase::check_update_txn has cognitive complexity 105 (threshold 15). Drivers by points: if/else 25 (82 pts), loops 5 (16 pts), match/switch 2 (5 pts), boolean chains 2 (nesting depth added 71). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc2b455ebc320cdaac1fdcd9f9a37b258ddf51e0aff2372ea7d712a203fd3c41"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::append::merge_indices_with_unindexed_frags (cognitive 103): lance::index::append::merge_indices_with_unindexed_frags has cognitive complexity 103 (threshold 15). Drivers by points: if/else 35 (73 pts), boolean chains 14, loops 5 (11 pts), match/switch 2 (5 pts) (nesting depth added 47). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/append.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d6c37bb3198a1604188f0ae8a7334f81e02dac6260468f03fb4988369b64d5e"}},{"ruleId":"D2","level":"warning","message":{"text":"Wand::complete_maxscore_single_essential (cognitive 103): Wand::complete_maxscore_single_essential has cognitive complexity 103 (threshold 15). Drivers by points: if/else 28 (70 pts), loops 10 (23 pts), boolean chains 10 (nesting depth added 55). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand_maxscore.rs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"02e7b1c242d1c264d032148a0e851759d6945d8881f926ea2060b82ab9609371"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionRebase::check_data_replacement_txn (cognitive 95): TransactionRebase::check_data_replacement_txn has cognitive complexity 95 (threshold 15). Drivers by points: if/else 11 (45 pts), loops 12 (44 pts), boolean chains 4, match/switch 1 (2 pts) (nesting depth added 67). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":1604}}}],"partialFingerprints":{"codehealthFindingId/v1":"39576ba895ddfa045d2dcb4768a337305adf1d0da1487cd47cb63400aa8d452b"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::vector::graph::beam_search_acorn (cognitive 92): lance_index::vector::graph::beam_search_acorn has cognitive complexity 92 (threshold 15). Drivers by points: if/else 22 (71 pts), loops 6 (15 pts), boolean chains 6 (nesting depth added 58). 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":"rust/lance-index/src/vector/graph.rs"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c9f6424cee539d0166f430ca741901a5ecc5848379dd9e69072f170b8a78e44"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::vector_search (cognitive 85): Scanner::vector_search has cognitive complexity 85 (threshold 15). Drivers by points: if/else 37 (72 pts), match/switch 3 (9 pts), boolean chains 4 (nesting depth added 41). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":6102}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d8c83bdfb963318536b34f4bbd5967423433fcb6944e25578e66dd4c2f019db"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::frag_reuse::build_frag_reuse_rewrite_entry (cognitive 81): lance::index::frag_reuse::build_frag_reuse_rewrite_entry has cognitive complexity 81 (threshold 15). Drivers by points: if/else 28 (58 pts), loops 10 (14 pts), boolean chains 5, match/switch 2 (4 pts) (nesting depth added 36). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/frag_reuse.rs"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b96ba17d388d96cc09ddec06a76f5ef7880d97dfaa7048e8949554036c422f"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateIndexBuilder::execute_uncommitted_impl (cognitive 78): CreateIndexBuilder::execute_uncommitted_impl has cognitive complexity 78 (threshold 15). Drivers by points: if/else 42 (65 pts), boolean chains 6, match/switch 3 (5 pts), loops 1 (2 pts) (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/create.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d4668da10e6edc6f8bd17feb25068c721579cfea41d189f5ad7c51b5b2e4ce1"}},{"ruleId":"D2","level":"warning","message":{"text":"RowIdSequence::mask_to_offset_ranges (cognitive 78): RowIdSequence::mask_to_offset_ranges has cognitive complexity 78 (threshold 15). Drivers by points: if/else 14 (48 pts), loops 8 (23 pts), match/switch 2 (6 pts), boolean chains 1 (nesting depth added 53). 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":"rust/lance-table/src/rowids.rs"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"4705f1f61ab3d7d4839b1768a53230e90959253d3b480e42c0bbb60ba078f7a6"}},{"ruleId":"D2","level":"warning","message":{"text":"Merger::execute_batch (cognitive 71): Merger::execute_batch has cognitive complexity 71 (threshold 15). Drivers by points: if/else 22 (51 pts), match/switch 6 (12 pts), loops 3 (8 pts) (nesting depth added 40). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":3533}}}],"partialFingerprints":{"codehealthFindingId/v1":"deb25202df695829037a8e9d78af03bfea0de6137d38c659bd74655924f62a39"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_datafusion::expr::safe_coerce_scalar (cognitive 71): lance_datafusion::expr::safe_coerce_scalar has cognitive complexity 71 (threshold 15). Drivers by points: match/switch 36 (55 pts), if/else 8 (16 pts) (nesting depth added 27). 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":"rust/lance-datafusion/src/expr.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"46a0e985783da491492b6f49a3ac0683d39ceeb7843b65bfdb914d41579a932c"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::filter_addr_or_ids (cognitive 69): Dataset::filter_addr_or_ids has cognitive complexity 69 (threshold 15). Drivers by points: if/else 19 (52 pts), loops 5 (16 pts), boolean chains 1 (nesting depth added 44). 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":"rust/lance/src/dataset.rs"},"region":{"startLine":2901}}}],"partialFingerprints":{"codehealthFindingId/v1":"067448e2941ea7d5eaa1b9ad1b5cab4f7c58ff7e9be4b2e4e48647c56f812e88"}},{"ruleId":"D2","level":"warning","message":{"text":"ReqOptScorer::position (cognitive 66): ReqOptScorer::position has cognitive complexity 66 (threshold 15). Drivers by points: if/else 15 (60 pts), loops 2 (5 pts), boolean chains 1 (nesting depth added 48). 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":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":3156}}}],"partialFingerprints":{"codehealthFindingId/v1":"ada4c1a1defa8ae8ef03dd6816a34d0e3409777e2dac2e9bd4f8b3bbc6563249"}},{"ruleId":"D2","level":"warning","message":{"text":"PQDistCalculator::accumulate_topk_with_scratch (cognitive 66): PQDistCalculator::accumulate_topk_with_scratch has cognitive complexity 66 (threshold 15). Drivers by points: if/else 24 (42 pts), loops 5 (11 pts), boolean chains 9, 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":"rust/lance-index/src/vector/pq/storage.rs"},"region":{"startLine":982}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae768f345e226325425735c103b5b604f528c2c9f7711f4fff9f830d06326708"}},{"ruleId":"D2","level":"warning","message":{"text":"fsst::fsst::build_symbol_table (cognitive 65): fsst::fsst::build_symbol_table has cognitive complexity 65 (threshold 15). Drivers by points: if/else 25 (51 pts), loops 9 (11 pts), boolean chains 3 (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":"rust/compression/fsst/src/fsst.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfc4066596e11bc42f6c9b7a6ebff8da5fed9d1f75219ba4db670c9f454e0695"}},{"ruleId":"D2","level":"warning","message":{"text":"IVFIndex::search_partitions (cognitive 65): IVFIndex::search_partitions has cognitive complexity 65 (threshold 15). Drivers by points: if/else 14 (32 pts), loops 7 (15 pts), match/switch 4 (12 pts), boolean chains 6 (nesting depth added 34). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf/v2.rs"},"region":{"startLine":2318}}}],"partialFingerprints":{"codehealthFindingId/v1":"606ebb3f8c72842c0020b039608b9a02340c458ee7286c4856df3ae59b3d703c"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::write::do_write_fragments_impl (cognitive 65): lance::dataset::write::do_write_fragments_impl has cognitive complexity 65 (threshold 15). Drivers by points: if/else 20 (51 pts), loops 4 (10 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 38). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write.rs"},"region":{"startLine":919}}}],"partialFingerprints":{"codehealthFindingId/v1":"2887494a9b09cfdfb5a0aab268f58ffa50850851215f7d12a84076e72c690e02"}},{"ruleId":"D2","level":"warning","message":{"text":"Wand::next_and_candidate (cognitive 65): Wand::next_and_candidate has cognitive complexity 65 (threshold 15). Drivers by points: if/else 20 (56 pts), boolean chains 6, loops 2 (3 pts) (nesting depth added 37). 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":3922}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb7c7ae4fd9986545d2bbb0dfc20590a2a964bba1e35f1cce4570b5dc6ff503e"}},{"ruleId":"D2","level":"warning","message":{"text":"DirectoryNamespace::describe_table_impl (cognitive 64): DirectoryNamespace::describe_table_impl has cognitive complexity 64 (threshold 15). Drivers by points: if/else 36 (55 pts), boolean chains 6, match/switch 2 (3 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":2062}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5a9d9663eee5aaf87219fac3a3d4309b13a6d048930756bebccb5dae65d0775"}},{"ruleId":"D2","level":"warning","message":{"text":"Wand::search (cognitive 63): Wand::search has cognitive complexity 63 (threshold 15). Drivers by points: if/else 25 (54 pts), boolean chains 8, loops 1 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":2667}}}],"partialFingerprints":{"codehealthFindingId/v1":"d88ec41b8efcd7307b1ec59ed405443fe9932f8061b4e987a8e7b648ade2bf68"}},{"ruleId":"D2","level":"warning","message":{"text":"InvertedPartition::load_posting_lists_with_policy (cognitive 62): InvertedPartition::load_posting_lists_with_policy has cognitive complexity 62 (threshold 15). Drivers by points: if/else 24 (40 pts), boolean chains 10, loops 5 (9 pts), match/switch 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":"rust/lance-index/src/scalar/inverted/index/partition.rs"},"region":{"startLine":1314}}}],"partialFingerprints":{"codehealthFindingId/v1":"11e324f325e12833e4ea0cbf3848efb500671a835188b287985194ebb9a70ac1"}},{"ruleId":"D2","level":"warning","message":{"text":"pylance::dataset::get_write_params (cognitive 61): pylance::dataset::get_write_params has cognitive complexity 61 (threshold 15). Drivers by points: if/else 29 (49 pts), loops 3 (9 pts), boolean chains 3 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":4901}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d2649b3f6997669e666affa7b59196da761fd2e6cb9ed0dc44a73f0dbedd8ff"}},{"ruleId":"D2","level":"warning","message":{"text":"FtsMemIndex::to_index_builder (cognitive 61): FtsMemIndex::to_index_builder has cognitive complexity 61 (threshold 15). Drivers by points: if/else 15 (38 pts), loops 14 (23 pts) (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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":2689}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7275242ae16c0f8443f685dac11aa126ae97e1b0db2a31c2e74ceecdf64956e"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::optimize::commit_compaction (cognitive 61): lance::dataset::optimize::commit_compaction has cognitive complexity 61 (threshold 15). Drivers by points: if/else 29 (44 pts), boolean chains 6, loops 3 (6 pts), match/switch 2 (5 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":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":3156}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7c569ed38d07c1c399c80065c2601f0944696194665c24739989f1875cddd17"}},{"ruleId":"D2","level":"warning","message":{"text":"PackedStructVariablePerValueDecompressor::decompress (cognitive 61): PackedStructVariablePerValueDecompressor::decompress has cognitive complexity 61 (threshold 15). Drivers by points: if/else 13 (41 pts), match/switch 5 (11 pts), loops 5 (8 pts), boolean chains 1 (nesting depth added 37). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/packed.rs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ea5b0c75c02a0904aeb5fd1601c2582234d5113885d93e5ab14bd95d8eec20b"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::create_index (cognitive 58): Dataset::create_index has cognitive complexity 58 (threshold 15). Drivers by points: if/else 30 (49 pts), match/switch 3 (4 pts), loops 1 (3 pts), boolean chains 2 (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":"python/src/dataset.rs"},"region":{"startLine":2601}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3b6768836e4d7a17d7d02bb934163ab548db2dc33dce83c0a15dfbd2edacad3"}},{"ruleId":"D2","level":"warning","message":{"text":"BitpackedPageDecoder::decode (cognitive 56): BitpackedPageDecoder::decode has cognitive complexity 56 (threshold 15). Drivers by points: if/else 9 (35 pts), loops 5 (15 pts), boolean chains 4, match/switch 1 (2 pts) (nesting depth added 37). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/physical/bitpack.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cae08008042c4edf522097f243bf23dbb38a027b6a82a0ee2fa27f4ccc0b929"}},{"ruleId":"D2","level":"warning","message":{"text":"CleanupTask::cleanup_file_if_not_referenced (cognitive 55): CleanupTask::cleanup_file_if_not_referenced has cognitive complexity 55 (threshold 15). Drivers by points: if/else 34 (52 pts), boolean chains 2, match/switch 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":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":975}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c7a9c93d7463bb36050d70642a5f2a759851ff9b8c2900110f75d348d10c9b7"}},{"ruleId":"D2","level":"warning","message":{"text":"pylance::dataset::prepare_vector_index_params (cognitive 53): pylance::dataset::prepare_vector_index_params has cognitive complexity 53 (threshold 15). Drivers by points: if/else 26 (46 pts), match/switch 3 (6 pts), boolean chains 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":5111}}}],"partialFingerprints":{"codehealthFindingId/v1":"b56df01c44cacdc4ee0382fc608fe5c4d4ef80ff7701abc3bcf93b272efe73da"}},{"ruleId":"D2","level":"warning","message":{"text":"BlobPreprocessor::logical_to_prepared_blob_array (cognitive 53): BlobPreprocessor::logical_to_prepared_blob_array has cognitive complexity 53 (threshold 15). Drivers by points: if/else 24 (47 pts), boolean chains 5, loops 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":1122}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4510e47edfa5b16a1aaf181118087f230753e55c317bbee5d388d541cbeea80"}},{"ruleId":"D2","level":"warning","message":{"text":"FilteredReadStream::plan_scan (cognitive 53): FilteredReadStream::plan_scan has cognitive complexity 53 (threshold 15). Drivers by points: if/else 22 (47 pts), boolean chains 4, loops 2 (nesting depth added 25). 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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e6614a74ae58044350db2e4330320f1e9d9551466a780df49c86b60d74ee84c"}},{"ruleId":"D2","level":"warning","message":{"text":"KNNVectorDistanceExec::execute_batch (cognitive 52): KNNVectorDistanceExec::execute_batch has cognitive complexity 52 (threshold 15). Drivers by points: if/else 15 (43 pts), loops 4 (7 pts), boolean chains 2 (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":"rust/lance/src/io/exec/knn.rs"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcc5632bb4064565b98040c3be140589013060c489b8c16760097d56b42f1123"}},{"ruleId":"D2","level":"warning","message":{"text":"ChunkInstructions::schedule_instructions (cognitive 52): ChunkInstructions::schedule_instructions has cognitive complexity 52 (threshold 15). Drivers by points: if/else 15 (40 pts), boolean chains 7, loops 3 (5 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":2407}}}],"partialFingerprints":{"codehealthFindingId/v1":"83260aff6ef35214c67b34904d711cd85d513033f9096e0cf3c0ca0f67b64df0"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_encoding::encodings::logical::primitive::dict::dictionary_encode (cognitive 51): lance_encoding::encodings::logical::primitive::dict::dictionary_encode has cognitive complexity 51 (threshold 15). Drivers by points: if/else 6 (28 pts), match/switch 6 (15 pts), loops 2 (6 pts), boolean chains 2 (nesting depth added 35). 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":"rust/lance-encoding/src/encodings/logical/primitive/dict.rs"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8be2a9358b228850039cd1f01b026def6d29128716064600a21f200a6d4db47"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_io::uring::thread::run_uring_thread (cognitive 51): lance_io::uring::thread::run_uring_thread has cognitive complexity 51 (threshold 15). Drivers by points: if/else 12 (34 pts), match/switch 3 (9 pts), loops 3 (6 pts), boolean chains 2 (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":"rust/lance-io/src/uring/thread.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"020681b3483a52adc5bb19daa0c7d8d354144f150c467db92856d5f9ada89688"}},{"ruleId":"D2","level":"warning","message":{"text":"IvfIndexBuilder::merge_partitions (cognitive 49): IvfIndexBuilder::merge_partitions has cognitive complexity 49 (threshold 15). Drivers by points: if/else 18 (38 pts), loops 3 (7 pts), boolean chains 2, match/switch 2 (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":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":1597}}}],"partialFingerprints":{"codehealthFindingId/v1":"60372d4bff0c12b0b1af2b72f9f149db9d279575bc18471ded7219538d827f46"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_datafusion::substrait::normalize_expr (cognitive 49): lance_datafusion::substrait::normalize_expr has cognitive complexity 49 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 8 (17 pts), match/switch 5 (12 pts) (nesting depth added 28). 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":"rust/lance-datafusion/src/substrait.rs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c0dd2e14f04e03ca3be4f0c484c7536ec31f16d8512932f1019d6301cc2161b"}},{"ruleId":"D2","level":"warning","message":{"text":"DirectoryNamespace::alter_transaction (cognitive 49): DirectoryNamespace::alter_transaction has cognitive complexity 49 (threshold 15). Drivers by points: if/else 11 (33 pts), match/switch 3 (9 pts), boolean chains 6, loops 1 (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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":4523}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0a9abd7d1fda74e6a8986b9f5ce2a8d5cc01bd8f6cce27b003ee623b694d65c"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::io::commit::commit_transaction (cognitive 48): lance::io::commit::commit_transaction has cognitive complexity 48 (threshold 15). Drivers by points: if/else 14 (28 pts), match/switch 5 (13 pts), loops 2 (4 pts), boolean chains 3 (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":"rust/lance/src/io/commit.rs"},"region":{"startLine":1576}}}],"partialFingerprints":{"codehealthFindingId/v1":"521ec4c29b271dd011d6bbd8a898bdb1a4a079bef7e50488e7c42aa79a004034"}},{"ruleId":"D2","level":"warning","message":{"text":"Planner::parse_sql_expr (cognitive 47): Planner::parse_sql_expr has cognitive complexity 47 (threshold 15). Drivers by points: if/else 12 (27 pts), match/switch 6 (13 pts), loops 3 (7 pts) (nesting depth added 26). 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":"rust/lance-datafusion/src/planner.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"40d8e8dc6a2facd1b984d0054a587a8ea2ab9ddfee620d2e666ed7985bc37b9d"}},{"ruleId":"D2","level":"warning","message":{"text":"DirectoryNamespace::query_table (cognitive 46): DirectoryNamespace::query_table has cognitive complexity 46 (threshold 15). Drivers by points: if/else 23 (34 pts), boolean chains 8, match/switch 1 (4 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":5366}}}],"partialFingerprints":{"codehealthFindingId/v1":"887a6798e25776ee6e400417d9cacddaf3277a42bce5a1b1dd5c57d39cbce47d"}},{"ruleId":"D2","level":"warning","message":{"text":"PostingIterator::merge_optional_freqs (cognitive 45): PostingIterator::merge_optional_freqs has cognitive complexity 45 (threshold 15). Drivers by points: if/else 15 (28 pts), loops 4 (8 pts), match/switch 5 (6 pts), boolean chains 3 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand_maxscore.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"0176dcae4b68800a71e8f417e064ebf580b40cd11b5970f67bccaa7e9ee97b29"}},{"ruleId":"D2","level":"warning","message":{"text":"CleanupTask::delete_unreferenced_files (cognitive 44): CleanupTask::delete_unreferenced_files has cognitive complexity 44 (threshold 15). Drivers by points: if/else 18 (29 pts), match/switch 3 (6 pts), boolean chains 5, loops 2 (4 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":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"2081cc6a4cce84e6abf22b36a45807619d105c5178cd8790a5c571b3015fe3e0"}},{"ruleId":"D2","level":"warning","message":{"text":"CompoundScorerPlan::analyze_node (cognitive 44): CompoundScorerPlan::analyze_node has cognitive complexity 44 (threshold 15). Drivers by points: if/else 11 (24 pts), loops 7 (17 pts), boolean chains 2, match/switch 1 (nesting depth added 23). 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":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c512343aa0d1ac0f2b81f8d364767975c256c951cb5c1109308b3a05b9bf483"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::take::do_take_rows (cognitive 43): lance::dataset::take::do_take_rows has cognitive complexity 43 (threshold 15). Drivers by points: if/else 20 (37 pts), loops 2 (5 pts), boolean chains 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/take.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"d71259e758e33d66be1fd0e839031c2c82a0f6b63e34f2c0b3c3a2ac4d2594c5"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::transaction::row_version::resolve_update_version_metadata (cognitive 43): lance_table::transaction::row_version::resolve_update_version_metadata has cognitive complexity 43 (threshold 15). Drivers by points: if/else 12 (28 pts), loops 4 (8 pts), match/switch 3 (6 pts), boolean chains 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/row_version.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"024478a3c25c79f9e0c915d072c551293735ca552c29cccaa197bbf7f0a53d99"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::scalar::index_matches_criteria (cognitive 42): lance::index::scalar::index_matches_criteria has cognitive complexity 42 (threshold 15). Drivers by points: if/else 19 (38 pts), boolean chains 4 (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":"rust/lance/src/index/scalar.rs"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"152c77c0b89872f28d36fa610902c46bb4da6ee5847228c47e036463d2c25a15"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::optimize::rewrite_files (cognitive 42): lance::dataset::optimize::rewrite_files has cognitive complexity 42 (threshold 15). Drivers by points: if/else 20 (28 pts), match/switch 3 (6 pts), boolean chains 5, loops 1 (3 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":2443}}}],"partialFingerprints":{"codehealthFindingId/v1":"44778e6532fa8be52b482963ee993aab8e47b8d98a0d498801fbaf5d3739d6e6"}},{"ruleId":"D2","level":"warning","message":{"text":"SequenceCursor::fill (cognitive 41): SequenceCursor::fill has cognitive complexity 41 (threshold 15). Drivers by points: if/else 10 (32 pts), loops 3 (7 pts), match/switch 1 (2 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":"rust/lance/src/dataset/delta.rs"},"region":{"startLine":820}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa7cdacf39e8887e0d4b5ea8d2c100933288e4d2b3a918be6246112d5262ed2a"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::io::commit::do_commit_new_dataset (cognitive 41): lance::io::commit::do_commit_new_dataset has cognitive complexity 41 (threshold 15). Drivers by points: if/else 16 (29 pts), loops 2 (7 pts), match/switch 3 (5 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b40e35dd8bad30d2aa3fdb00413bd735a2dffa2bd7ddc20096f28dd54b0a8e6"}},{"ruleId":"D2","level":"warning","message":{"text":"Wand::next (cognitive 41): Wand::next has cognitive complexity 41 (threshold 15). Drivers by points: if/else 14 (32 pts), loops 3 (5 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":3833}}}],"partialFingerprints":{"codehealthFindingId/v1":"106e7c7a2b247eb2d22b1b1981b668e1e9852153c457c98443870e7723f2c066"}},{"ruleId":"D2","level":"warning","message":{"text":"LanceDataset._prepare_scalar_index_request (cognitive 41): LanceDataset._prepare_scalar_index_request has cognitive complexity 41 (threshold 15). Drivers by points: if/else 16 (34 pts), boolean chains 7 (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":"python/python/lance/dataset.py"},"region":{"startLine":3491}}}],"partialFingerprints":{"codehealthFindingId/v1":"13483ba41c79cb5115594c730e7ef862f5d321a89bdef03e5c64f5d691cd4fe6"}},{"ruleId":"D2","level":"warning","message":{"text":"MergeInsertJob::execute_uncommitted_impl (cognitive 40): MergeInsertJob::execute_uncommitted_impl has cognitive complexity 40 (threshold 15). Drivers by points: if/else 15 (25 pts), loops 3 (9 pts), match/switch 2 (4 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":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":2726}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b93ecca81ac8461213cc0f53f7b51de788c2d82a0b4fa89e433da28485e8b67"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_jni::transaction::convert_to_rust_operation (cognitive 39): lance_jni::transaction::convert_to_rust_operation has cognitive complexity 39 (threshold 15). Drivers by points: if/else 14 (28 pts), loops 2 (6 pts), match/switch 2 (5 pts) (nesting depth added 21). 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":"java/lance-jni/src/transaction.rs"},"region":{"startLine":1682}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e47a7acd42a45bfdd5cfe11dc39024fbe188e4aa3ecd43cbcd17b7e455b60ab"}},{"ruleId":"D2","level":"warning","message":{"text":"MergeInsertJob::update_fragments (cognitive 39): MergeInsertJob::update_fragments has cognitive complexity 39 (threshold 15). Drivers by points: if/else 18 (40 pts), loops 11 (24 pts), match/switch 5 (12 pts), boolean chains 1 (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (MergeInsertJob::update_fragments::handle_fragment) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":1580}}}],"partialFingerprints":{"codehealthFindingId/v1":"81cb81ac4e55a4ebf166c55d98f40d01e5446d28c66be576dde946cdac849658"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionRebase::finish_delete_update (cognitive 39): TransactionRebase::finish_delete_update has cognitive complexity 39 (threshold 15). Drivers by points: if/else 11 (25 pts), loops 3 (10 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":2254}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0ee340b1772286669330b20c01ca34832854f0e9157106b7ca6c1b57fb06b52"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::optimize::remapping::remap_index (cognitive 39): lance::dataset::optimize::remapping::remap_index has cognitive complexity 39 (threshold 15). Drivers by points: if/else 10 (23 pts), loops 4 (11 pts), match/switch 3, 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":"rust/lance/src/dataset/optimize/remapping.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea98e0527a4044b8e649b0e757712acee767c77e4dddfe236c6e1f492d5b7170"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_file::concat::validate_blob_field (cognitive 39): lance_file::concat::validate_blob_field has cognitive complexity 39 (threshold 15). Drivers by points: if/else 7 (22 pts), loops 4 (8 pts), boolean chains 5, match/switch 2 (4 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":"rust/lance-file/src/concat.rs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"95c7297a3dafbafef98641d86f0cadefdf249f2f45b102b56139b31f54c8c7eb"}},{"ruleId":"D2","level":"warning","message":{"text":"FlatIndex::search_with_scratch (cognitive 39): FlatIndex::search_with_scratch has cognitive complexity 39 (threshold 15). Drivers by points: if/else 8 (22 pts), loops 4 (12 pts), boolean chains 4, match/switch 1 (nesting depth added 22). 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":"rust/lance-index/src/vector/flat/index.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"3feb8bfd395be41df3ef814e6d0b4bb19576af70cee1c0dcfa04a5b0c5b11c28"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_io::local::remove_empty_dirs (cognitive 39): lance_io::local::remove_empty_dirs has cognitive complexity 39 (threshold 15). Drivers by points: if/else 10 (22 pts), match/switch 5 (10 pts), loops 3 (4 pts), boolean chains 3 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/local.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ad8dce2226c189e7de4b7f181ddb9d3e3e0a64137cf6afcb87e63fb33790129"}},{"ruleId":"D2","level":"warning","message":{"text":"Transaction::try_from (cognitive 39): Transaction::try_from has cognitive complexity 39 (threshold 15). Drivers by points: if/else 21 (32 pts), boolean chains 4, match/switch 2 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/proto.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad2af2bfc3753bd3f6db83129a8b293542eadc7ed033582f075589f044aa7fb7"}},{"ruleId":"D2","level":"warning","message":{"text":"TakeOperation::try_from_expr (cognitive 38): TakeOperation::try_from_expr has cognitive complexity 38 (threshold 15). Drivers by points: if/else 11 (22 pts), match/switch 4 (13 pts), boolean chains 3 (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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":1337}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c27f8b94b56f73ef51020340b294e2ae424ec18900bda553c5c30c168a9e522"}},{"ruleId":"D2","level":"warning","message":{"text":"CommitBuilder::execute_inner (cognitive 38): CommitBuilder::execute_inner has cognitive complexity 38 (threshold 15). Drivers by points: if/else 23 (30 pts), match/switch 5 (6 pts), boolean chains 2 (nesting depth added 8). 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":"rust/lance/src/dataset/write/commit.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"c55eec3164f91eea0fba3186582532631af35e7bfaabf935453dcb1d12058304"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionRebase::finish_create_index (cognitive 38): TransactionRebase::finish_create_index has cognitive complexity 38 (threshold 15). Drivers by points: if/else 9 (24 pts), loops 4 (12 pts), boolean chains 2 (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":2500}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac2a8bfdd85db37d7e744724cd9d8e5335d21c0a74b2b4596d97ee078b486294"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::versions::check_manifest_storage_contract (cognitive 38): lance::dataset::versions::check_manifest_storage_contract has cognitive complexity 38 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 9, match/switch 3 (8 pts), loops 2 (3 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/versions/mod.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"593bbd5a2a12645f25eb7599d7da02229f9c5cc20290ff7fcb03f0a877f587bf"}},{"ruleId":"D2","level":"warning","message":{"text":"IndexWorker::process_document (cognitive 38): IndexWorker::process_document has cognitive complexity 38 (threshold 15). Drivers by points: if/else 15 (23 pts), loops 4 (8 pts), boolean chains 4, match/switch 2 (3 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":1573}}}],"partialFingerprints":{"codehealthFindingId/v1":"37ed664d3c976351aead9aea6de6ffeae6f6e26b95350297c43b475f22eab5be"}},{"ruleId":"D2","level":"warning","message":{"text":"U64Segment::with_new_high (cognitive 38): U64Segment::with_new_high has cognitive complexity 38 (threshold 15). Drivers by points: if/else 14 (30 pts), match/switch 3 (5 pts), boolean chains 3 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids/segment.rs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"92247e0799bc4ccf2c1269c0acbcd5ad0c333b79de77ceacb03053d39c7c6348"}},{"ruleId":"D2","level":"warning","message":{"text":"LanceDataset.__iter__ (cognitive 38): LanceDataset.__iter__ has cognitive complexity 38 (threshold 15). Drivers by points: if/else 19 (29 pts), loops 3 (7 pts), boolean chains 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/torch/data.py"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a65bf229752ce887e2aaa9e0f3b1ac24def2c0126fd9b139bacff34abbdad5e"}},{"ruleId":"D2","level":"warning","message":{"text":"FileFragment::update_columns_with_offsets (cognitive 37): FileFragment::update_columns_with_offsets has cognitive complexity 37 (threshold 15). Drivers by points: if/else 16 (28 pts), loops 4 (6 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":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":2393}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9b973aeb4b6a64dc529c801f7f9404d45ebf70a49448f3511e0afe22b4efcf6"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::plan_compound_scorer (cognitive 37): Scanner::plan_compound_scorer has cognitive complexity 37 (threshold 15). Drivers by points: if/else 20 (28 pts), boolean chains 8, 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":4837}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c78c3b82bbfee6782ca00a1f3785aa932993fe3646f4a92e226fa5b6290be92"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::collect_paths (cognitive 37): Dataset::collect_paths has cognitive complexity 37 (threshold 15). Drivers by points: if/else 11 (27 pts), loops 5 (10 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":"rust/lance/src/dataset.rs"},"region":{"startLine":3457}}}],"partialFingerprints":{"codehealthFindingId/v1":"402844abe30e6853dedf742c22ebfe0567377d3f0feda64ac1a355b6e2216398"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionRebase::check_delete_txn (cognitive 37): TransactionRebase::check_delete_txn has cognitive complexity 37 (threshold 15). Drivers by points: if/else 11 (29 pts), loops 2 (6 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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"feea429aa7298e8f092017c4d085341920e5e79bb5cc21398d3612506e00c7b1"}},{"ruleId":"D2","level":"warning","message":{"text":"CompoundQueryExec::execute (cognitive 37): CompoundQueryExec::execute has cognitive complexity 37 (threshold 15). Drivers by points: if/else 15 (20 pts), match/switch 5 (12 pts), boolean chains 5 (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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"04767fab108d247a9b774aaf9a654565a9ee006faf025d729d352dbe707aa938"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::schema_evolution::alter_columns (cognitive 37): lance::dataset::schema_evolution::alter_columns has cognitive complexity 37 (threshold 15). Drivers by points: if/else 17 (28 pts), boolean chains 6, loops 2 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/schema_evolution.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"14bdbcd2bf7a35efe3d4de0599af581015b745ea4a3bcf3d7db323768b729217"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::io::exec::count_pushdown::try_rewrite (cognitive 37): lance::io::exec::count_pushdown::try_rewrite has cognitive complexity 37 (threshold 15). Drivers by points: if/else 20 (29 pts), match/switch 4, boolean chains 3, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/count_pushdown.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeddf571df3dd0602c87e788c9007c1412226527b852e1dde868b3f6986328c4"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::frag_reuse::validate_folded_deletions (cognitive 37): lance::index::frag_reuse::validate_folded_deletions has cognitive complexity 37 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 6 (11 pts), match/switch 5 (11 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":"rust/lance/src/index/frag_reuse.rs"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"75dc118f881af1b115e82a776bf5fa8a5efe97c0e019f217d6ad93391c55d2a6"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitiveStructuralEncoder::is_constant_values (cognitive 37): PrimitiveStructuralEncoder::is_constant_values has cognitive complexity 37 (threshold 15). Drivers by points: if/else 8 (25 pts), loops 4 (10 pts), boolean chains 1, match/switch 1 (nesting depth added 23). 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6196}}}],"partialFingerprints":{"codehealthFindingId/v1":"a23a33cbbff7974d74a64ed96ac83afc2c1c09fc6812d9e855369b8ca31cb68e"}},{"ruleId":"D2","level":"warning","message":{"text":"FtsIndexExec::materialize_rows_sorted (cognitive 36): FtsIndexExec::materialize_rows_sorted has cognitive complexity 36 (threshold 15). Drivers by points: if/else 16 (23 pts), loops 5 (9 pts), boolean chains 2, 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/fts.rs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef3ec7ced3341eecf2befd30fa1d9b17c2956b585942f45343b5025151ee4962"}},{"ruleId":"D2","level":"warning","message":{"text":"IvfIndexBuilder::build_partitions (cognitive 36): IvfIndexBuilder::build_partitions has cognitive complexity 36 (threshold 15). Drivers by points: if/else 20 (27 pts), boolean chains 3, loops 1 (3 pts), match/switch 3 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":999}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed767ebceabff9842531935ce4ebef82e568571c53f5395e5ea8849d420600b7"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::ivf::train_weighted_hierarchical_f32_kmeans (cognitive 36): lance::index::vector::ivf::train_weighted_hierarchical_f32_kmeans has cognitive complexity 36 (threshold 15). Drivers by points: if/else 12 (24 pts), loops 7 (10 pts), boolean chains 2 (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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":4376}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f6ea8e435763ead524857dd24e52e5a123c34040ad255a571a72f1153d2b0c"}},{"ruleId":"D2","level":"warning","message":{"text":"LazyLevels::seek_row_start (cognitive 36): LazyLevels::seek_row_start has cognitive complexity 36 (threshold 15). Drivers by points: if/else 9 (22 pts), loops 4 (11 pts), boolean chains 2, match/switch 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":1412}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6e643f7fe37a840c7ead3066d7ea691342525af884798125234670b4c6cca50"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::expression::extract_like_leading_prefix (cognitive 36): lance_index::scalar::expression::extract_like_leading_prefix has cognitive complexity 36 (threshold 15). Drivers by points: if/else 18 (26 pts), boolean chains 9, 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":"rust/lance-index/src/scalar/expression.rs"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"56ca1dd06b0f3e4699b4599f26135c1e54f71bf5d20968c15a095b7d936124af"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::vector::bq::ex_dot::unpack_group (cognitive 36): lance_index::vector::bq::ex_dot::unpack_group has cognitive complexity 36 (threshold 15). Drivers by points: loops 13 (33 pts), if/else 1 (2 pts), match/switch 1 (nesting depth added 21). 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":"rust/lance-index/src/vector/bq/ex_dot.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"65b3b629f58769bb314e09f0f4c57bf5bb4ab33b8e08f2821424e788c9577534"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::vector::distributed::index_merger::fixed_size_list_almost_equal (cognitive 36): lance_index::vector::distributed::index_merger::fixed_size_list_almost_equal has cognitive complexity 36 (threshold 15). Drivers by points: if/else 10 (25 pts), loops 3 (6 pts), boolean chains 4, match/switch 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":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"382daf8c31f8c382fc5d54d2f85b857edd8d45374e5c3b896febe6770c718ac1"}},{"ruleId":"D2","level":"warning","message":{"text":"DatasetBuilder::load_impl (cognitive 35): DatasetBuilder::load_impl has cognitive complexity 35 (threshold 15). Drivers by points: if/else 13 (21 pts), boolean chains 8, match/switch 4 (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":"rust/lance/src/dataset/builder.rs"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d1162ae055e791dce603de3a90ec3ef75b296f23c1b6178fa8b86a5ab27f2fd"}},{"ruleId":"D2","level":"warning","message":{"text":"Partition::maxscore_loop (cognitive 35): Partition::maxscore_loop has cognitive complexity 35 (threshold 15). Drivers by points: if/else 9 (23 pts), loops 6 (11 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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":4565}}}],"partialFingerprints":{"codehealthFindingId/v1":"d20ea0a8854c843f935d2dc89a69f4dbbd3d8b58552971c8ecebde3ed51173ee"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionRebase::finish_rewrite (cognitive 35): TransactionRebase::finish_rewrite has cognitive complexity 35 (threshold 15). Drivers by points: if/else 10 (25 pts), match/switch 2 (7 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 21). 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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":2608}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf2ed550fd1177649e617d9ea298f029ad3f6d6dbbe1cd73d6e3ab4837a2db2e"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::write::validate_and_resolve_target_bases_with_primary (cognitive 35): lance::dataset::write::validate_and_resolve_target_bases_with_primary has cognitive complexity 35 (threshold 15). Drivers by points: if/else 18 (28 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write.rs"},"region":{"startLine":1426}}}],"partialFingerprints":{"codehealthFindingId/v1":"8218cd1ce0d396936d85780811d2ab417db1e498f732c02b942934a45c3899c3"}},{"ruleId":"D2","level":"warning","message":{"text":"FixedFullZipDecodeTask::decode (cognitive 35): FixedFullZipDecodeTask::decode has cognitive complexity 35 (threshold 15). Drivers by points: if/else 14 (28 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":4073}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4de72204fcfef89da944c774af9720beddc271ac776d85cc59e3010e2be51ba"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitiveStructuralEncoder::encode_dense_page (cognitive 35): PrimitiveStructuralEncoder::encode_dense_page has cognitive complexity 35 (threshold 15). Drivers by points: if/else 17 (23 pts), match/switch 4 (8 pts), boolean chains 4 (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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":7170}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcbec5f8339e156bf4ece93e9149f7c523bd445290a85b37df2f4b9ea004f345"}},{"ruleId":"D2","level":"warning","message":{"text":"SerializerContext::record_offsets (cognitive 35): SerializerContext::record_offsets has cognitive complexity 35 (threshold 15). Drivers by points: if/else 11 (17 pts), loops 6 (16 pts), boolean chains 1, 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":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"367b36f7052c8bd25fdf1f4bd913bf57c0405f3c2df3087c9e56467aac0831a9"}},{"ruleId":"D2","level":"warning","message":{"text":"BitmapIndex::search_with_options (cognitive 35): BitmapIndex::search_with_options has cognitive complexity 35 (threshold 15). Drivers by points: if/else 17 (26 pts), match/switch 4 (7 pts), boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/bitmap.rs"},"region":{"startLine":768}}}],"partialFingerprints":{"codehealthFindingId/v1":"77308548b4d000c715a0b480c424988206046806f5683622a468b682d114c334"}},{"ruleId":"D2","level":"warning","message":{"text":"ManifestNamespace::rewrite_manifest (cognitive 35): ManifestNamespace::rewrite_manifest has cognitive complexity 35 (threshold 15). Drivers by points: if/else 10 (24 pts), match/switch 4 (10 pts), loops 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":1940}}}],"partialFingerprints":{"codehealthFindingId/v1":"332c07e96a9f444d8d881205a8cb6c5fab8aa2bb5f4e44c2eadad53f875d053e"}},{"ruleId":"D2","level":"warning","message":{"text":"CleanupTask::process_branch_referenced_manifests (cognitive 34): CleanupTask::process_branch_referenced_manifests has cognitive complexity 34 (threshold 15). Drivers by points: if/else 9 (27 pts), loops 3 (4 pts), boolean chains 3 (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":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":1325}}}],"partialFingerprints":{"codehealthFindingId/v1":"46dbb6ac4c0552257afe8f9cad23c771f8b06258e2abf3db87986538f9cad96a"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::mem_wal::index::fts::score_terms (cognitive 34): lance::dataset::mem_wal::index::fts::score_terms has cognitive complexity 34 (threshold 15). Drivers by points: if/else 10 (25 pts), loops 4 (7 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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":3082}}}],"partialFingerprints":{"codehealthFindingId/v1":"6269fe783cbd25e14248728bb2d10938ff3834a6952f9b2dfca6403b7f60c595"}},{"ruleId":"D2","level":"warning","message":{"text":"SerializerContext::normalize_specials_and_plan_splits (cognitive 34): SerializerContext::normalize_specials_and_plan_splits has cognitive complexity 34 (threshold 15). Drivers by points: if/else 23 (29 pts), boolean chains 4, loops 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":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"89543fb961b969c65b45e779c7bf1010bbe41c3e37c8214df5f1d4b85437f355"}},{"ruleId":"D2","level":"warning","message":{"text":"ZoneTrainer::train (cognitive 34): ZoneTrainer::train has cognitive complexity 34 (threshold 15). Drivers by points: if/else 9 (24 pts), loops 3 (7 pts), match/switch 1 (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":"rust/lance-index/src/scalar/zoned.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4326a5a7e4fb11702a585ca510983e8215e89608151d2aff633ff4f2c9977df"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::index::flat_search::tokenize_and_count (cognitive 34): lance_index::scalar::inverted::index::flat_search::tokenize_and_count has cognitive complexity 34 (threshold 15). Drivers by points: if/else 10 (18 pts), loops 7 (10 pts), match/switch 2 (4 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":"rust/lance-index/src/scalar/inverted/index/flat_search.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"1db2c459dba0378db94f3fdb56baef448aa0b41cdbc29a1c41de6cf6f8cc924d"}},{"ruleId":"D2","level":"warning","message":{"text":"FileScheduler::submit_request (cognitive 34): FileScheduler::submit_request has cognitive complexity 34 (threshold 15). Drivers by points: if/else 13 (22 pts), loops 5 (11 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":"rust/lance-io/src/scheduler.rs"},"region":{"startLine":1196}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca20ec879e52ae65dd10dd54ed5691ed82bd6205320ddf255baf6dc0c18dd05d"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::utils::stream::apply_row_id_and_deletes_with_system_columns (cognitive 34): lance_table::utils::stream::apply_row_id_and_deletes_with_system_columns has cognitive complexity 34 (threshold 15). Drivers by points: if/else 23 (27 pts), boolean chains 4, loops 1 (2 pts), 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":"rust/lance-table/src/utils/stream.rs"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"f709d4826212233035857f3993d9d437b98ae96c2438bf03f7ca8b6cd396a1fd"}},{"ruleId":"D2","level":"warning","message":{"text":"pylance::dataset::vector_query_params_from_dict (cognitive 33): pylance::dataset::vector_query_params_from_dict has cognitive complexity 33 (threshold 15). Drivers by points: if/else 24 (28 pts), boolean chains 5 (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":"python/src/dataset.rs"},"region":{"startLine":5680}}}],"partialFingerprints":{"codehealthFindingId/v1":"0416c97c74bd0b9a31bf22fe09ebcce88c8bc6956cb3eb3a8bcb8cd5971255fe"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentReuseIndex::remap_row_ids_excluding (cognitive 33): FragmentReuseIndex::remap_row_ids_excluding has cognitive complexity 33 (threshold 15). Drivers by points: if/else 8 (25 pts), loops 4 (8 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":"rust/lance/src/index/frag_reuse_reader.rs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"c920e67b68c7eec29420f2d612c339dcc887d5a81f251d96b26e0061fe08b280"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_datafusion::signed_zero::rewrite_node (cognitive 33): lance_datafusion::signed_zero::rewrite_node has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (22 pts), match/switch 4 (7 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 16). 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":"rust/lance-datafusion/src/signed_zero.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"031460bdf4dc0eae6e8644d1c58c075102fe5850a8ade710fee4016cd6bf3e8c"}},{"ruleId":"D2","level":"warning","message":{"text":"HNSW::flat_search (cognitive 33): HNSW::flat_search has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (24 pts), loops 3 (6 pts), boolean chains 2, match/switch 1 (nesting depth added 17). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/hnsw/builder.rs"},"region":{"startLine":621}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cdb00843c8db5dd6022c798aca2195a4e48cad9a7871a41cef9e6ca72a2e5e7"}},{"ruleId":"D2","level":"warning","message":{"text":"BytesBackend::insert_array_and_report_existing (cognitive 32): BytesBackend::insert_array_and_report_existing 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":"rust/lance/src/dataset/mem_wal/index/btree.rs"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"d77a315494d19e06fe8255333afe43b44173dc58508a47dea77ac228c7d0828c"}},{"ruleId":"D2","level":"warning","message":{"text":"MemTableScanExec::execute (cognitive 32): MemTableScanExec::execute has cognitive complexity 32 (threshold 15). Drivers by points: if/else 13 (19 pts), match/switch 4 (9 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/scan.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c60ebb3c756567b081acec7b0439ad6c3186c37e356d480623b0ac81dcea6c"}},{"ruleId":"D2","level":"warning","message":{"text":"TaskDispatcher::run (cognitive 32): TaskDispatcher::run has cognitive complexity 32 (threshold 15). Drivers by points: if/else 5 (17 pts), match/switch 4 (14 pts), loops 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":"rust/lance/src/dataset/mem_wal/write.rs"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"114abc9b51f0a6b6dcbf434f8c5ccf0c554bb70c0aa05c4584807ea192e6589b"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::create_plan_impl (cognitive 32): Scanner::create_plan_impl has cognitive complexity 32 (threshold 15). Drivers by points: if/else 14 (21 pts), boolean chains 5, loops 2 (3 pts), match/switch 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":3271}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a1d7389985c88a49bc5561a1a1b2d40b84f303f8eed28527f0f4065c8decc9c"}},{"ruleId":"D2","level":"warning","message":{"text":"IvfIndexBuilder::take_partition_batches (cognitive 32): IvfIndexBuilder::take_partition_batches has cognitive complexity 32 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 5 (12 pts), match/switch 1 (2 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":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"18a3d7c15efb9305da2cfcf47d682e021ee05b8e3990b4d74a3a3cca6d861493"}},{"ruleId":"D2","level":"warning","message":{"text":"IvfIndexBuilder::join_partitions_impl (cognitive 32): IvfIndexBuilder::join_partitions_impl has cognitive complexity 32 (threshold 15). Drivers by points: if/else 8 (18 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":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":2528}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec5b1da906d56076fedf5dfb3996f4fe70c26ff90044da47b05e1b617e35adea"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::blob::validate_prepared_blob_value_array (cognitive 32): lance::blob::validate_prepared_blob_value_array has cognitive complexity 32 (threshold 15). Drivers by points: if/else 12 (26 pts), boolean chains 3, 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":"rust/lance/src/blob.rs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"50367bde2da3ebac017fbe8534be949c63a9818fe5e33ebd50cc57b348e5fc25"}},{"ruleId":"D2","level":"warning","message":{"text":"CoreFieldDecoderStrategy::create_array_field_scheduler (cognitive 32): CoreFieldDecoderStrategy::create_array_field_scheduler has cognitive complexity 32 (threshold 15). Drivers by points: if/else 16 (27 pts), loops 1 (3 pts), boolean chains 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":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"e509824329f320627dce5467635ad9babeef082aa10b852d92a280edf6e40fbf"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitiveStructuralEncoder::serialize_miniblocks (cognitive 32): PrimitiveStructuralEncoder::serialize_miniblocks has cognitive complexity 32 (threshold 15). Drivers by points: if/else 13 (20 pts), loops 4 (9 pts), match/switch 2, boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":5751}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5a87ae7bbbfd9738c377744a6a4cf7f3352a2a438b650ba6d1b5384460a8205"}},{"ruleId":"D2","level":"warning","message":{"text":"RepDefUnraveler::unravel_offsets (cognitive 32): RepDefUnraveler::unravel_offsets has cognitive complexity 32 (threshold 15). Drivers by points: if/else 14 (23 pts), loops 3 (5 pts), match/switch 2 (3 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":1720}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe922a48fcaedfaa6eebf94c79120a0b8fdce9453821bc7be1ee33aa2c822eb1"}},{"ruleId":"D2","level":"warning","message":{"text":"HnswBuilder::connect_stranded_nodes (cognitive 32): HnswBuilder::connect_stranded_nodes has cognitive complexity 32 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 8 (12 pts), match/switch 1 (3 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":"rust/lance-index/src/vector/hnsw/builder.rs"},"region":{"startLine":940}}}],"partialFingerprints":{"codehealthFindingId/v1":"04f4955ee96f71462840711082d5a7e23df4005b193199abc3f707c69ca7ba14"}},{"ruleId":"D2","level":"warning","message":{"text":"Transaction::withdraw_rewritten_coverage (cognitive 32): Transaction::withdraw_rewritten_coverage has cognitive complexity 32 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 3 (6 pts), match/switch 1 (4 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":"rust/lance-table/src/transaction/index_maintenance.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb2a4136103c4e1250a05d48eb0d96867cc85c39e7e45be9961c6766525f213f"}},{"ruleId":"D2","level":"warning","message":{"text":"dataset._build_vector_search_query (cognitive 32): dataset._build_vector_search_query has cognitive complexity 32 (threshold 15). Drivers by points: if/else 20 (22 pts), boolean chains 10 (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":"python/python/lance/dataset.py"},"region":{"startLine":8430}}}],"partialFingerprints":{"codehealthFindingId/v1":"87bf133f6abdca8dae6f214d27f09ac1220760047b46507e4005c81b17dfde3b"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::new (cognitive 31): Dataset::new has cognitive complexity 31 (threshold 15). Drivers by points: if/else 22 (28 pts), loops 1 (2 pts), match/switch 1 (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":"python/src/dataset.rs"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"831aa6d30c96946b50896dab73bc404c34e5c69f163ac174c0a8fd56b2d16866"}},{"ruleId":"D2","level":"warning","message":{"text":"SymbolTable::finalize (cognitive 31): SymbolTable::finalize has cognitive complexity 31 (threshold 15). Drivers by points: if/else 12 (22 pts), loops 6 (8 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/compression/fsst/src/fsst.rs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb6cbdd401ed558590af5dbe104a5254fb909843b50f14e42c79abe09e9fae3d"}},{"ruleId":"D2","level":"warning","message":{"text":"FileFragment::validate (cognitive 31): FileFragment::validate has cognitive complexity 31 (threshold 15). Drivers by points: if/else 9 (16 pts), loops 6 (8 pts), boolean chains 5, 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":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":1765}}}],"partialFingerprints":{"codehealthFindingId/v1":"32da9bb8b723dbabf52e440bfab0884ba6e8cb685c46bbc06ca7c55035ae39cd"}},{"ruleId":"D2","level":"warning","message":{"text":"MemTableDedupScanExec::execute (cognitive 31): MemTableDedupScanExec::execute has cognitive complexity 31 (threshold 15). Drivers by points: if/else 9 (17 pts), match/switch 3 (8 pts), boolean chains 3, loops 2 (3 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_scan.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"f86f3a86bd557fe186ff94578754f544155ea2ce9f660c14d18d9e2f5aea3291"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::plan_phrase_query (cognitive 31): Scanner::plan_phrase_query has cognitive complexity 31 (threshold 15). Drivers by points: if/else 11 (22 pts), match/switch 3 (5 pts), boolean chains 4 (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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5316}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa32b351632cfbdfe6dffcf0366a168b5f6a3e9bb076a58fcfde345b584403d1"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentScanner::extract_guarantees (cognitive 31): FragmentScanner::extract_guarantees has cognitive complexity 31 (threshold 15). Drivers by points: if/else 9 (21 pts), match/switch 3 (6 pts), loops 3 (4 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":"rust/lance/src/io/exec/pushdown_scan.rs"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"7396eb4c5a1118e059b22fa96c6e6fc6360c31009b7b97cfe76ecb9ab9c94e65"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::rowids::validate::validate_stable_row_ids (cognitive 31): lance::dataset::rowids::validate::validate_stable_row_ids has cognitive complexity 31 (threshold 15). Drivers by points: if/else 9 (21 pts), loops 4 (6 pts), match/switch 1 (3 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":"rust/lance/src/dataset/rowids/validate.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cde55fb326e9bab3e76e4d8c3f77cec6258340811a548a7b8ca009121fe13eb"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::frag_reuse_reader::load_indices (cognitive 31): lance::index::frag_reuse_reader::load_indices has cognitive complexity 31 (threshold 15). Drivers by points: if/else 10 (24 pts), loops 4 (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":"rust/lance/src/index/frag_reuse_reader.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"7db3254448ec492a51b29b6402781f6b0385040344af3d43558bd88f29b4e26d"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitiveStructuralEncoder::compress_levels (cognitive 31): PrimitiveStructuralEncoder::compress_levels has cognitive complexity 31 (threshold 15). Drivers by points: if/else 15 (29 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":5916}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a7f15c63bacde83c444243e31a334117390c87a371a96a091ef39aa82615760"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitiveStructuralEncoder::sample_unique_ratio (cognitive 31): PrimitiveStructuralEncoder::sample_unique_ratio has cognitive complexity 31 (threshold 15). Drivers by points: loops 5 (13 pts), if/else 5 (11 pts), match/switch 3 (5 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6962}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac882a1f1078a4f8d63a9c9a76be62db4c9cfb4c9cce15b8433118fbbce81bb"}},{"ruleId":"D2","level":"warning","message":{"text":"Wand::prepare_score_first_and_window (cognitive 31): Wand::prepare_score_first_and_window has cognitive complexity 31 (threshold 15). Drivers by points: if/else 16 (26 pts), boolean chains 3, 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":3716}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7d7f80513d59e4f9b4f5c1283f64b77fd720867d0834da69d7b8a10d14df7ed"}},{"ruleId":"D2","level":"warning","message":{"text":"MinHashLshIndex::refine (cognitive 31): MinHashLshIndex::refine has cognitive complexity 31 (threshold 15). Drivers by points: if/else 9 (25 pts), loops 3 (5 pts), boolean chains 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":"rust/lance-index/src/scalar/minhash_lsh/index.rs"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0092cc3d85a329f9b3fcd42f26b80cee31f3875cb9207be8d2da9fc89f54a21"}},{"ruleId":"D2","level":"warning","message":{"text":"RabitQuantizationStorage::raw_query_factors (cognitive 31): RabitQuantizationStorage::raw_query_factors has cognitive complexity 31 (threshold 15). Drivers by points: if/else 12 (20 pts), loops 2 (9 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":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef4d191a35065093e4a1abe754ab36472574a4d9eef1b881fa450dd7bc8dd518"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::cross_column::collect_local_generator_candidates (cognitive 31): lance_index::scalar::inverted::cross_column::collect_local_generator_candidates has cognitive complexity 31 (threshold 15). Drivers by points: if/else 7 (25 pts), loops 3 (6 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":"rust/lance-index/src/scalar/inverted/cross_column.rs"},"region":{"startLine":939}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c8024ccded26d39608532c19e6956615f06582a13e9c84ffd880a022a23ab76"}},{"ruleId":"D2","level":"warning","message":{"text":"Transaction::retain_relevant_indices (cognitive 31): Transaction::retain_relevant_indices has cognitive complexity 31 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 5 (11 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":"rust/lance-table/src/transaction/index_maintenance.rs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b028ac407aba620af2f1bd08ab3436b9b18c36ad09f890b7cf379e3cd5670e6"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::rowids::version::refresh_row_latest_update_meta_for_partial_frag_rewrite_cols (cognitive 31): lance_table::rowids::version::refresh_row_latest_update_meta_for_partial_frag_rewrite_cols has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (24 pts), loops 2 (5 pts), match/switch 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids/version.rs"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"525bf5e1ae7f27f279d3a5b27ccc35648943818ef14d6e7b26435c973dca0e7d"}},{"ruleId":"D2","level":"warning","message":{"text":"CoalesceFirstStream::poll_next (cognitive 30): CoalesceFirstStream::poll_next has cognitive complexity 30 (threshold 15). Drivers by points: if/else 8 (22 pts), match/switch 3 (7 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":"rust/lance/src/dataset/mem_wal/scanner/exec/coalesce_first.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8860b3594b52141d60f71377ee98fd8979df9f3d78f224b4bf8a0c2294c6b3f"}},{"ruleId":"D2","level":"warning","message":{"text":"LsmFtsSearchPlanner::build_source_plan (cognitive 30): LsmFtsSearchPlanner::build_source_plan has cognitive complexity 30 (threshold 15). Drivers by points: if/else 7 (14 pts), match/switch 9 (14 pts), loops 1 (2 pts) (nesting depth added 13). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbeafcae713b6dd3d13787d7d13c9f267b565596a533a889dad96b6185b16bb5"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::nearest (cognitive 30): Scanner::nearest has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (24 pts), loops 1 (3 pts), match/switch 2, 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":1990}}}],"partialFingerprints":{"codehealthFindingId/v1":"f532d2670417fa97cabcb53a160d312ff83c8cbc820a4c88c415f83f779892fa"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::merge_existing_index_segments (cognitive 30): Dataset::merge_existing_index_segments has cognitive complexity 30 (threshold 15). Drivers by points: if/else 22 (24 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index.rs"},"region":{"startLine":2095}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7cd61366f89016eb86690364f9352cca8ebfffac0b6d75d781dc897d206dcc6"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentScanner::read_batch (cognitive 30): FragmentScanner::read_batch has cognitive complexity 30 (threshold 15). Drivers by points: if/else 14 (26 pts), match/switch 2 (3 pts), boolean chains 1 (nesting depth added 13). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/pushdown_scan.rs"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"499516b22c77f4b87029b81bfc536ac3a15bc14d1aab81c563464651763e4125"}},{"ruleId":"D2","level":"warning","message":{"text":"LanceStream::try_new_v2 (cognitive 30): LanceStream::try_new_v2 has cognitive complexity 30 (threshold 15). Drivers by points: if/else 20 (27 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":"rust/lance/src/io/exec/scan.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"f34449f43fb63ba108cf1cf518b74ed35ebcda0a66eaa834119ec85a7661c026"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::ivf::initialize_weighted_centroids (cognitive 30): lance::index::vector::ivf::initialize_weighted_centroids has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (21 pts), loops 5 (9 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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":4039}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ac8c19f24f53f895ff08d6a3f455082323da83086b943682d082abb1539c118"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::mem_wal::index::fts::phrase_search_tail (cognitive 30): lance::dataset::mem_wal::index::fts::phrase_search_tail has cognitive complexity 30 (threshold 15). Drivers by points: if/else 5 (16 pts), loops 4 (7 pts), match/switch 2 (6 pts), boolean chains 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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":3168}}}],"partialFingerprints":{"codehealthFindingId/v1":"06d5ad857664d9791ab6bfd581049e3096ff87a7fb54b5019b6bad3ac136f95e"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_file::versions::v1::writer::statistics::get_binary_statistics (cognitive 30): lance_file::versions::v1::writer::statistics::get_binary_statistics has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (28 pts), loops 1, 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":"rust/lance-file/src/versions/v1/writer/statistics.rs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"c836052f42ad6cc6acae5f4ce4b427e47b77f25edd35f80390db895ac9c0ae9e"}},{"ruleId":"D2","level":"warning","message":{"text":"ShouldMaxScoreScorer::current_score_upper_bound (cognitive 30): ShouldMaxScoreScorer::current_score_upper_bound has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (28 pts), loops 2 (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":"rust/lance-index/src/scalar/inverted/compound/should_maxscore.rs"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6fc2b76e5f9d3bed11dac82396ff28bd24af2a4130829e3319a34ef21d2d51a"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::vector::distributed::index_merger::read_shard_window_partitions (cognitive 30): lance_index::vector::distributed::index_merger::read_shard_window_partitions has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (19 pts), loops 5 (8 pts), boolean chains 3 (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":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"7534966558a15ad7a7c2dc01d051caa44d21e73b30e984c1c7b83cefc6e3c88c"}},{"ruleId":"D2","level":"warning","message":{"text":"udf.normalize_transform (cognitive 30): udf.normalize_transform has cognitive complexity 30 (threshold 15). Drivers by points: if/else 10 (20 pts), error handling 2 (4 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/udf.py"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"65a869ba459e44968ebd5df6bca0430cee18a33f4635817d352c284d8dbc9ced"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultCompactionPlanner::plan (cognitive 29): DefaultCompactionPlanner::plan has cognitive complexity 29 (threshold 15). Drivers by points: if/else 15 (22 pts), boolean chains 4, match/switch 1 (2 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac56b36706c228ecc9b2496af188ce7a729846d9d2dc02e2de1c7a7ab4d6abf2"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::plan_match_query (cognitive 29): Scanner::plan_match_query has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (20 pts), match/switch 3 (5 pts), boolean chains 4 (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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5480}}}],"partialFingerprints":{"codehealthFindingId/v1":"966ed3264ec2e9e74cea1dfa007b8a68467ecb466fbc32f621159814f562e861"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::create_data_file (cognitive 29): Dataset::create_data_file has cognitive complexity 29 (threshold 15). Drivers by points: if/else 14 (20 pts), loops 3 (5 pts), boolean chains 4 (nesting depth added 8). Of this number, 20 points are the body\u0027s own statements and 9 belong to 3 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset.rs"},"region":{"startLine":2262}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2b7dc6328ef275f16a349a4e2c7fc7ae37bd218c230b7f7a225916b472aa64e"}},{"ruleId":"D2","level":"warning","message":{"text":"DatasetPreFilter::create_deletion_mask_impl (cognitive 29): DatasetPreFilter::create_deletion_mask_impl has cognitive complexity 29 (threshold 15). Drivers by points: if/else 13 (18 pts), loops 3 (6 pts), match/switch 1 (3 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/prefilter.rs"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dd59476f4433ac5cc701e99a3d29eeccb33479bd55deb500712644030071344"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::ivf::io::write_pq_partitions (cognitive 29): lance::index::vector::ivf::io::write_pq_partitions has cognitive complexity 29 (threshold 15). Drivers by points: if/else 6 (19 pts), loops 3 (6 pts), match/switch 1 (3 pts), boolean chains 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":"rust/lance/src/index/vector/ivf/io.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"33830d7a420c3ff694a2e84c13dd7b681f1ccde87260ef237898e7de77d8c5b3"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_file::versions::v1::writer::statistics::get_fixed_size_binary_statistics (cognitive 29): lance_file::versions::v1::writer::statistics::get_fixed_size_binary_statistics has cognitive complexity 29 (threshold 15). Drivers by points: if/else 13 (28 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":"rust/lance-file/src/versions/v1/writer/statistics.rs"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"5771786d27920635182690e3e407bde85692af4bbdc48f39d4c7a71e9a946062"}},{"ruleId":"D2","level":"warning","message":{"text":"Wand::score_single_essential_upto (cognitive 29): Wand::score_single_essential_upto has cognitive complexity 29 (threshold 15). Drivers by points: if/else 9 (27 pts), boolean chains 1, 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":"rust/lance-index/src/scalar/inverted/wand_maxscore.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ae070145be334ac24a6c164b3b731cb14a681c44d574154a74301df9b91091"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::fmindex::write_partitioned_fmindex_stream_with_config (cognitive 29): lance_index::scalar::fmindex::write_partitioned_fmindex_stream_with_config has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 6 (8 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":"rust/lance-index/src/scalar/fmindex.rs"},"region":{"startLine":1734}}}],"partialFingerprints":{"codehealthFindingId/v1":"8da0da42bbb8916dcabd61d2d60db9f059fd08360de1f5f9dc5cadb9ddedbe61"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::vector::bq::transform::compute_raw_query_factors (cognitive 29): lance_index::vector::bq::transform::compute_raw_query_factors has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (24 pts), loops 2 (3 pts), match/switch 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/transform.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"275ca734127ded8c98b6fb283c40a6d1d4fb44ea6204bc65ee82c396ee59dc61"}},{"ruleId":"D2","level":"warning","message":{"text":"dataset.write_dataset (cognitive 29): dataset.write_dataset has cognitive complexity 29 (threshold 15). Drivers by points: if/else 17 (25 pts), boolean chains 4 (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":"python/python/lance/dataset.py"},"region":{"startLine":8037}}}],"partialFingerprints":{"codehealthFindingId/v1":"3194d4881bc2e9a31be69a851156aa635debb4598e781d7d348f14503ee57e15"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_jni::blocking_scanner::build_scanner_with_options (cognitive 28): lance_jni::blocking_scanner::build_scanner_with_options has cognitive complexity 28 (threshold 15). Drivers by points: if/else 21 (24 pts), loops 2 (3 pts), match/switch 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/blocking_scanner.rs"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc779421917518cf4d6dbebf4cff1a716806416319a6ff8fffb009c4465cd9a7"}},{"ruleId":"D2","level":"warning","message":{"text":"FileFragment::scanner (cognitive 28): FileFragment::scanner has cognitive complexity 28 (threshold 15). Drivers by points: if/else 20 (24 pts), match/switch 2 (4 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":"python/src/fragment.rs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"004dbdede9de0f614ed46b598b48037349e02234510c568ad2aaccb7c83013e6"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentReuseIndex::segment_plans (cognitive 28): FragmentReuseIndex::segment_plans has cognitive complexity 28 (threshold 15). Drivers by points: loops 8 (15 pts), if/else 3 (8 pts), match/switch 2 (5 pts) (nesting depth added 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":"rust/lance/src/index/frag_reuse_reader.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"88d74ca5c86878309131cb8571222b944bebc03109231894f81ec7a1805510f7"}},{"ruleId":"D2","level":"warning","message":{"text":"TakeStream::map_batch (cognitive 28): TakeStream::map_batch has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14 (21 pts), loops 3 (6 pts), match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/take.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"1909e03c9618c0d6594ed2e67e8695a548257980526e742dc5a1d4464966f8ac"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::schema_evolution::add_columns_from_stream (cognitive 28): lance::dataset::schema_evolution::add_columns_from_stream has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 4 (9 pts), match/switch 2 (4 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":"rust/lance/src/dataset/schema_evolution.rs"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"2318c730d1330980fb5bbd68a5f618429096625856e7f8305c09c7b1ae96751b"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::dedup::plan (cognitive 28): lance::index::vector::dedup::plan has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (19 pts), boolean chains 6, 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":"rust/lance/src/index/vector/dedup.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"d94ae95cfcae1748ff40f3581f062a10d26c5fa81e03beb4e23aa1f8569c2dae"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::io::commit::migrate_indices (cognitive 28): lance::io::commit::migrate_indices has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (16 pts), match/switch 3 (7 pts), boolean chains 4, 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":"rust/lance/src/io/commit.rs"},"region":{"startLine":1019}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a6c239a3442f1f70a0e19f3f6ed8d51ab0c26eb1daa70dce6595562f7dbd355"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::io::commit::do_commit_detached_transaction (cognitive 28): lance::io::commit::do_commit_detached_transaction has cognitive complexity 28 (threshold 15). Drivers by points: if/else 8 (16 pts), match/switch 4 (10 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":"rust/lance/src/io/commit.rs"},"region":{"startLine":1191}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ae24d9d8d51eb0e218f62c4400863ef93ed1aabc37c29382e021fb08193262d"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::write::cleanup_data_fragments (cognitive 28): lance::dataset::write::cleanup_data_fragments has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (14 pts), match/switch 3 (11 pts), loops 2 (3 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":"rust/lance/src/dataset/write.rs"},"region":{"startLine":1235}}}],"partialFingerprints":{"codehealthFindingId/v1":"39d1d9c47afa6ae412ab7cde64727482a04fc22b6c44a3649f0e5dfe33f35eda"}},{"ruleId":"D2","level":"warning","message":{"text":"SharedStream::poll_next (cognitive 28): SharedStream::poll_next has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (19 pts), match/switch 5 (8 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":"rust/lance-core/src/utils/futures.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ac92c990937b2af750193ff92d3403d9e05d247d252c717b362b85c2a525df0"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_file::versions::v1::writer::statistics::get_string_statistics (cognitive 28): lance_file::versions::v1::writer::statistics::get_string_statistics has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (26 pts), loops 1, 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":"rust/lance-file/src/versions/v1/writer/statistics.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"90a629d61b6dc4c3e6876aa27e3e613061c5d54ab9fc0ad9085ec1c785639f8c"}},{"ruleId":"D2","level":"warning","message":{"text":"PostingIterator::position_cursor (cognitive 28): PostingIterator::position_cursor has cognitive complexity 28 (threshold 15). Drivers by points: if/else 3 (12 pts), loops 2 (10 pts), match/switch 3 (6 pts) (nesting depth added 20). 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":1199}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a97c6b40b4d97f65b83ac046181a011ee0ba7b11edc5c310a9f1b12433f7a47"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::combined::search::combined_fields_search (cognitive 28): lance_index::scalar::inverted::combined::search::combined_fields_search has cognitive complexity 28 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 6 (13 pts), boolean chains 2 (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":"rust/lance-index/src/scalar/inverted/combined/search.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"02e15a8a1fb26237999f79983b55082c4b097ca20a0411e1b40e724f5496209f"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::wand::exclusive_partial_score_limit (cognitive 28): lance_index::scalar::inverted::wand::exclusive_partial_score_limit has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (20 pts), loops 3 (5 pts), boolean chains 3 (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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":1833}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bd5c653bb53f0f9c4190d767594e8ba515285eedd9012b6ef27fb0359a811d7"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::cross_column::score_generator_candidates (cognitive 28): lance_index::scalar::inverted::cross_column::score_generator_candidates has cognitive complexity 28 (threshold 15). Drivers by points: if/else 5 (19 pts), loops 3 (6 pts), boolean chains 3 (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":"rust/lance-index/src/scalar/inverted/cross_column.rs"},"region":{"startLine":1051}}}],"partialFingerprints":{"codehealthFindingId/v1":"e175327415633092e4fb635ee4902e8452cb3826147da979c110c3fc2c89304c"}},{"ruleId":"D2","level":"warning","message":{"text":"SegmentCursorState::extend_dense_bitmap_range (cognitive 28): SegmentCursorState::extend_dense_bitmap_range has cognitive complexity 28 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 3 (7 pts), boolean chains 2 (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":"rust/lance-table/src/rowids/segment.rs"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9e3e67c4164d3946917c090c9066c0da918b388fda2701dfacb06d4465e4635"}},{"ruleId":"D2","level":"warning","message":{"text":"FragReuseLedger::decode_content (cognitive 28): FragReuseLedger::decode_content has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (19 pts), loops 3 (7 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":"rust/lance-table/src/system_index/frag_reuse/ledger.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"54a061bb7207da286308437e69ba29543fae543ca95d2b25441a8851bab68290"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::system_index::frag_reuse::ledger::order_lineage (cognitive 28): lance_table::system_index::frag_reuse::ledger::order_lineage has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 7 (11 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":"rust/lance-table/src/system_index/frag_reuse/ledger.rs"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"b08c08eb48a86ecbd4b22850a318ca859b316100de07df579362309fc9a537dc"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::commit_existing_index_segments (cognitive 27): Dataset::commit_existing_index_segments has cognitive complexity 27 (threshold 15). Drivers by points: if/else 16 (21 pts), boolean chains 3, loops 2 (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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index.rs"},"region":{"startLine":2260}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0cb02db21d6b996c99f83e035aab6756cb9a8b21a81692d9e5a109e5f5612c2"}},{"ruleId":"D2","level":"warning","message":{"text":"AddRowAddrExec::compute_row_addrs (cognitive 27): AddRowAddrExec::compute_row_addrs has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (21 pts), loops 2 (6 pts) (nesting depth added 15). 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":"rust/lance/src/io/exec/rowids.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"34f0ab65c2af4153fc1146b1ec5d0b4ca1f7f683b5efb6ec9128560e6252bb88"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::blob::collect_external_blob_uris (cognitive 27): lance::dataset::blob::collect_external_blob_uris has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 4 (8 pts), boolean chains 4, 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":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2d159234e15d0ebbaf33e28e28aad2cdd1d69b259f569de668e169e0ec6cc41"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_core::datatypes::schema::compare_fields (cognitive 27): lance_core::datatypes::schema::compare_fields has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (19 pts), boolean chains 4, loops 2 (4 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":"rust/lance-core/src/datatypes/schema.rs"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"adee9124381c21ba7d659522f444c7c32b68017f2a8110aaf53399857a9d4a62"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_core::datatypes::schema::parse_field_path (cognitive 27): lance_core::datatypes::schema::parse_field_path has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (23 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/datatypes/schema.rs"},"region":{"startLine":1581}}}],"partialFingerprints":{"codehealthFindingId/v1":"d939c3db7839e594caf73cf8165418d7489ef688923b7c7adc531293a9cf75db"}},{"ruleId":"D2","level":"warning","message":{"text":"LanceEncodingsIo::submit_request (cognitive 27): LanceEncodingsIo::submit_request has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 5 (8 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/io.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1950e332b374603a86b73e001211893ed7459d0431854907ea9aa1239bd8203"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_file::concat::copy_page_buffers (cognitive 27): lance_file::concat::copy_page_buffers has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (18 pts), loops 4 (8 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":"rust/lance-file/src/concat.rs"},"region":{"startLine":795}}}],"partialFingerprints":{"codehealthFindingId/v1":"1336e91e9d303d68a6c3679cc5a0e19b3c07e0b9f08ef02b56144f93f4ec77d8"}},{"ruleId":"D2","level":"warning","message":{"text":"StablePartitionMapping::remap_row_ids (cognitive 27): StablePartitionMapping::remap_row_ids has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (18 pts), loops 5 (8 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/frag_reuse/stable_partition.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"d858a59c50e76f54d62664461eb92af38ab3dc16c7f4476e329d8d84dddbc954"}},{"ruleId":"D2","level":"warning","message":{"text":"InvertedPartition::stale_row_stats_for_terms (cognitive 27): InvertedPartition::stale_row_stats_for_terms has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 5 (9 pts), 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":"rust/lance-index/src/scalar/inverted/index/partition.rs"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0642d64db9837006c640e5191a1f7a415190edc84fb50809720b5e42814019e"}},{"ruleId":"D2","level":"warning","message":{"text":"RawInvertedIndexParams::resolve (cognitive 27): RawInvertedIndexParams::resolve has cognitive complexity 27 (threshold 15). Drivers by points: if/else 22, boolean chains 3, 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":"rust/lance-index/src/scalar/inverted/tokenizer.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"58947a9aa524c4e1a18f66ac358518aac0892ecb8aadcc0bf274d75db535a965"}},{"ruleId":"D2","level":"warning","message":{"text":"JsonIndexPlugin::convert_batch_by_type (cognitive 27): JsonIndexPlugin::convert_batch_by_type has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 4 (8 pts), boolean chains 2, match/switch 1 (nesting depth added 12). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":680}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ea5b6cdee6feab670810643c1d83d90b9010c495ff936bbf1d65ddc01380887"}},{"ruleId":"D2","level":"warning","message":{"text":"RQPairScorer::stage (cognitive 27): RQPairScorer::stage has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14 (18 pts), loops 3 (6 pts), match/switch 3 (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":"rust/lance-index/src/vector/bq/pairwise.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"065a02f74d2a207df1656d851427dace0d519b56baa926f19c1a0ccd7fe278c8"}},{"ruleId":"D2","level":"warning","message":{"text":"Transaction::prune_overlay_stale_fields_from_indices (cognitive 27): Transaction::prune_overlay_stale_fields_from_indices has cognitive complexity 27 (threshold 15). Drivers by points: loops 6 (16 pts), if/else 3 (10 pts), boolean chains 1 (nesting depth added 17). 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":"rust/lance-table/src/transaction/index_maintenance.rs"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd91548d96024203c3ec1c1d6881108bbfbd8fd636c7aabddab03ecb65992a11"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_jni::index::determine_index_type (cognitive 26): lance_jni::index::determine_index_type has cognitive complexity 26 (threshold 15). Drivers by points: if/else 20 (25 pts), 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":"java/lance-jni/src/index.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"74d28fe7f3903ffb253cdd7bd6fe9e653ce92baf53ed97a7c8ec424d85c17566"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_jni::transaction::convert_to_java_operation_inner (cognitive 26): lance_jni::transaction::convert_to_java_operation_inner has cognitive complexity 26 (threshold 15). Drivers by points: match/switch 8 (15 pts), loops 2 (6 pts), if/else 3 (5 pts) (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":"java/lance-jni/src/transaction.rs"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"94c9e3021e866cf4b5aa8d25c31e4ea9451515d583df3ee94aec52aaebafdcdf"}},{"ruleId":"D2","level":"warning","message":{"text":"PyLance::into_pyobject (cognitive 26): PyLance::into_pyobject has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (16 pts), match/switch 3 (6 pts), loops 1 (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":"python/src/transaction.rs"},"region":{"startLine":659}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7f85a7c817166bb1b754aef6dc5073d939ff185df7c11738468e8b834da2033"}},{"ruleId":"D2","level":"warning","message":{"text":"MemTableBruteForceVectorExec::compute_topk (cognitive 26): MemTableBruteForceVectorExec::compute_topk has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (18 pts), boolean chains 5, loops 2 (3 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a27321326d20745e3d28bfe4963c452257ce7ef90fc6147be83d3ce6b8d2ac5"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::calculate_final_projection (cognitive 26): Scanner::calculate_final_projection has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (22 pts), boolean chains 4 (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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":2540}}}],"partialFingerprints":{"codehealthFindingId/v1":"cef7a207e490fe5f937610da5a746855d6932ddaf84d9fc1ce1359fe05b729d0"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::create_filter_plan (cognitive 26): Scanner::create_filter_plan has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (20 pts), boolean chains 3, loops 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":3030}}}],"partialFingerprints":{"codehealthFindingId/v1":"377e82de106d2aee8fa1f5f4e480554190817b3cdf66b183e61e8421eb093113"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::legacy_filtered_read (cognitive 26): Scanner::legacy_filtered_read has cognitive complexity 26 (threshold 15). Drivers by points: if/else 15 (22 pts), boolean chains 4 (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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":3510}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad7e3424775695ecf77d5b6ac2117f1134b80b408aae67d7b0cc2b4839148a9f"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::fts_rerank (cognitive 26): Scanner::fts_rerank has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (23 pts), loops 1 (2 pts), match/switch 1 (nesting depth added 12). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":7382}}}],"partialFingerprints":{"codehealthFindingId/v1":"caed9e2193646835e9d793d2fdbdac05564fdafd80951f67d7d282496e10796f"}},{"ruleId":"D2","level":"warning","message":{"text":"IndexDescriptionImpl::try_new (cognitive 26): IndexDescriptionImpl::try_new has cognitive complexity 26 (threshold 15). Drivers by points: if/else 15 (22 pts), loops 3 (4 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index.rs"},"region":{"startLine":1578}}}],"partialFingerprints":{"codehealthFindingId/v1":"63f4e2f83cfe5573831b81fa381383be21764c5ebe567f3abde2be75208c0362"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::details::apply_runtime_hints (cognitive 26): lance::index::vector::details::apply_runtime_hints has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (23 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/details.rs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc2a0a421a7f0b0df2c6b332fddceb393507ba4c88f9d7aeb6ae35fb05583ab2"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::schema_evolution::add_columns_impl (cognitive 26): lance::dataset::schema_evolution::add_columns_impl has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (16 pts), match/switch 3 (7 pts), loops 2 (3 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":"rust/lance/src/dataset/schema_evolution.rs"},"region":{"startLine":636}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe92975e7de76043d441be3272f2fcd39ac5222aa5c49c8e6a9d39929075e58d"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::ivf::io::write_hnsw_quantization_index_partitions (cognitive 26): lance::index::vector::ivf::io::write_hnsw_quantization_index_partitions has cognitive complexity 26 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 5 (9 pts), match/switch 3 (7 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":"rust/lance/src/index/vector/ivf/io.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"e462df28b264446ed535561f40ea3cf78c03d4b61903ac18701714fd83ad16e6"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::build_distributed_vector_index (cognitive 26): lance::index::vector::build_distributed_vector_index has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (19 pts), match/switch 4 (7 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":"rust/lance/src/index/vector.rs"},"region":{"startLine":793}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3f1f9651a5135349f1634743eda390ced83a34c15ccba45b0679481933cf372"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::build_vector_index_impl (cognitive 26): lance::index::vector::build_vector_index_impl has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (19 pts), match/switch 4 (7 pts) (nesting depth added 13). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":1201}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff2ab2a47912742064be63dac1523790fd98e6f5da39edaee29b9ee2d48d04ed"}},{"ruleId":"D2","level":"warning","message":{"text":"Field::do_intersection (cognitive 26): Field::do_intersection has cognitive complexity 26 (threshold 15). Drivers by points: if/else 17 (24 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/datatypes/field.rs"},"region":{"startLine":913}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dd3e99b4d36b01a892e24be944d2f738633abcc43c2ccbe7fedb2e4d360f55c"}},{"ruleId":"D2","level":"warning","message":{"text":"FixedFullZipDecoder::slice_next_task (cognitive 26): FixedFullZipDecoder::slice_next_task has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (24 pts), loops 1 (2 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":3535}}}],"partialFingerprints":{"codehealthFindingId/v1":"59057ebe27f9bfb08bd172a2530c91acf17a9be5245caed640bad11951eb6bd8"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitiveStructuralEncoder::serialize_full_zip_variable (cognitive 26): PrimitiveStructuralEncoder::serialize_full_zip_variable has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (21 pts), loops 2 (4 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6617}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4002807002beda55d3c79984f574606f9f2cccb0cafd4d0fa9504f09dd69f63"}},{"ruleId":"D2","level":"warning","message":{"text":"SerializerContext::multiply_levels (cognitive 26): SerializerContext::multiply_levels has cognitive complexity 26 (threshold 15). Drivers by points: loops 8 (21 pts), if/else 4, boolean chains 1 (nesting depth added 13). 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":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":871}}}],"partialFingerprints":{"codehealthFindingId/v1":"05f904683840470a31c9ce31dbaf438055dceca832092e6fa39353d8208f8704"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_encoding::encodings::logical::primitive::sparse::writer::plan (cognitive 26): lance_encoding::encodings::logical::primitive::sparse::writer::plan has cognitive complexity 26 (threshold 15). Drivers by points: if/else 5 (17 pts), loops 2 (4 pts), match/switch 2 (3 pts), boolean chains 2 (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":"rust/lance-encoding/src/encodings/logical/primitive/sparse/writer.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"6aea78e932140d173585f1ca57d1e9a488d672519d9d853b8f578b3554c92a10"}},{"ruleId":"D2","level":"warning","message":{"text":"BTreeLookup::pages_between (cognitive 26): BTreeLookup::pages_between has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (14 pts), match/switch 7 (10 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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":1059}}}],"partialFingerprints":{"codehealthFindingId/v1":"be788cc40f9831981c05e642b35179ea684734601d7eb9716576f2079af4bc6b"}},{"ruleId":"D2","level":"warning","message":{"text":"PostingIterator::collect_window_scores (cognitive 26): PostingIterator::collect_window_scores has cognitive complexity 26 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 3 (7 pts), match/switch 2 (5 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":1650}}}],"partialFingerprints":{"codehealthFindingId/v1":"d803638af7716d22bea3ad98108eac859c081c99baee5ac84de863325c2f7e9a"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::vector::pairwise::collect_pairs (cognitive 26): lance_index::vector::pairwise::collect_pairs has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 5 (9 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":"rust/lance-index/src/vector/pairwise.rs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"37a8d5419487a4d2f5433a3aad1aa0ab9e3cc18f82a44e9f24cc6b16e3cb5de3"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::vector::bq::dist_table_quant::min_max_fold (cognitive 26): lance_index::vector::bq::dist_table_quant::min_max_fold has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (20 pts), loops 5 (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":"rust/lance-index/src/vector/bq/dist_table_quant.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c5ca29937817c7e1ffce61ab810a61713f6c1e92e33c7fd276335483285d2e8"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::cross_column::score_cross_column_sources (cognitive 26): lance_index::scalar::inverted::cross_column::score_cross_column_sources has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 6 (8 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":"rust/lance-index/src/scalar/inverted/cross_column.rs"},"region":{"startLine":1167}}}],"partialFingerprints":{"codehealthFindingId/v1":"260d0d7ea5963e2b4279f929763c20992980e6cab4ef99aea2d8692fb373714c"}},{"ruleId":"D2","level":"warning","message":{"text":"Builder.build (cognitive 26): Builder.build has cognitive complexity 26 (threshold 15). Drivers by points: if/else 22, boolean chains 4. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/index/scalar/InvertedIndexParams.java"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"24ec92718401e7beb16a841fbbf25eff838d19e6d19ef42196e8372c03a0224c"}},{"ruleId":"D2","level":"warning","message":{"text":"pydantic.is_nullable (cognitive 26): pydantic.is_nullable has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (18 pts), error handling 2 (5 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 13). This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/pydantic.py"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"abec50fd4be74724e17b8dc20c90be3df3068c38ff42b8575eba18613417b05d"}},{"ruleId":"D2","level":"warning","message":{"text":"BackgroundExecutor::block_on_pumping (cognitive 25): BackgroundExecutor::block_on_pumping has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (14 pts), match/switch 4 (10 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":"python/src/executor.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"797b750a263630589308cda6cf2519bf81d850a70f92a887c3992fd47a2abccc"}},{"ruleId":"D2","level":"warning","message":{"text":"fsst::fsst::decompress_bulk (cognitive 25): fsst::fsst::decompress_bulk has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (22 pts), loops 3 (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":"rust/compression/fsst/src/fsst.rs"},"region":{"startLine":926}}}],"partialFingerprints":{"codehealthFindingId/v1":"a12e318c4a56661286c932b4e7d37cb084a008fe6fa6f4df3c697e92f225b29d"}},{"ruleId":"D2","level":"warning","message":{"text":"FtsMemIndex::expand_fuzzy_term (cognitive 25): FtsMemIndex::expand_fuzzy_term has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 5, loops 3 (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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":2443}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f7fbd59b2d4009fdc93e1b5b16ed21f98ff0f2c6eb96395ea3f977987e1f2b"}},{"ruleId":"D2","level":"warning","message":{"text":"MemTableScanner::collect_or_equalities (cognitive 25): MemTableScanner::collect_or_equalities has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (20 pts), loops 1 (2 pts), match/switch 2, boolean chains 1 (nesting depth added 12). Of this number, 24 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs"},"region":{"startLine":1375}}}],"partialFingerprints":{"codehealthFindingId/v1":"4812204d04660408b29e771367e4b2e562737ca35a2c5eb8401964e155b81e57"}},{"ruleId":"D2","level":"warning","message":{"text":"LsmFtsSearchPlanner::plan_bound_search (cognitive 25): LsmFtsSearchPlanner::plan_bound_search has cognitive complexity 25 (threshold 15). Drivers by points: if/else 13 (15 pts), boolean chains 4, loops 3, match/switch 2 (3 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"89f1b0f306d9a5b034ca53f28173a5b90ee22eaa71cad774ca8c85ba58e3dce6"}},{"ruleId":"D2","level":"warning","message":{"text":"LsmScanPlanner::plan_scan (cognitive 25): LsmScanPlanner::plan_scan has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (13 pts), match/switch 4 (7 pts), boolean chains 4, loops 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":"rust/lance/src/dataset/mem_wal/scanner/planner.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"c57aca42bb015a90aff70354d7d5825031a63f672f5ecd6a0f9cc127d60f6d20"}},{"ruleId":"D2","level":"warning","message":{"text":"IVFIndex::prewarm_partition_window (cognitive 25): IVFIndex::prewarm_partition_window has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 4 (7 pts), boolean chains 2, 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":"rust/lance/src/index/vector/ivf/v2.rs"},"region":{"startLine":1862}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1bd58291f7b9c99f65a0110e3c0414f577deee36d02c97099839abceaf8c2fb"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::ivf::generate_fixed_training_ranges (cognitive 25): lance::index::vector::ivf::generate_fixed_training_ranges has cognitive complexity 25 (threshold 15). Drivers by points: if/else 11 (18 pts), loops 4 (6 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":3345}}}],"partialFingerprints":{"codehealthFindingId/v1":"87c33de26bb714b8c578cf2ca9212d4ef7e136576e97f84e1c02912449be33be"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::mem_wal::index::validate_index_configs (cognitive 25): lance::dataset::mem_wal::index::validate_index_configs has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (17 pts), match/switch 2 (5 pts), loops 2, boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/index.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"02a1d68474a3a890516a42963f4afdbc13e4d915a2769edd9b5a7b7a7aa0fa4e"}},{"ruleId":"D2","level":"warning","message":{"text":"ShouldMaxScoreScorer::prepare_window (cognitive 25): ShouldMaxScoreScorer::prepare_window has cognitive complexity 25 (threshold 15). Drivers by points: if/else 11 (20 pts), loops 3, 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":"rust/lance-index/src/scalar/inverted/compound/should_maxscore.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"45b1a673f3b37658211c361f5aec70a6802a50bf23862396ac3cb09199730552"}},{"ruleId":"D2","level":"warning","message":{"text":"TopKCollector::collect_mapped (cognitive 25): TopKCollector::collect_mapped has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (20 pts), boolean chains 3, loops 1, 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":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":2067}}}],"partialFingerprints":{"codehealthFindingId/v1":"84a9ae36a9c16fc67c9182cd78de1dd69828b1dc925a58a1993a3c33b798d9c2"}},{"ruleId":"D2","level":"warning","message":{"text":"MinHashLshIndex::read_queued (cognitive 25): MinHashLshIndex::read_queued has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (19 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/minhash_lsh/index.rs"},"region":{"startLine":773}}}],"partialFingerprints":{"codehealthFindingId/v1":"1186a79f801dcd3ad1c25eb225056db7d3e1c750dabf7735406decabf93cbbd9"}},{"ruleId":"D2","level":"warning","message":{"text":"DatasetIndexRemapper::remap_indices (cognitive 24): DatasetIndexRemapper::remap_indices has cognitive complexity 24 (threshold 15). Drivers by points: if/else 4 (13 pts), match/switch 3 (9 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":"rust/lance/src/dataset/index.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"1019290b4c6dc3528ab3e1438e09cb83943d3ebbb6cf5d51b5ef0600fa50d127"}},{"ruleId":"D2","level":"warning","message":{"text":"HnswGraph::visit_published_neighbors (cognitive 24): HnswGraph::visit_published_neighbors has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 4 (10 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":"rust/lance/src/dataset/mem_wal/hnsw/graph.rs"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ce0dacbf37244b4eadeb4af284e7e36bb1b9f0c3787a65e75aedbf33fc07ff4"}},{"ruleId":"D2","level":"warning","message":{"text":"MergeState::process_row_action (cognitive 24): MergeState::process_row_action has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (17 pts), match/switch 3 (6 pts), boolean chains 1 (nesting depth added 13). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/merge_insert/exec/write.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"59cd9a335d478c94e0a840f8a861d75df44c48a67c6b0a975150f0b4ff01f900"}},{"ruleId":"D2","level":"warning","message":{"text":"FilteredReadExec::try_new_row_stream (cognitive 24): FilteredReadExec::try_new_row_stream has cognitive complexity 24 (threshold 15). Drivers by points: if/else 17, boolean chains 7. 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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":2194}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6080a3d73574283a30720e6c385e3ea23999309011b27ea235bb2637c819fa3"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::ivf::write_root_vector_index_from_auxiliary (cognitive 24): lance::index::vector::ivf::write_root_vector_index_from_auxiliary has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (20 pts), boolean chains 2, 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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":2678}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b1c27b64f30d0cbc185df9a53789c79b056f63355542d9a3d73b9507c255f1c"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::io::commit::fix_schema (cognitive 24): lance::io::commit::fix_schema has cognitive complexity 24 (threshold 15). Drivers by points: loops 8 (12 pts), if/else 5 (10 pts), boolean chains 2 (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":"rust/lance/src/io/commit.rs"},"region":{"startLine":805}}}],"partialFingerprints":{"codehealthFindingId/v1":"22dca8a922e1bf43cd72f1b96d01ca9869537780ad6a0cda46cae7fcb0a00f67"}},{"ruleId":"D2","level":"warning","message":{"text":"BlobV2StructuralEncoder::maybe_encode (cognitive 24): BlobV2StructuralEncoder::maybe_encode has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (19 pts), match/switch 1 (3 pts), boolean chains 1, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/blob.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a824bebb3abb83b0bd3820a9d3ce47e58134b1053ffb298be4f3f50a37caf75"}},{"ruleId":"D2","level":"warning","message":{"text":"Wand::flat_search (cognitive 24): Wand::flat_search has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (19 pts), boolean chains 4, 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":2831}}}],"partialFingerprints":{"codehealthFindingId/v1":"87a03f310d79264dd4045c10bcb056678451945f7849ccf70087c982a068bf0b"}},{"ruleId":"D2","level":"warning","message":{"text":"ManifestNamespace::describe_table (cognitive 24): ManifestNamespace::describe_table has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12 (20 pts), match/switch 2 (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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2802}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e98b02ec1234c5df219c405f52c6fba20ce8394541aebb8bc2f66cc5a2fae6c"}},{"ruleId":"D2","level":"warning","message":{"text":"DirectoryNamespace::apply_query_params_to_scanner (cognitive 24): DirectoryNamespace::apply_query_params_to_scanner has cognitive complexity 24 (threshold 15). Drivers by points: if/else 18 (23 pts), boolean chains 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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":3162}}}],"partialFingerprints":{"codehealthFindingId/v1":"f917ed094fb805ef462ea20a629a624627bacbecb54e48ffb21ef08d2147462a"}},{"ruleId":"D2","level":"warning","message":{"text":"IndexStore::insert_batches (cognitive 23): IndexStore::insert_batches has cognitive complexity 23 (threshold 15). Drivers by points: loops 7 (9 pts), if/else 6 (8 pts), match/switch 2 (4 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/index.rs"},"region":{"startLine":1008}}}],"partialFingerprints":{"codehealthFindingId/v1":"97c340e0c86811e472aa2b07ba6a1fa3be180ce3f6f550bebf515dc949d7e900"}},{"ruleId":"D2","level":"warning","message":{"text":"LsmVectorSearchPlanner::build_knn_plan (cognitive 23): LsmVectorSearchPlanner::build_knn_plan has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (18 pts), match/switch 3 (5 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":"rust/lance/src/dataset/mem_wal/scanner/vector_search.rs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e85f057abff34621d632fd246f0afe901a52c86b26fb340fc7199f333ff44a"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::plan_combined_fields_query (cognitive 23): Scanner::plan_combined_fields_query has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (13 pts), loops 2 (4 pts), match/switch 2 (4 pts), boolean chains 2 (nesting depth added 5). 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5784}}}],"partialFingerprints":{"codehealthFindingId/v1":"7298788502590ea9cfbb63602a4d7772cedd558ef05c81ef26be807edbc132c8"}},{"ruleId":"D2","level":"warning","message":{"text":"MergeInsertJob::update_fragments::handle_fragment (cognitive 23): MergeInsertJob::update_fragments::handle_fragment has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (10 pts), loops 4 (10 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (MergeInsertJob::update_fragments) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":1671}}}],"partialFingerprints":{"codehealthFindingId/v1":"452ae70d2af7077d0c1a4703af157f67695da8d189169bac25285061a8b755b4"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::tracked_files_with_options (cognitive 23): Dataset::tracked_files_with_options has cognitive complexity 23 (threshold 15). Drivers by points: if/else 4 (11 pts), match/switch 3 (7 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/files.rs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bf09798f81c8490fb8e31bc53a409b004dad3a2880947b7d2883a0744468805"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::optimize::can_use_binary_copy_current (cognitive 23): lance::dataset::optimize::can_use_binary_copy_current has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 2 (3 pts), match/switch 1 (3 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"b30f4b0c8365df6480f0010c6a6b43f195e87948be5688a0f744ab1d894ef3ce"}},{"ruleId":"D2","level":"warning","message":{"text":"RepDefBuilder::concat_layers (cognitive 23): RepDefBuilder::concat_layers has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (14 pts), match/switch 4 (7 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":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":1409}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2145c3fe24d92d692be080d589f846907b47c6d4bb6fb4fbf3f3c541679e3ec"}},{"ruleId":"D2","level":"warning","message":{"text":"TopKCollector::insert (cognitive 23): TopKCollector::insert has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (15 pts), match/switch 3 (8 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":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":1987}}}],"partialFingerprints":{"codehealthFindingId/v1":"580fa64b317046041d095380bad5f262c4c65cd724fcd17fcb63be2db792732b"}},{"ruleId":"D2","level":"warning","message":{"text":"ProductQuantizer::transform_impl (cognitive 23): ProductQuantizer::transform_impl has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (12 pts), loops 3 (10 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":"rust/lance-index/src/vector/pq.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab3b71c62789aea7fee7d9dedf58f1c203f4b2fd4ed9b8cefd95ac0ddc946507"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::index::flat_search::tokenize_and_count_list (cognitive 23): lance_index::scalar::inverted::index::flat_search::tokenize_and_count_list has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 3 (9 pts), match/switch 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":"rust/lance-index/src/scalar/inverted/index/flat_search.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"535970f7be16ea1a0768570fb804fd22b06c97e2adc129611e4d8a884189d56a"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_io::uring::current_thread::process_thread_local_completions (cognitive 23): lance_io::uring::current_thread::process_thread_local_completions has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (21 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":"rust/lance-io/src/uring/current_thread.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ed0a53e2a6cd908efb636d03a6d96205aac29dbd4cee830f007321f770cdada"}},{"ruleId":"D2","level":"warning","message":{"text":"DirectoryNamespace::list_tables (cognitive 23): DirectoryNamespace::list_tables has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":3420}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0ccf30de8259244e0d44e84b827f7df8c2cd477402ce94fadabf31a7aca1f43"}},{"ruleId":"D2","level":"warning","message":{"text":"RowIdIndex::probe (cognitive 23): RowIdIndex::probe has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids/index.rs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"4be870638e53458915a92a6caf493f33d7c8b2063494963885a9c0894618cb58"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::transaction::validate::merge_schema_valid (cognitive 23): lance_table::transaction::validate::merge_schema_valid has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 4, match/switch 1 (3 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/validate.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"00207f21fc17eaef4df01ccd6e964e0de3076f414802f97b95d5118e9b4320ee"}},{"ruleId":"D2","level":"warning","message":{"text":"UpdateConfig.\u003Cinit\u003E (cognitive 23): UpdateConfig.\u003Cinit\u003E has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 2 (5 pts), boolean chains 4, ternaries 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":"java/src/main/java/org/lance/operation/UpdateConfig.java"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"b97231ec20c5c1a3580c95c5bac38b6e611e37d4dd1fe15d77a8a577571d9f43"}},{"ruleId":"D2","level":"warning","message":{"text":"lance.dataset (cognitive 23): lance.dataset has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (19 pts), boolean chains 4 (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":"python/python/lance/__init__.py"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"9164aa75b4769d49355f4e7e4e16c3d0326ca63c383acb518b1fffdf8a650f77"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_jni::file_reader::Java_org_lance_file_LanceFileReader_readAllNative (cognitive 22): lance_jni::file_reader::Java_org_lance_file_LanceFileReader_readAllNative has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (19 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/file_reader.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"37c7c073d4bb464a9b10ece4eca0f16c3ce629a58d10c0cf454411a8f3a64f13"}},{"ruleId":"D2","level":"warning","message":{"text":"TileJobs::next_job (cognitive 22): TileJobs::next_job has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (16 pts), match/switch 2 (4 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":"rust/lance/src/index/vector/dedup.rs"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"7966a7cfb69c9620b70c3c6e7ef63491a10f00d5d1f555b8682887dcaac9bd59"}},{"ruleId":"D2","level":"warning","message":{"text":"BooleanQueryExec::execute (cognitive 22): BooleanQueryExec::execute has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 7 (11 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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":5705}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d1226ae5e1624d1f87613998a4b686ea44600e2ef2251da50c6431a83b9c92e"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::write::validate_and_resolve_target_bases (cognitive 22): lance::dataset::write::validate_and_resolve_target_bases has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (13 pts), loops 3 (6 pts), boolean chains 3 (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":"rust/lance/src/dataset/write.rs"},"region":{"startLine":1305}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ef1ca2e0374bfcd54df29fe116e4e6d6b1ea730713de7f8afa3d0eca7784426"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::mem_wal::index::fts::tail_phrase_group_docs (cognitive 22): lance::dataset::mem_wal::index::fts::tail_phrase_group_docs has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 4 (7 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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":3340}}}],"partialFingerprints":{"codehealthFindingId/v1":"496046634af260c1f3b467ae6c1675dd21bd15ea5d7bbdaf39bd89bda1491be7"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_datafusion::logical_expr::resolve_expr (cognitive 22): lance_datafusion::logical_expr::resolve_expr has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (15 pts), match/switch 3 (7 pts) (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":"rust/lance-datafusion/src/logical_expr.rs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"d82ecf7f3cfdcdbcc5c5d721278a05f7e7c50a3cf0f0faa2c192c455cd647ba0"}},{"ruleId":"D2","level":"warning","message":{"text":"ArrayFieldEncodingStrategy::validate_v2_0_array_reachability (cognitive 22): ArrayFieldEncodingStrategy::validate_v2_0_array_reachability has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (14 pts), loops 2 (4 pts), boolean chains 3, 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":"rust/lance-encoding/src/array_encoding/strategy.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"623bc7b29d2169482e028a7d7b5b3e79fcba8bf3651ef489df414613cffa2052"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_encoding::repdef::build_control_word_iterator (cognitive 22): lance_encoding::repdef::build_control_word_iterator has cognitive complexity 22 (threshold 15). Drivers by points: if/else 18 (21 pts), 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":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":2412}}}],"partialFingerprints":{"codehealthFindingId/v1":"997f9e73cdfffb091135fd4b870fce62d070a937afcde0173c00d92ddeb5864d"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_file::concat::check_compatibility (cognitive 22): lance_file::concat::check_compatibility has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13 (17 pts), loops 2 (3 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":"rust/lance-file/src/concat.rs"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"637abfa5be30b586e1b809edd5ebbc5ae7aa3d4774cebe0bd850065a9b271dee"}},{"ruleId":"D2","level":"warning","message":{"text":"IvfShuffler::shuffle_to_partitions (cognitive 22): IvfShuffler::shuffle_to_partitions has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 3 (6 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/ivf/shuffler.rs"},"region":{"startLine":626}}}],"partialFingerprints":{"codehealthFindingId/v1":"10d9ecb096e323e0a3e52c46669779bf6d96c2996726fa862f544aaf713b57ff"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::wand::exact_phrase_scan (cognitive 22): lance_index::scalar::inverted::wand::exact_phrase_scan has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 2 (3 pts), match/switch 1 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":5717}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f8d3283193b490a88857536816433bfc235a748940e6c1931090e61c08a07ea"}},{"ruleId":"D2","level":"warning","message":{"text":"GooseFsStoreProvider::parse_decimal_times_unit (cognitive 22): GooseFsStoreProvider::parse_decimal_times_unit has cognitive complexity 22 (threshold 15). Drivers by points: if/else 17 (18 pts), match/switch 2 (3 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":"rust/lance-io/src/object_store/providers/goosefs.rs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"8caefb3034de110cb0d5153779230a9cdc5c059746a27593fd8a9a41f8525f24"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_io::uring::thread::process_completions (cognitive 22): lance_io::uring::thread::process_completions has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (21 pts), loops 1 (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/uring/thread.rs"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"804b501202eb564c3a3b282d9b85fdf8987444847f61131c0338c1b129de1a46"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_linalg::distance::multivec_distance (cognitive 22): lance_linalg::distance::multivec_distance has cognitive complexity 22 (threshold 15). Drivers by points: match/switch 5 (11 pts), if/else 7 (9 pts), boolean chains 1, loops 1 (nesting depth added 8). 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":"rust/lance-linalg/src/distance.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d0aa8145d433f48391128008224f5e03c31501a7eba083df98212163f350051"}},{"ruleId":"D2","level":"warning","message":{"text":"ManifestNamespace::create_table (cognitive 22): ManifestNamespace::create_table has cognitive complexity 22 (threshold 15). Drivers by points: if/else 15, 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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2950}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e51e151d79ac3f78f81ceca638897191a021e03f00f5ba9a1e2babe92fc345c"}},{"ruleId":"D2","level":"warning","message":{"text":"WriteDatasetBuilder.executeWithNamespaceClient (cognitive 22): WriteDatasetBuilder.executeWithNamespaceClient has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 5, ternaries 2 (4 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":"java/src/main/java/org/lance/WriteDatasetBuilder.java"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fc4ba95dcf5b41b9aff42f8aefe10d4d0e356f1f828bf0ad0869cdde333273b"}},{"ruleId":"D2","level":"warning","message":{"text":"data._to_tensor (cognitive 22): data._to_tensor has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (12 pts), boolean chains 8, loops 1, ternaries 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":"python/python/lance/torch/data.py"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"89f1afa1f6de888469e889fc01f327e595d50ef476fdb477dba2d06310227b8c"}},{"ruleId":"D2","level":"warning","message":{"text":"LsmPointLookupPlanner::lookup_many (cognitive 21): LsmPointLookupPlanner::lookup_many has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (10 pts), match/switch 3 (5 pts), loops 3 (4 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"8867277ba9e6e35e32dce2fbadb88c3ff9904983d9193d2785781518a417fa3a"}},{"ruleId":"D2","level":"warning","message":{"text":"MemTableFlushHandler::flush_memtable (cognitive 21): MemTableFlushHandler::flush_memtable has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (14 pts), loops 1 (3 pts), match/switch 2 (3 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/write.rs"},"region":{"startLine":4283}}}],"partialFingerprints":{"codehealthFindingId/v1":"06bb0e98e28f4d2869540cca4c78bd070b78588b4b0ece8bcc55e95bb82e923d"}},{"ruleId":"D2","level":"warning","message":{"text":"FullSchemaMergeInsertExec::split_updates_and_inserts (cognitive 21): FullSchemaMergeInsertExec::split_updates_and_inserts has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 2 (5 pts), boolean chains 2, 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":"rust/lance/src/dataset/write/merge_insert/exec/write.rs"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad48f401e2156a3ea15decd944a61a1674795fe832eb83c5b3761cc07c4eb229"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::load_scalar_index (cognitive 21): Dataset::load_scalar_index has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index.rs"},"region":{"startLine":2492}}}],"partialFingerprints":{"codehealthFindingId/v1":"025543f657127a156aa7d15b8f37416e6015917c55137535900ff9d33b6a516d"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::scalar_index_info (cognitive 21): Dataset::scalar_index_info has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 3, loops 2, match/switch 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index.rs"},"region":{"startLine":3830}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bda934bb8f56cc0eb3424f3929e6d69f75d2b74767cb947c458234a713dfeb3"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::scalar::inverted::append_row_text (cognitive 21): lance::index::scalar::inverted::append_row_text has cognitive complexity 21 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 2 (8 pts), match/switch 2 (3 pts) (nesting depth added 13). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/scalar/inverted.rs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f2616f3ca36c085f21230c527f1ea906a1ba03d16e7d1eb762e8c15972e67d3"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::index::frag_reuse::is_index_remap_caught_up (cognitive 21): lance::dataset::index::frag_reuse::is_index_remap_caught_up has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 2 (5 pts), boolean chains 1, 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":"rust/lance/src/dataset/index/frag_reuse.rs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"92d97ac482c891f54e81f5ff317853803722893cb6afebbaed80f90dbb1f1fb3"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::append::merge_scalar_indices (cognitive 21): lance::index::append::merge_scalar_indices has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 4, match/switch 1 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/append.rs"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6c80aad9be8667e8aee2728cc04f4233507810e87761190b778ffe9039d727f"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::write::prepare_write_schema (cognitive 21): lance::dataset::write::prepare_write_schema has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 2 (5 pts), boolean chains 2 (nesting depth added 10). Most of this is not in the body itself: 10 of the 21 points are its own statements and the rest belongs to one function item inside it that branches (restore_legacy_blob_inputs). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write.rs"},"region":{"startLine":1788}}}],"partialFingerprints":{"codehealthFindingId/v1":"34d528aef65559961601d76123ab6f9b250358f8c53ed02c2a3f0b952805a6c9"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::cleanup::build_cleanup_policy (cognitive 21): lance::dataset::cleanup::build_cleanup_policy has cognitive complexity 21 (threshold 15). Drivers by points: match/switch 6 (12 pts), if/else 7 (8 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":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":1678}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0312fb43a646942affe83f811079b9b9cf4ea6f12647accdb6c27776b36ddfa"}},{"ruleId":"D2","level":"warning","message":{"text":"Schema::do_project (cognitive 21): Schema::do_project has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (20 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/datatypes/schema.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fd8839655bce4e4088589f871f06f8ce79d1dfda1bacb7abcc1efe640c01196"}},{"ruleId":"D2","level":"warning","message":{"text":"StrictBatchSizeStream::poll_next (cognitive 21): StrictBatchSizeStream::poll_next has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (18 pts), 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":"rust/lance-datafusion/src/chunker.rs"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"f945313c55aa329e447a533abc8645bb4945c3b4afe5b83bf8b8632bc8ef5328"}},{"ruleId":"D2","level":"warning","message":{"text":"VariableFullZipDecoder::unzip (cognitive 21): VariableFullZipDecoder::unzip has cognitive complexity 21 (threshold 15). Drivers by points: if/else 4 (11 pts), match/switch 3 (7 pts), loops 2 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":3864}}}],"partialFingerprints":{"codehealthFindingId/v1":"6458a9780e004f6b555f59e02b237aab401641079b1c6142935b853ccee3cefc"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_encoding::encodings::logical::primitive::sparse::select_position_set (cognitive 21): lance_encoding::encodings::logical::primitive::sparse::select_position_set has cognitive complexity 21 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 4 (10 pts), match/switch 1 (nesting depth added 12). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":4131}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0bed62f02f3cee6b38a5847871347a784582749475ca7ef306b7ff76cc18491"}},{"ruleId":"D2","level":"warning","message":{"text":"InvertedIndexBuilder::merge_existing_segments (cognitive 21): InvertedIndexBuilder::merge_existing_segments has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 2 (3 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6bcb9b4113956cbfe75800b029df0e82d6f282d20e23a23742f46ae1d9df426"}},{"ruleId":"D2","level":"warning","message":{"text":"MinHashLshIndex::next_candidate (cognitive 21): MinHashLshIndex::next_candidate has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 3 (4 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/minhash_lsh/index.rs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9c850f5b79b5fe2cee18361c7567edd7df72c29a80a5da73ef404a69d77e454"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::index::flat_search::flat_bm25_score (cognitive 21): lance_index::scalar::inverted::index::flat_search::flat_bm25_score has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 4 (9 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":"rust/lance-index/src/scalar/inverted/index/flat_search.rs"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c1c5aea116f9e8c7e204bed7357bfd3c6b74328d85d457b9c88dc310de92b54"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::encoding::seek_packed_doc_positions (cognitive 21): lance_index::scalar::inverted::encoding::seek_packed_doc_positions has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (11 pts), loops 5 (9 pts), boolean chains 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":"rust/lance-index/src/scalar/inverted/encoding.rs"},"region":{"startLine":791}}}],"partialFingerprints":{"codehealthFindingId/v1":"395625d9533526e40a9692874d2eaaecce8f64815a148005d59e27ffb8863efa"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::vector::bq::ex_dot::pack_block (cognitive 21): lance_index::vector::bq::ex_dot::pack_block has cognitive complexity 21 (threshold 15). Drivers by points: loops 7 (16 pts), if/else 2 (4 pts), match/switch 1 (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":"rust/lance-index/src/vector/bq/ex_dot.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"271aadcc6fc64eb7aa6f6c8501d27e1c368175be039b60af50aef3b370ca88c3"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::bitmap::merge_index_maps (cognitive 21): lance_index::scalar::bitmap::merge_index_maps has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 4 (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":"rust/lance-index/src/scalar/bitmap.rs"},"region":{"startLine":1839}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8c34206e4e52993f4cb7a5d6fecc804d053bf287d2e414390e2ab131412457f"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::final_query_tokens (cognitive 21): lance_index::scalar::inverted::final_query_tokens has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 5 (9 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":"rust/lance-index/src/scalar/inverted.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"350178a24158453dcc4dcf3bf6e80c105d50590f730c5afaee31434a900e4385"}},{"ruleId":"D2","level":"warning","message":{"text":"DirectoryNamespace::list_versions_under (cognitive 21): DirectoryNamespace::list_versions_under has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (14 pts), match/switch 2 (4 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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":1961}}}],"partialFingerprints":{"codehealthFindingId/v1":"a67bbed2757c74d12a478061aa75f273dccbd633c75402a9d49a1f321a89da10"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::system_index::frag_reuse::remap_fragment_bitmap (cognitive 21): lance_table::system_index::frag_reuse::remap_fragment_bitmap has cognitive complexity 21 (threshold 15). Drivers by points: if/else 3 (11 pts), loops 4 (10 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":"rust/lance-table/src/system_index/frag_reuse.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"a75e7dad917ccf4e703a9104fb2e3c760e61547a557e477fcae54a12a548797d"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::utils::stream::wrap_with_row_id_and_delete_impl (cognitive 21): lance_table::utils::stream::wrap_with_row_id_and_delete_impl has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (16 pts), boolean chains 5 (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":"rust/lance-table/src/utils/stream.rs"},"region":{"startLine":669}}}],"partialFingerprints":{"codehealthFindingId/v1":"b82d8e6ed236a47e7004a62ae65d7a2716339d406f75bcd60f15246951a4acc2"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::rowids::rechunk_sequences (cognitive 21): lance_table::rowids::rechunk_sequences has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 2 (3 pts), match/switch 1 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids.rs"},"region":{"startLine":959}}}],"partialFingerprints":{"codehealthFindingId/v1":"7051b6e091a0672ad6a0431404c065fb1b52a853f4bf0b5384deadcc710c16dd"}},{"ruleId":"D2","level":"warning","message":{"text":"FtsTokenizerOptions::apply (cognitive 20): FtsTokenizerOptions::apply has cognitive complexity 20 (threshold 15). Drivers by points: if/else 17, match/switch 2, boolean chains 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":"python/src/fts.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"e49dcca0a97526812bfa39e85e16dc0c19f6491ae6cef7b18267052396a08edc"}},{"ruleId":"D2","level":"warning","message":{"text":"pylance::dataset::writer_config_from_kwargs (cognitive 20): pylance::dataset::writer_config_from_kwargs has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11, loops 2 (5 pts), match/switch 1 (4 pts) (nesting depth added 6). 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":"python/src/dataset.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"8675c034d1f1f892c22bcffecae1a091635e4b2053cd736852a8412c55673a5e"}},{"ruleId":"D2","level":"warning","message":{"text":"StatisticsAccumulator::update_item (cognitive 20): StatisticsAccumulator::update_item has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 3 (6 pts), match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/arrow-stats/src/lib.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"651ebb82ff6812dd9a74c0051d00942e26ff130b5c50c864bf9518710e45fe6f"}},{"ruleId":"D2","level":"warning","message":{"text":"ShardWriter::open (cognitive 20): ShardWriter::open has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/write.rs"},"region":{"startLine":2223}}}],"partialFingerprints":{"codehealthFindingId/v1":"3610426d40d69c9420ba149ac7f51724de672dabdbb80bad374956ba5e41b11a"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::new_filtered_read (cognitive 20): Scanner::new_filtered_read has cognitive complexity 20 (threshold 15). Drivers by points: if/else 15 (17 pts), match/switch 2, boolean chains 1 (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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":3644}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aa31280f03f6ff41b069ec8ed9b216c8101aee672315401c1b604cd22a25b47"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::open_vector_index_from_metadata (cognitive 20): Dataset::open_vector_index_from_metadata has cognitive complexity 20 (threshold 15). Drivers by points: match/switch 5 (11 pts), if/else 7, boolean chains 2 (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":"rust/lance/src/index.rs"},"region":{"startLine":3376}}}],"partialFingerprints":{"codehealthFindingId/v1":"a80158b675e928378017193ddfe653bb7a7cdb88b3383685372a4cc24d0aad16"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateIndexBuilder::execute_multi_segment_fmindex (cognitive 20): CreateIndexBuilder::execute_multi_segment_fmindex has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13 (14 pts), boolean chains 3, loops 2 (3 pts) (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":"rust/lance/src/index/create.rs"},"region":{"startLine":726}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cc773a4f620bc0512292a568a792c822429008e46c3af02756a8ffd3183081d"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionRebase::check_add_bases_txn (cognitive 20): TransactionRebase::check_add_bases_txn has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 2 (7 pts), boolean chains 2, 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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":2140}}}],"partialFingerprints":{"codehealthFindingId/v1":"587a3a1aa1d8bde87b7118af4c203f62b5aa5977fd663b4f455d86d1da38ef54"}},{"ruleId":"D2","level":"warning","message":{"text":"FilteredReadExec::partition_statistics (cognitive 20): FilteredReadExec::partition_statistics has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13 (16 pts), match/switch 2 (4 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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":3339}}}],"partialFingerprints":{"codehealthFindingId/v1":"f432f9959796098eb675629230f3a1c7e04868b00346368791dc8cdfdcd2dc8c"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::ivf::build_ivf_model (cognitive 20): lance::index::vector::ivf::build_ivf_model has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (19 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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":1733}}}],"partialFingerprints":{"codehealthFindingId/v1":"380103a2097acfb4c6f59ec37832eb0966525391b022b9d0cf7773104e09b7b5"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::take::row_offsets_to_row_addresses (cognitive 20): lance::dataset::take::row_offsets_to_row_addresses has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/take.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"e08dbb01a78d1e86d0b7ab7ac4a90359a70d809ebbf32863fa0e21822e7478ac"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::optimize::fit_row_lineage_to_written (cognitive 20): lance::dataset::optimize::fit_row_lineage_to_written has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (15 pts), loops 2 (3 pts), boolean chains 1, match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":2998}}}],"partialFingerprints":{"codehealthFindingId/v1":"05bfd4b7ee7f14ad204e0ee2572e14a144bff0ccda7905c97799a2aea20194e4"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::scanner::collect_fts_columns_in_order::visit (cognitive 20): lance::dataset::scanner::collect_fts_columns_in_order::visit has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 3 (6 pts), boolean chains 3, match/switch 1 (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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"1929d83f33932038396ad863f1c8e458805c6cb7ee363884e3e48df401e3ef85"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitiveStructuralEncoder::serialize_full_zip_fixed (cognitive 20): PrimitiveStructuralEncoder::serialize_full_zip_fixed has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 2 (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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6540}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a55ec5fab254b62279638573d1d64c9dda45608d514cf390a0272ac341bd37f"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitiveStructuralEncoder::should_dictionary_encode (cognitive 20): PrimitiveStructuralEncoder::should_dictionary_encode has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 4, match/switch 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6837}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea8e615bf598fe48714c966a535bd1071f51bd3837b8c0c85efc0ea19f87b28f"}},{"ruleId":"D2","level":"warning","message":{"text":"VariablePackedFieldData::append_row_bytes (cognitive 20): VariablePackedFieldData::append_row_bytes has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (16 pts), match/switch 2 (3 pts), boolean chains 1 (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":"rust/lance-encoding/src/encodings/physical/packed.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1a6d34130bb4246cc1411a8a789886e1405ab778df534575fab946d10f22fd1"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_encoding::encodings::logical::primitive::for_each_page_range (cognitive 20): lance_encoding::encodings::logical::primitive::for_each_page_range has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 3 (4 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":4796}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ffd9fc3888ebbf7981be8c8887e39a8375670a5f7e4656c2ba88cf5511e04db"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_encoding::encodings::logical::primitive::sparse::writer::serialize_value_chunks (cognitive 20): lance_encoding::encodings::logical::primitive::sparse::writer::serialize_value_chunks has cognitive complexity 20 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 5 (9 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":"rust/lance-encoding/src/encodings/logical/primitive/sparse/writer.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cfdfde747784d64c3e2844a89045d54b18669355bc0536ac450dcf52f8e417b"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_file::reader::describe_encoding (cognitive 20): lance_file::reader::describe_encoding has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (11 pts), match/switch 3 (9 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":"rust/lance-file/src/reader.rs"},"region":{"startLine":2287}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ad6f037d7b5073e2ba279525b3c07eb68e536d6c5820e313e45017b7554c6d1"}},{"ruleId":"D2","level":"warning","message":{"text":"BloomFilterIndex::evaluate_block_against_query (cognitive 20): BloomFilterIndex::evaluate_block_against_query has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (12 pts), match/switch 3 (6 pts), loops 1 (2 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":"rust/lance-index/src/scalar/bloomfilter.rs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0e577efc3271a5b73f426460a9f5971e06d4f6f990c13d84d0bcd44f8ffdbeb"}},{"ruleId":"D2","level":"warning","message":{"text":"ShouldMaxScoreScorer::ensure_confirmed (cognitive 20): ShouldMaxScoreScorer::ensure_confirmed has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 4, loops 3 (4 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":"rust/lance-index/src/scalar/inverted/compound/should_maxscore.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"de7dac657645a6a4c96cda8c9f19ab228de908e8d6c51942dfe938919cee14f7"}},{"ruleId":"D2","level":"warning","message":{"text":"PostingListGroup::new_packed_with_block_size (cognitive 20): PostingListGroup::new_packed_with_block_size has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 1 (2 pts), boolean chains 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":"rust/lance-index/src/scalar/inverted/index/cache.rs"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"20e71e741325140e1580974ee78411ec461e1f05869b54ae2e914a39211f83a3"}},{"ruleId":"D2","level":"warning","message":{"text":"PostingIterator::take_docs_one_block_upto (cognitive 20): PostingIterator::take_docs_one_block_upto has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 2 (4 pts), match/switch 1 (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":"rust/lance-index/src/scalar/inverted/wand_maxscore.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc12124ca9c027a61214412afb4eade94cec2ceab8ba266899639e1017dadbaf"}},{"ruleId":"D2","level":"warning","message":{"text":"Wand::and_bulk_search::merge_window_docs_pairwise (cognitive 20): Wand::and_bulk_search::merge_window_docs_pairwise has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (Wand::and_bulk_search) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":4423}}}],"partialFingerprints":{"codehealthFindingId/v1":"419aec9c4f57e571d16cbfdbb8799f28fbf580736085e475f3f5cb203ea2f2f7"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::index::flat_search::tokenize_and_blend_multi (cognitive 20): lance_index::scalar::inverted::index::flat_search::tokenize_and_blend_multi has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 5 (8 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":"rust/lance-index/src/scalar/inverted/index/flat_search.rs"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5a51f9e4584790754d59435616bf9818e9bb440f4349abd42bd17076d3d339a"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::combined::stats::build_combined_bm25_scorer (cognitive 20): lance_index::scalar::inverted::combined::stats::build_combined_bm25_scorer has cognitive complexity 20 (threshold 15). Drivers by points: loops 5 (13 pts), if/else 5 (7 pts) (nesting depth added 10). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/combined/stats.rs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdbbdc38e50d228f9516a409d15b17eb387b2b3172789dfb51d70a9cf34ffd2f"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::cross_column::cross_column_compound_search (cognitive 20): lance_index::scalar::inverted::cross_column::cross_column_compound_search has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12 (16 pts), loops 3 (4 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":"rust/lance-index/src/scalar/inverted/cross_column.rs"},"region":{"startLine":1344}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec323b580faeb0e5d8978017d63a1dfe6e3fa5bbe80b074a89b33fd23e7dee57"}},{"ruleId":"D2","level":"warning","message":{"text":"SegmentCursorState::extend_range (cognitive 20): SegmentCursorState::extend_range has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (15 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":"rust/lance-table/src/rowids/segment.rs"},"region":{"startLine":773}}}],"partialFingerprints":{"codehealthFindingId/v1":"2434564c11ec8f5b2b35accd3cbea8459e99047093238bebf4c746968fe5cdf0"}},{"ruleId":"D2","level":"warning","message":{"text":"ScannerBuilder.filter (cognitive 20): ScannerBuilder.filter has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (13 pts), error handling 2 (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":"python/python/lance/dataset.py"},"region":{"startLine":6969}}}],"partialFingerprints":{"codehealthFindingId/v1":"0014016df55881eb4f6396dce0baf735e14a846ab4dd882b45f5cd6cdc4a92cd"}},{"ruleId":"D2","level":"warning","message":{"text":"dataset._coerce_query_vector (cognitive 20): dataset._coerce_query_vector has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (13 pts), boolean chains 3, error handling 1 (2 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":"python/python/lance/dataset.py"},"region":{"startLine":8379}}}],"partialFingerprints":{"codehealthFindingId/v1":"31d56f8d8da0fb4848cda18efc694d6ba8fa2cfe8a968c393e1b92af7998aceb"}},{"ruleId":"D2","level":"warning","message":{"text":"sampler._filtered_efficient_sample (cognitive 20): sampler._filtered_efficient_sample has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (18 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":"python/python/lance/sampler.py"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8290035ff52c8ef3a96dda9c2b4a39e46ff07e994b3e52ac5f2444556dae832"}},{"ruleId":"D2","level":"warning","message":{"text":"types._coerce_reader (cognitive 20): types._coerce_reader has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (16 pts), boolean chains 4 (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":"python/python/lance/types.py"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"26f5fdb7b9dfefc0a640e0c87b8877aaa58a7fb11cbe0f51c7e42983c1d92b7a"}},{"ruleId":"D2","level":"warning","message":{"text":"DatasetDelta::resolve_range (cognitive 19): DatasetDelta::resolve_range has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/delta.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe0ea958d9333a633ef2494dbd10419965b49d6250e2153513a3a22b092ff55d"}},{"ruleId":"D2","level":"warning","message":{"text":"FtsMemIndex::search_match_strings (cognitive 19): FtsMemIndex::search_match_strings has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 3 (7 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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":2092}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad6dba4707e1d4c59e9e9ff4adb815b4a0560f7575e903e07c34c08dd9b504c4"}},{"ruleId":"D2","level":"warning","message":{"text":"MemTableBruteForceVectorExec::materialize_rows (cognitive 19): MemTableBruteForceVectorExec::materialize_rows has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 4 (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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"1756f88959df970fd83c985b797c6cb7c2ca99a22a2fd539233ffa5091cc8072"}},{"ruleId":"D2","level":"warning","message":{"text":"VectorIndexExec::materialize_rows (cognitive 19): VectorIndexExec::materialize_rows has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 4 (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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb1e7ddc6f4b635cc8371170a1fe231bdb8777d02b0700da096de2cfcb7f5159"}},{"ruleId":"D2","level":"warning","message":{"text":"LsmScanPlanner::build_source_scan (cognitive 19): LsmScanPlanner::build_source_scan has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (16 pts), match/switch 2 (3 pts) (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":"rust/lance/src/dataset/mem_wal/scanner/planner.rs"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"46b1c9a3e66c06cdf245ae38e793b07c6de7da562e19ac0a00e06008193fa6d0"}},{"ruleId":"D2","level":"warning","message":{"text":"LsmVectorSearchPlanner::plan_search (cognitive 19): LsmVectorSearchPlanner::plan_search has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (13 pts), boolean chains 3, match/switch 1 (2 pts), loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/scanner/vector_search.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e95a274057fab93a06b8b299b101d26d45804a5aec03bd0a63f53b9a030b8fc"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::fts_document_granularity (cognitive 19): Scanner::fts_document_granularity has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 3 (6 pts), boolean chains 2, match/switch 1 (nesting depth added 7). Most of this is not in the body itself: 0 of the 19 points are its own statements and the rest belongs to 2 function items inside it that branch (visit, add_leaf). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":4497}}}],"partialFingerprints":{"codehealthFindingId/v1":"b432a11df6973c83db3e6fdc286de10c7ab8a630f03bc619b9310b875887acc6"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::scalar_indexed_scan (cognitive 19): Scanner::scalar_indexed_scan has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13 (15 pts), boolean chains 2, match/switch 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":7025}}}],"partialFingerprints":{"codehealthFindingId/v1":"c628b6140b7f03d71ba949009b0664afd2a5b559505ff51055e4c894adea4345"}},{"ruleId":"D2","level":"warning","message":{"text":"UpdateJob::execute_impl (cognitive 19): UpdateJob::execute_impl has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14 (15 pts), boolean chains 2, match/switch 2 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/update.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b58aafd279a4244921f9822d2c647be37f38241a71a990cbd8d2e1692327f94"}},{"ruleId":"D2","level":"warning","message":{"text":"IvfIndexBuilder::build_fresh_partitions_windowed (cognitive 19): IvfIndexBuilder::build_fresh_partitions_windowed has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":1263}}}],"partialFingerprints":{"codehealthFindingId/v1":"701b809d1e1bf3a59ab7102bbc16b844ee65a2141ecae0175f3c87c2bfbcf9b4"}},{"ruleId":"D2","level":"warning","message":{"text":"WeightedCoreset::reduce_to_budget (cognitive 19): WeightedCoreset::reduce_to_budget has cognitive complexity 19 (threshold 15). Drivers by points: loops 7 (13 pts), if/else 4 (6 pts) (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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":3937}}}],"partialFingerprints":{"codehealthFindingId/v1":"901f8fcaed3129cce3826980dfe3a15e84f95fb38c75e9fbb2db363b8b0427c5"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionRebase::check_data_overlay_txn (cognitive 19): TransactionRebase::check_data_overlay_txn has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 1 (3 pts), boolean chains 1, match/switch 1 (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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":1784}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a43df53c6ecb2b281bc21fc4ae236184297bd946965f2ba73bd45503aa9fd7a"}},{"ruleId":"D2","level":"warning","message":{"text":"FilteredReadStream::read_fragment (cognitive 19): FilteredReadStream::read_fragment has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16 (17 pts), boolean chains 1, match/switch 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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":1471}}}],"partialFingerprints":{"codehealthFindingId/v1":"09dffca4ed1d023afd6a22f89966e80613bb4ba2844b6b083759e823ee259d1e"}},{"ruleId":"D2","level":"warning","message":{"text":"FlatCombinedFieldsExec::execute (cognitive 19): FlatCombinedFieldsExec::execute has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (11 pts), match/switch 5, loops 2 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":4643}}}],"partialFingerprints":{"codehealthFindingId/v1":"b83e37e326d614ca3322223a823469433f5bdcbaa942a6c78abc58427e6b55c0"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::ivf::train_streaming_coreset_ivf_model (cognitive 19): lance::index::vector::ivf::train_streaming_coreset_ivf_model has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13 (17 pts), loops 2 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":4555}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ae67b0e1a767826101ef36bfb51186b188800656e4267080a63a4aa57599c3b"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::overlay::plan_overlays (cognitive 19): lance::dataset::overlay::plan_overlays has cognitive complexity 19 (threshold 15). Drivers by points: loops 7 (12 pts), if/else 3 (7 pts) (nesting depth added 9). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/overlay.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"055e6afdd5b1d64328384716200ca058b4046bf2de2d1e057ed5d0880284deb9"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::io::commit::detect_overlapping_fragments (cognitive 19): lance::io::commit::detect_overlapping_fragments has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 4 (7 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":"rust/lance/src/io/commit.rs"},"region":{"startLine":1152}}}],"partialFingerprints":{"codehealthFindingId/v1":"96349739ca84d92b7ff05d1b98b5ddfbb79dbf92c028a74659e4267237c64dde"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::mem_wal::scanner::exec::pk::compute_pk_hash (cognitive 19): lance::dataset::mem_wal::scanner::exec::pk::compute_pk_hash has cognitive complexity 19 (threshold 15). Drivers by points: if/else 15 (18 pts), loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/scanner/exec/pk.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"29f606b05c12c6e9b8bc9c0794e68d41faead176841f1face2e3731ed159e66d"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::mem_wal::index::fts::combine_boolean (cognitive 19): lance::dataset::mem_wal::index::fts::combine_boolean has cognitive complexity 19 (threshold 15). Drivers by points: loops 6 (13 pts), if/else 3 (6 pts) (nesting depth added 10). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":3513}}}],"partialFingerprints":{"codehealthFindingId/v1":"251d1a47d639350cec0357443df008214e186cf6ad8d13376537668d2f02d50f"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_arrow::json::convert_json_array (cognitive 19): lance_arrow::json::convert_json_array has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 1 (2 pts), match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-arrow/src/json.rs"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"b35b1fc1cf0a107d4a54307f4e2210ff9641bd78bf2d84cad0b1ea18fbbe3b2b"}},{"ruleId":"D2","level":"warning","message":{"text":"Field::project_by_field (cognitive 19): Field::project_by_field has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (9 pts), boolean chains 5, match/switch 2 (3 pts), loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/datatypes/field.rs"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"a00ba93c73253cb84433b57fc3e8d33c1e63bd9c27cb886cffa692752ab5c59a"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchReaderChunker::next_sized (cognitive 19): BatchReaderChunker::next_sized has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (17 pts), loops 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":"rust/lance-datafusion/src/chunker.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b1ff5e0f0368952bb01b28b1a96c1cbd2d942708cd64172308b76cb2a49d4e1"}},{"ruleId":"D2","level":"warning","message":{"text":"SparseStructuralScheduler::validate_value_encoding (cognitive 19): SparseStructuralScheduler::validate_value_encoding has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (18 pts), match/switch 1 (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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":1425}}}],"partialFingerprints":{"codehealthFindingId/v1":"d71a3bd3838e3bbb4f9f403c7752a18cb11af2de3cb6b138fe4f4e259cd4de7d"}},{"ruleId":"D2","level":"warning","message":{"text":"ScalarIndexExpr::optimize_and_leaves (cognitive 19): ScalarIndexExpr::optimize_and_leaves has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (14 pts), match/switch 1 (3 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":"rust/lance-index/src/scalar/expression.rs"},"region":{"startLine":1720}}}],"partialFingerprints":{"codehealthFindingId/v1":"d04d5ed0a70339faf50b6dad7924714d6304afa604df751af0d68a2f575a1780"}},{"ruleId":"D2","level":"warning","message":{"text":"InnerBuilder::merge_from (cognitive 19): InnerBuilder::merge_from has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (10 pts), loops 4 (6 pts), match/switch 2 (3 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":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":1010}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e499b2cb522ca5d66172b01ec8de63ebde73747296be9add2069668b2dcf5b7"}},{"ruleId":"D2","level":"warning","message":{"text":"BooleanScorer::try_new (cognitive 19): BooleanScorer::try_new has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 4 (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":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":3420}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa2581cdc691c71b0268be86d687b4afcba58149bd57a73b07ab79c82cda9860"}},{"ruleId":"D2","level":"warning","message":{"text":"RTreeIndexPlugin::write_index (cognitive 19): RTreeIndexPlugin::write_index has cognitive complexity 19 (threshold 15). Drivers by points: loops 3 (10 pts), if/else 4 (9 pts) (nesting depth added 12). 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":"rust/lance-index/src/scalar/rtree.rs"},"region":{"startLine":1074}}}],"partialFingerprints":{"codehealthFindingId/v1":"b782b8653b46749c9ff79e4335eff9e8a838c9c50dc821224ffacb32dcf01dd3"}},{"ruleId":"D2","level":"warning","message":{"text":"RQTransformer::transform (cognitive 19): RQTransformer::transform has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (9 pts), boolean chains 5, match/switch 4 (5 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/transform.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"244952fd459d20238071e996c5663ef7d01c6b8c497e883cf47fec6415f1eb89"}},{"ruleId":"D2","level":"warning","message":{"text":"OnlineHnswBuilder::insert_with_generator (cognitive 19): OnlineHnswBuilder::insert_with_generator has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 6 (9 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":"rust/lance-index/src/vector/hnsw/online.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"29b74b18feecc4b3eff73f81969209ab65b1a72bc5cabf967c9bb078179257ca"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::rtree::merge_rtree_indices (cognitive 19): lance_index::scalar::rtree::merge_rtree_indices has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 2, 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":"rust/lance-index/src/scalar/rtree.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"010fdfa8deabe9a419f4c3d0676a4b5d89a460d3c67b0db1f8eb83a61faf1eda"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::vector::pq::pairwise::x86::lookup8_avx512_vbmi (cognitive 19): lance_index::vector::pq::pairwise::x86::lookup8_avx512_vbmi has cognitive complexity 19 (threshold 15). Drivers by points: loops 6 (15 pts), if/else 2 (4 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":"rust/lance-index/src/vector/pq/pairwise.rs"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"75caaa2f0f9b32507d0c9230f6894dc734f08ce51ba60317978bb924067e4f3e"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::cross_column::validate_modern_row_indices (cognitive 19): lance_index::scalar::inverted::cross_column::validate_modern_row_indices has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (13 pts), loops 3 (6 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":"rust/lance-index/src/scalar/inverted/cross_column.rs"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6195245ae753c0e0d71868fd4b46ec7db54b92627d35e3fe31a9c12e003b803"}},{"ruleId":"D2","level":"warning","message":{"text":"RowAddrTreeMap::from (cognitive 19): RowAddrTreeMap::from has cognitive complexity 19 (threshold 15). Drivers by points: loops 5 (13 pts), if/else 1 (4 pts), match/switch 1 (2 pts) (nesting depth added 12). 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":"rust/lance-table/src/rowids.rs"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7b92e0a3cb12a898027196d3ee9221a2b892f85c868baa4ff63d1b561b8170b"}},{"ruleId":"D2","level":"warning","message":{"text":"Transaction::apply_mem_wal_index_coverage (cognitive 19): Transaction::apply_mem_wal_index_coverage has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 2, loops 2, match/switch 1 (2 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":"rust/lance-table/src/transaction/manifest_build.rs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c37db6641b0fccd20e741522b4ed13cc0cfde61bbbab11777c9172da5250d0e"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::io::commit::current_manifest_local (cognitive 19): lance_table::io::commit::current_manifest_local has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (18 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/io/commit.rs"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"39c55c0a39342b7ea905ec7dbad867c9342eaaa46f9e27ce62ea9b9af7c5ab53"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::rowids::index::prep_index_chunks (cognitive 19): lance_table::rowids::index::prep_index_chunks has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (14 pts), match/switch 1 (4 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids/index.rs"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ff32fc4c521874169e67a299f6090eab1446ca0ed2838109f70be7e49a5e2b6"}},{"ruleId":"D2","level":"warning","message":{"text":"new_contributors.resolve_usernames_via_api (cognitive 19): new_contributors.resolve_usernames_via_api has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ci/new_contributors.py"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6bb4e753e33a4b279954696b26931d2922be4f439a4c6ce25a7fa03a9d36510"}},{"ruleId":"D2","level":"warning","message":{"text":"new_contributors.main (cognitive 19): new_contributors.main has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 6 (7 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ci/new_contributors.py"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5a092612abca82a4dbfd690d7cfedd4557effd2c48d43d2770d147a48e3f1bb"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_jni::transaction::inner_commit_to_uri (cognitive 18): lance_jni::transaction::inner_commit_to_uri has cognitive complexity 18 (threshold 15). Drivers by points: if/else 15, match/switch 2, boolean chains 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":"java/lance-jni/src/transaction.rs"},"region":{"startLine":2224}}}],"partialFingerprints":{"codehealthFindingId/v1":"33949edc0b2f2121efe2765dbb6aa5d4e4f5d4b3d01ff9a28b3b2d81ce104af2"}},{"ruleId":"D2","level":"warning","message":{"text":"Partition::from_tail (cognitive 18): Partition::from_tail has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (12 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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":4302}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc442778f3f8a58369e9f93a319111dc26d3e6626a2617537b75a2296082c7b2"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::plan_fts (cognitive 18): Scanner::plan_fts has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (8 pts), loops 3 (6 pts), boolean chains 3, 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5079}}}],"partialFingerprints":{"codehealthFindingId/v1":"07a9f1111a04ed0ccabdddd881edf69719c3b01eb78f9cb2174a5e4ef40e8d32"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::optimize_indices (cognitive 18): Dataset::optimize_indices has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 3, 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":"rust/lance/src/index.rs"},"region":{"startLine":2558}}}],"partialFingerprints":{"codehealthFindingId/v1":"aea4ba47b6715aee0779831d4c9b0ed85355b4531bd8cd5bbf9f47e00ee473df"}},{"ruleId":"D2","level":"warning","message":{"text":"PQIndex::search (cognitive 18): PQIndex::search has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 2, 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":"rust/lance/src/index/vector/pq.rs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c657d854193974975e6ee5377f8d55b98f6b80da1f62a69ac84abfa0cab0ba6"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::write::merge_insert::format_key_values_on_columns (cognitive 18): lance::dataset::write::merge_insert::format_key_values_on_columns has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 2 (9 pts), if/else 5 (8 pts), 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":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"b79fd7c1aba848c0b6730c6e428e19f4470175c1fc5c9f6756113c07fd3e8c25"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::ivf::read_hnsw_build_params_from_sources (cognitive 18): lance::index::vector::ivf::read_hnsw_build_params_from_sources has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":2915}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7654ab10af792ecc171b61e72fd37b486ea2d7e45dc70efd9b841265a518c32"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::blob::fulfill_pending_blob_reads (cognitive 18): lance::dataset::blob::fulfill_pending_blob_reads has cognitive complexity 18 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 3 (5 pts), match/switch 2 (3 pts) (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":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":1474}}}],"partialFingerprints":{"codehealthFindingId/v1":"29bd48bb1d455afb7cbc8fe1fcd8ab726d5c7080c29129f2a31b9e328a7d90c4"}},{"ruleId":"D2","level":"warning","message":{"text":"BlobPageScheduler::schedule_ranges (cognitive 18): BlobPageScheduler::schedule_ranges has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive/blob.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"862cc833fb9dabde8bc36fe3acd85ec60607892109f0bed4b142b3f485398df1"}},{"ruleId":"D2","level":"warning","message":{"text":"HuffmanWaveletTree::build (cognitive 18): HuffmanWaveletTree::build has cognitive complexity 18 (threshold 15). Drivers by points: loops 8 (10 pts), if/else 4 (7 pts), match/switch 1 (nesting depth added 5). Of this number, 17 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":"rust/lance-index/src/scalar/fmindex.rs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"645ed33c1d567116ee8e85795141b43b16113f8bdabaccd6345c3d78087f2215"}},{"ruleId":"D2","level":"warning","message":{"text":"ShouldMaxScoreScorer::position (cognitive 18): ShouldMaxScoreScorer::position has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (15 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":"rust/lance-index/src/scalar/inverted/compound/should_maxscore.rs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a680d6804fe7bb483f7213807786dc1edefe11b86a62c05b6913b60dee24f9d"}},{"ruleId":"D2","level":"warning","message":{"text":"PostingIterator::next_doc_id (cognitive 18): PostingIterator::next_doc_id has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 1 (2 pts), 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":1397}}}],"partialFingerprints":{"codehealthFindingId/v1":"b518cab7cc9b97fe922cf3115745c88f07c69ae2edeefb80686346db99bcafd7"}},{"ruleId":"D2","level":"warning","message":{"text":"NGramIndexBuilder::merge_spill_streams (cognitive 18): NGramIndexBuilder::merge_spill_streams has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 3 (7 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":"rust/lance-index/src/scalar/ngram.rs"},"region":{"startLine":1450}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbae9ac8914bdb02aa4b5e42817e74c1e7f63b9d1cab77d885eb28504d09cb3c"}},{"ruleId":"D2","level":"warning","message":{"text":"KMeans::train_kmeans (cognitive 18): KMeans::train_kmeans has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 2 (3 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":"rust/lance-index/src/vector/kmeans.rs"},"region":{"startLine":1032}}}],"partialFingerprints":{"codehealthFindingId/v1":"104eb63d65634ae5ef301f38a52b7a66eb25516913f770f56e0a3b39665d2850"}},{"ruleId":"D2","level":"warning","message":{"text":"ReadBatchParams::slice (cognitive 18): ReadBatchParams::slice has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 1 (2 pts), match/switch 1 (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":"rust/lance-io/src/lib.rs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcdad1779ab97588ebd30ab2835634182f7d590621acd125a2e337335645efd1"}},{"ruleId":"D2","level":"warning","message":{"text":"ObjectStore::copy_via_stream (cognitive 18): ObjectStore::copy_via_stream has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/object_store.rs"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccf787a92a1a5a6a02c47b0c7a63af5b38d3c17835384e7f87d8247bb7537694"}},{"ruleId":"D2","level":"warning","message":{"text":"DirectoryNamespace::build_index_params (cognitive 18): DirectoryNamespace::build_index_params has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (17 pts), match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":2410}}}],"partialFingerprints":{"codehealthFindingId/v1":"5131822b7c148665cae5a7d1ef4a65da0e1d414a3ffe31d89b00fa943ef52e9f"}},{"ruleId":"D2","level":"warning","message":{"text":"Transaction::assign_row_ids (cognitive 18): Transaction::assign_row_ids has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 3 (10 pts), loops 2 (5 pts), if/else 2 (3 pts) (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":"rust/lance-table/src/transaction/row_version.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"52d21689039df3e396f2dec67da51a7b05c98b98ad1f39b06f5d3a8a49d2e9ca"}},{"ruleId":"D2","level":"warning","message":{"text":"BitmapSlice::count_ones (cognitive 18): BitmapSlice::count_ones 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":"rust/lance-table/src/rowids/bitmap.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdb51423532686a24e843a81811f656140cfea111b498e5418c25293c2e461c0"}},{"ruleId":"D2","level":"warning","message":{"text":"RowIdIndex::get_many (cognitive 18): RowIdIndex::get_many has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 3 (5 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":"rust/lance-table/src/rowids/index.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"4631ed51d6c383b731c441ad50a06a69ea372cf21fae3336c76065e5e617c34a"}},{"ruleId":"D2","level":"warning","message":{"text":"HoleRuns::from_bitmap (cognitive 18): HoleRuns::from_bitmap has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 2 (4 pts), match/switch 1 (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":"rust/lance-table/src/rowids/runs.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"e92b95d79a3c28c7477e988754b1178691a95b263e2c545a44161285d321263d"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_jni::transaction::inner_commit_to_dataset (cognitive 17): lance_jni::transaction::inner_commit_to_dataset has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12 (14 pts), match/switch 2 (3 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/transaction.rs"},"region":{"startLine":1326}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8e4a1ad83b12e51b89a7d4436cd22081d5f5ed493b1aa202940551607da60da"}},{"ruleId":"D2","level":"warning","message":{"text":"DatasetBuilder::load_by_uri (cognitive 17): DatasetBuilder::load_by_uri has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (9 pts), match/switch 3 (8 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":"rust/lance/src/dataset/builder.rs"},"region":{"startLine":863}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee0cc51521e2e8cfb6bbf42761bb004ac3388d67144fc36b04cd068c70d6c01c"}},{"ruleId":"D2","level":"warning","message":{"text":"MemTableScanner::extract_btree_predicate (cognitive 17): MemTableScanner::extract_btree_predicate has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 2 (4 pts) (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":"rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs"},"region":{"startLine":1448}}}],"partialFingerprints":{"codehealthFindingId/v1":"12a6c65312e2b39713121d2bfec02c20193cfd2ac4a94acc6d36bdc5330cf368"}},{"ruleId":"D2","level":"warning","message":{"text":"WalAppender::append (cognitive 17): WalAppender::append has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (14 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/wal.rs"},"region":{"startLine":1215}}}],"partialFingerprints":{"codehealthFindingId/v1":"6337024ae89c38fbf84456cdfa8b03f8b8a5a0db22b36e3461bdc6f4252c4ece"}},{"ruleId":"D2","level":"warning","message":{"text":"DeleteOnlyMergeInsertExec::collect_deletions (cognitive 17): DeleteOnlyMergeInsertExec::collect_deletions has cognitive complexity 17 (threshold 15). Drivers by points: if/else 3 (8 pts), match/switch 1 (5 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":"rust/lance/src/dataset/write/merge_insert/exec/delete.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"fba9b22c64366a51fc848a3e3e7b74ac961f7f17ba6caa6dfd273cf33329713b"}},{"ruleId":"D2","level":"warning","message":{"text":"Dataset::write_into_namespace_impl (cognitive 17): Dataset::write_into_namespace_impl has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (15 pts), 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":"rust/lance/src/dataset.rs"},"region":{"startLine":1004}}}],"partialFingerprints":{"codehealthFindingId/v1":"764d118a833daecdb622795e970d652702b65e2dd68722443a146929629f378b"}},{"ruleId":"D2","level":"warning","message":{"text":"AddRowOffsetExec::compute_row_offsets (cognitive 17): AddRowOffsetExec::compute_row_offsets has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (13 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":"rust/lance/src/io/exec/rowids.rs"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"280918c785f559aac931398f39a6c2edd79679ca0a181766dffeb069e59196bc"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::scalar::inverted::collect_element_documents (cognitive 17): lance::index::scalar::inverted::collect_element_documents has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (12 pts), match/switch 2 (3 pts), loops 1 (2 pts) (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":"rust/lance/src/index/scalar/inverted.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"bea2c6c5856ebd0e99e0c47db8ef9c3afb959ad95396644b77bb36dab6de1ddf"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::mem_wal::scanner::block_list::fresh_tier_block_list (cognitive 17): lance::dataset::mem_wal::scanner::block_list::fresh_tier_block_list has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), match/switch 2 (5 pts), 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":"rust/lance/src/dataset/mem_wal/scanner/block_list.rs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"125b5850358f196446e4949a70625f84305dbcbdd29c2e9b3306453e4a89dcb8"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::ivf::select_steady_state_rebalance (cognitive 17): lance::index::vector::ivf::select_steady_state_rebalance has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"d958656c90d56b737944ddd9494bb1171ba76c234d2cfe78e6c8908a344ce6d9"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::schema_evolution::plan_drop_columns (cognitive 17): lance::dataset::schema_evolution::plan_drop_columns has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 3 (4 pts), match/switch 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/schema_evolution.rs"},"region":{"startLine":1168}}}],"partialFingerprints":{"codehealthFindingId/v1":"e45a47f687d1be233e36450b90ad95d0069df071513c906fb2317803f46528c3"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::blob::estimate_blob_v2_materialized_array_bytes (cognitive 17): lance::dataset::blob::estimate_blob_v2_materialized_array_bytes has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 2 (4 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":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":4059}}}],"partialFingerprints":{"codehealthFindingId/v1":"83e1ade8605e38b51728e6545dcdbfb9bfede4a94fb4abc9de653171104c37a0"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::blob::materialize_blob_v2_descriptors (cognitive 17): lance::dataset::blob::materialize_blob_v2_descriptors has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (10 pts), boolean chains 3, loops 3, match/switch 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":4317}}}],"partialFingerprints":{"codehealthFindingId/v1":"c40541abda4f58f75cdd0ca7f74e0e9d3c482f16123fd01889f55c4a0bcd3910"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::mem_wal::write::replay_memtable_from_wal (cognitive 17): lance::dataset::mem_wal::write::replay_memtable_from_wal has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (13 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/write.rs"},"region":{"startLine":1422}}}],"partialFingerprints":{"codehealthFindingId/v1":"464a59577c1ececd61927ab724b97d8f2e633bd1122252f1eaa68aa0f4c9060c"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::mem_wal::index::fts::build_partition (cognitive 17): lance::dataset::mem_wal::index::fts::build_partition has cognitive complexity 17 (threshold 15). Drivers by points: loops 5 (13 pts), if/else 2 (4 pts) (nesting depth added 10). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":4121}}}],"partialFingerprints":{"codehealthFindingId/v1":"44e27592beb9646f6ed43a075f14fa48d8a23811ac2822aecce581ae316cdad9"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_arrow::ipc::read_ipc_stream_at (cognitive 17): lance_arrow::ipc::read_ipc_stream_at has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (15 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":"rust/lance-arrow/src/ipc.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"b72996a501699f1abc202b8cf7ebd91f23a6a7dce9b4f276afed3bffb962e472"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_core::utils::cpu::detect_host_features (cognitive 17): lance_core::utils::cpu::detect_host_features has cognitive complexity 17 (threshold 15). Drivers by points: if/else 17. 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":"rust/lance-core/src/utils/cpu.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d0b5d9b4bbc30063253771d6a4e9f0105c355abd82b644d6ad73a0ea93443ea"}},{"ruleId":"D2","level":"warning","message":{"text":"SparseStructuralUnraveler::unravel_offsets (cognitive 17): SparseStructuralUnraveler::unravel_offsets has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (16 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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":931}}}],"partialFingerprints":{"codehealthFindingId/v1":"bce3aaf165abd957b722dd78e4d0fbee549c5fdd07d017604c15cda250a268c1"}},{"ruleId":"D2","level":"warning","message":{"text":"DecodeSparseStructuralTask::validate_value_buffers (cognitive 17): DecodeSparseStructuralTask::validate_value_buffers has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), match/switch 5 (7 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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":3453}}}],"partialFingerprints":{"codehealthFindingId/v1":"655425d722c6eef4503364fdb24071ec39edd523b1d4cce7d25a22d83710d11e"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_encoding::encoder::encode_batch (cognitive 17): lance_encoding::encoder::encode_batch has cognitive complexity 17 (threshold 15). Drivers by points: loops 7 (15 pts), boolean chains 1, if/else 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":"rust/lance-encoding/src/encoder.rs"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"02e5bc22931917e585ac94a22256198bd5555d05c4934678660fe0a0d9eda58d"}},{"ruleId":"D2","level":"warning","message":{"text":"BTreeIndex::search_with_options (cognitive 17): BTreeIndex::search_with_options has cognitive complexity 17 (threshold 15). Drivers by points: match/switch 5 (8 pts), if/else 4 (6 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 6). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":2495}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8d250d21175f3b932251528eacdee2fadf95abc13f63ce05efa513b43d674a6"}},{"ruleId":"D2","level":"warning","message":{"text":"InvertedIndex::expand_fuzzy_tokens (cognitive 17): InvertedIndex::expand_fuzzy_tokens has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (11 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":"rust/lance-index/src/scalar/inverted/index/search.rs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf5b5d099cb60bc5ea2fe13d88e50f6ab7526f08e296e9add578ffd5103529b6"}},{"ruleId":"D2","level":"warning","message":{"text":"Wand::check_positions (cognitive 17): Wand::check_positions has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":5602}}}],"partialFingerprints":{"codehealthFindingId/v1":"12d05b4b9f04b22ea7859d3360247c67bfea17d749bdb2371a0d2591c529ccc0"}},{"ruleId":"D2","level":"warning","message":{"text":"HNSW::search (cognitive 17): HNSW::search has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 2, loops 1 (2 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":"rust/lance-index/src/vector/hnsw/builder.rs"},"region":{"startLine":1612}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b3f5211406ba5771e71daa5a7ffe9bae588c1270bf55fa9082cea291559a6fe"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::vector::kmeans::split_clusters (cognitive 17): lance_index::vector::kmeans::split_clusters has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 2 (4 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/kmeans.rs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"419ff856814f157677bee76e334f955e25c3e023c9a6f5df39c0d445dcee7b20"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::builder::merge_all_tail_partitions (cognitive 17): lance_index::scalar::inverted::builder::merge_all_tail_partitions has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (11 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":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"4643a47d9174d4fe33fcb12e716c27122a9ebac8ab7ff050fb2aaa5576aa2585"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::inverted::builder::merge_metadata_files (cognitive 17): lance_index::scalar::inverted::builder::merge_metadata_files has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (8 pts), loops 6 (8 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":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":2258}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd7cf3137d1c4121d58c2f9fec6188fcdac651bd612e9c50ff5b0a8c1c7cc0f8"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::zonemap::remap_zone (cognitive 17): lance_index::scalar::zonemap::remap_zone has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 3, 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":"rust/lance-index/src/scalar/zonemap.rs"},"region":{"startLine":931}}}],"partialFingerprints":{"codehealthFindingId/v1":"633718e1f3446b6bbdce3ab57a53ef37ca3c850205a2c62357bcc68211189794"}},{"ruleId":"D2","level":"warning","message":{"text":"AimdMultipartUploadService::call (cognitive 17): AimdMultipartUploadService::call has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (9 pts), boolean chains 4, match/switch 1 (3 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":"rust/lance-io/src/object_store/throttle.rs"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"c86f6296fca40345e07a0ed813ef79c8e5aaba3405bbcc2f9c293cf894f99e5e"}},{"ruleId":"D2","level":"warning","message":{"text":"ManifestNamespace::list_tables (cognitive 17): ManifestNamespace::list_tables has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (12 pts), loops 3 (5 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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2716}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ad91956eedbe56ccce6f25f33983115bbccab0b01c5553827c2e284b612212c"}},{"ruleId":"D2","level":"warning","message":{"text":"Transaction::register_pure_rewrite_rows_update_frags_in_indices (cognitive 17): Transaction::register_pure_rewrite_rows_update_frags_in_indices has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 2 (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":"rust/lance-table/src/transaction/index_maintenance.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"50b2ecc40636dd09fd03e69b200201f021c7a2b18ac071258c7eb54642531f6e"}},{"ruleId":"D2","level":"warning","message":{"text":"U64Segment::from_stats_and_sequence (cognitive 17): U64Segment::from_stats_and_sequence has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (12 pts), loops 1 (4 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":"rust/lance-table/src/rowids/segment.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb624ad073bfdc72bdac17b46848089b57c5084d8e07d15d8af94afe62339715"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::system_index::frag_reuse::gate::classify (cognitive 17): lance_table::system_index::frag_reuse::gate::classify has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (10 pts), boolean chains 6, match/switch 1 (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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/system_index/frag_reuse/gate.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1be77970c585a0bbf3812189b00121ed0b8fc65d7708acb89163cd10e7d7897"}},{"ruleId":"D2","level":"warning","message":{"text":"WriteDatasetBuilder.execute (cognitive 17): WriteDatasetBuilder.execute has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12 (13 pts), boolean chains 4 (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":"java/src/main/java/org/lance/WriteDatasetBuilder.java"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"3beacdfb7ef9aad6a009cca15ba9562e108a5dfd14f65dee0493c016132946b1"}},{"ruleId":"D2","level":"warning","message":{"text":"LanceDataset.scanner (cognitive 17): LanceDataset.scanner has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (14 pts), ternaries 1 (2 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/dataset.py"},"region":{"startLine":1221}}}],"partialFingerprints":{"codehealthFindingId/v1":"17cb052752540c1d765fdb3286b28f100e970513f587e77dd8d041f5ee8ee531"}},{"ruleId":"D2","level":"warning","message":{"text":"pydantic._pydantic_type_to_arrow_type (cognitive 17): pydantic._pydantic_type_to_arrow_type has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (17 pts) (nesting depth added 10). This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/pydantic.py"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"46f4fc61d8c4d24a2999461f3b18241db17ede4ffdcdc7f82f58755561294467"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_jni::utils::get_vector_index_params (cognitive 16): lance_jni::utils::get_vector_index_params has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (15 pts), match/switch 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/utils.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ffff72592a5a5c8ad90a53310577e54c954bee72a9fa937e9eb9a3c29ae4207"}},{"ruleId":"D2","level":"warning","message":{"text":"pylance::session::backend_config_from_dict (cognitive 16): pylance::session::backend_config_from_dict has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/session.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3eec1f02a5c7bd6346b48c7e72c5e0f693cdafd5cd0711c34824cbc6e141be3"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_arrow_stats::find_min_max_indices (cognitive 16): lance_arrow_stats::find_min_max_indices has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (9 pts), boolean chains 4, loops 1 (2 pts), match/switch 1 (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":"rust/arrow-stats/src/lib.rs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"187f18682464be89524ff500fc1393c0440b95c66a6b613fe17ee1aa67377805"}},{"ruleId":"D2","level":"warning","message":{"text":"FtsMemIndex::insert_batch_with_keys (cognitive 16): FtsMemIndex::insert_batch_with_keys has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, boolean chains 3, loops 1, match/switch 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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":1674}}}],"partialFingerprints":{"codehealthFindingId/v1":"a934edd353f467a48d8c90d6268c767a2e081826fcb6d8eb8c57b8346e24b4b4"}},{"ruleId":"D2","level":"warning","message":{"text":"Partition::search_phrase (cognitive 16): Partition::search_phrase has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 3 (4 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":4633}}}],"partialFingerprints":{"codehealthFindingId/v1":"770ba253aa0633ec9537efb277161c63724c650a8e729a0374542b7b51131b93"}},{"ruleId":"D2","level":"warning","message":{"text":"ShardManifestStore::find_latest_version (cognitive 16): ShardManifestStore::find_latest_version has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/manifest.rs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"95127a2429865c709f56795c4988145416647a95ddd6bc8feba4aef0b27e036a"}},{"ruleId":"D2","level":"warning","message":{"text":"LsmPointLookupPlanner::lookup (cognitive 16): LsmPointLookupPlanner::lookup has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 3 (8 pts), if/else 3 (7 pts), boolean chains 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":"rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"35d73ec0a6f9cd9c57d9d516d93dc4cc55488d2a6de00585824921832a8360c7"}},{"ruleId":"D2","level":"warning","message":{"text":"LocalBackpressureController::maybe_apply_backpressure (cognitive 16): LocalBackpressureController::maybe_apply_backpressure 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":"rust/lance/src/dataset/mem_wal/write.rs"},"region":{"startLine":1157}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e2430768f5061e497848ecf060e34d478fa648ae1a8ac8d328058947f52a78f"}},{"ruleId":"D2","level":"warning","message":{"text":"ShardWriter::close (cognitive 16): ShardWriter::close has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (8 pts), match/switch 3 (5 pts), loops 1 (2 pts), boolean chains 1 (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":"rust/lance/src/dataset/mem_wal/write.rs"},"region":{"startLine":3658}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0652521cc481de54e9df6a85fccedabae157fe9d3ca5693ec0513ad6ccd15da"}},{"ruleId":"D2","level":"warning","message":{"text":"Scanner::fragments_covered_by_fts_query_helper (cognitive 16): Scanner::fragments_covered_by_fts_query_helper has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (9 pts), loops 3 (6 pts), match/switch 1 (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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":4389}}}],"partialFingerprints":{"codehealthFindingId/v1":"304d0d06d0b29910820f119eee775c7b40d6230fe275884b79ae382a48cab1eb"}},{"ruleId":"D2","level":"warning","message":{"text":"IVFIndex::search_partitions_batch (cognitive 16): IVFIndex::search_partitions_batch has cognitive complexity 16 (threshold 15). Drivers by points: loops 6 (10 pts), if/else 5 (6 pts) (nesting depth added 5). 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":"rust/lance/src/index/vector/ivf/v2.rs"},"region":{"startLine":2644}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4a70e7e2ef91d1eeced7a65484515d93157adba739e3b27c49b910ba72f8d81"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::io::exec::filtered_read_proto::fr_options_from_proto (cognitive 16): lance::io::exec::filtered_read_proto::fr_options_from_proto has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13 (15 pts), boolean chains 1 (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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/filtered_read_proto.rs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"d22d179c54c99fb50b3e39f18680ab84e78bd28cae180f07da5a67717a502bcf"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::prune_stale_segment_coverage (cognitive 16): lance::index::prune_stale_segment_coverage has cognitive complexity 16 (threshold 15). Drivers by points: if/else 2 (6 pts), loops 3 (6 pts), boolean chains 4 (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":"rust/lance/src/index.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"139b81a49d5bf5db9557aaaaee32750c41af75f07fe30bf862b4f816bbafc9fb"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::aggregate_fts_prewarm_results (cognitive 16): lance::index::aggregate_fts_prewarm_results has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (9 pts), match/switch 2 (4 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":"rust/lance/src/index.rs"},"region":{"startLine":621}}}],"partialFingerprints":{"codehealthFindingId/v1":"fca2a96b6cbef4f5f0686f790d0f31ecef767077a1e05a88beeb081f9e0244b7"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::append::try_harvest_seeds (cognitive 16): lance::index::append::try_harvest_seeds has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (15 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":"rust/lance/src/index/append.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ff90fbe3ae0ac023c168ce108624d9d3444c8fbe05c78395564f7e51e6b7217"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::dataset::optimize::descriptor_to_logical_blob_array (cognitive 16): lance::dataset::optimize::descriptor_to_logical_blob_array has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 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":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":1448}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfe7bc48a9a4362327645134c30ac31438a41045763ce84f0e6e5dcc15ccb86f"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::index::vector::utils::sample_nullable_fallback (cognitive 16): lance::index::vector::utils::sample_nullable_fallback has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (14 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":"rust/lance/src/index/vector/utils.rs"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"c43f51ceec757c5a1a4e8ebbe711474862558c14796ea84f99a4dc2560ceaa54"}},{"ruleId":"D2","level":"warning","message":{"text":"lance::io::exec::scalar_index::row_ids_for_mask (cognitive 16): lance::io::exec::scalar_index::row_ids_for_mask has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (9 pts), loops 2 (6 pts), match/switch 1 (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":"rust/lance/src/io/exec/scalar_index.rs"},"region":{"startLine":1003}}}],"partialFingerprints":{"codehealthFindingId/v1":"2950d3d639727a61db017a3d0399de82b3d597c030af51806a91c0b8ebdfdc93"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_arrow::stream::rechunk_stream_by_size_inner (cognitive 16): lance_arrow::stream::rechunk_stream_by_size_inner has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7, boolean chains 4, loops 2 (3 pts), match/switch 1 (2 pts) (nesting depth added 2). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-arrow/src/stream.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ed04dcaff0ef09b1cc7e2fe5b02a1037417d44657f529ca07881db54b66a872"}},{"ruleId":"D2","level":"warning","message":{"text":"Field::try_from (cognitive 16): Field::try_from has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 pts), match/switch 3, 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":"rust/lance-core/src/datatypes/field.rs"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"2825f4a9e1d4fd2acb7484714652e91338d2b3f4728e87e3c60600034221699e"}},{"ruleId":"D2","level":"warning","message":{"text":"AimdConfig::validate (cognitive 16): AimdConfig::validate has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (12 pts), 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":"rust/lance-core/src/utils/aimd.rs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"89274311079b580010d545326b62136a535621ce9faf7db32b0115fa9fe74d8a"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_datafusion::substrait::parse_groupings (cognitive 16): lance_datafusion::substrait::parse_groupings has cognitive complexity 16 (threshold 15). Drivers by points: loops 4 (10 pts), if/else 3 (6 pts) (nesting depth added 9). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/substrait.rs"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"26db07380cfd0fceb7974e7f5fd0ad6635064c393fdbb9c9406974bb9f280c13"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_datafusion::exec::collect_execution_metrics (cognitive 16): lance_datafusion::exec::collect_execution_metrics has cognitive complexity 16 (threshold 15). Drivers by points: loops 4 (7 pts), match/switch 2 (6 pts), if/else 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":"rust/lance-datafusion/src/exec.rs"},"region":{"startLine":594}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d1108a30cea7737c8480dfaf46f7e37864d4921d9a2b3acf79ffddbb81f5095"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_datafusion::udf::json::check_array_contains (cognitive 16): lance_datafusion::udf::json::check_array_contains has cognitive complexity 16 (threshold 15). Drivers by points: if/else 1 (5 pts), loops 2 (5 pts), match/switch 2 (5 pts), boolean chains 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":"rust/lance-datafusion/src/udf/json.rs"},"region":{"startLine":818}}}],"partialFingerprints":{"codehealthFindingId/v1":"949a0c00f37fd5bcbefb858912c3a54bcc2d90c40343de06cb10b8bcb0edfd48"}},{"ruleId":"D2","level":"warning","message":{"text":"CycleNanGenerator::generate (cognitive 16): CycleNanGenerator::generate has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (9 pts), loops 3 (6 pts), match/switch 1 (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":"rust/lance-datagen/src/generator.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"5426d157cfb561f1002803361015698aa32041f1f098cfb3dddbbe0ecfdb6bb7"}},{"ruleId":"D2","level":"warning","message":{"text":"NullGenerator::generate (cognitive 16): NullGenerator::generate has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (13 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datagen/src/generator.rs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c746874ba38b14870a67dbd2e11029222a103994bd0e30b7094fac9e3d1f980"}},{"ruleId":"D2","level":"warning","message":{"text":"BlobDescriptionDecodePageTask::decode (cognitive 16): BlobDescriptionDecodePageTask::decode 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":"rust/lance-encoding/src/encodings/logical/primitive/blob.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"42b96da848908b7c8ea0886f42f84ee38c4df63b6cf5d8d79144edc4e04fc64a"}},{"ruleId":"D2","level":"warning","message":{"text":"SparsePositionSet::validate_domain (cognitive 16): SparsePositionSet::validate_domain has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 1 (2 pts), boolean chains 1, 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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9d587184073f51f661e9a88270d9255f3b3931f3a2d218994298462a46d7d43"}},{"ruleId":"D2","level":"warning","message":{"text":"StructuralPrimitiveFieldDecoder::plan_decoded_bytes (cognitive 16): StructuralPrimitiveFieldDecoder::plan_decoded_bytes has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 3 (5 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":5321}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b430c9a5c5956e23a8d6e9f56dc22490794ba2a4ff8844139f99d85531c4348"}},{"ruleId":"D2","level":"warning","message":{"text":"ByteStreamSplitEncoder::compress (cognitive 16): ByteStreamSplitEncoder::compress has cognitive complexity 16 (threshold 15). Drivers by points: loops 3 (9 pts), if/else 3 (6 pts), match/switch 1 (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":"rust/lance-encoding/src/encodings/physical/byte_stream_split.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"b19364b0a02662a27e7ddf24efa250927857d1fef702addb382e795c37ac25a9"}},{"ruleId":"D2","level":"warning","message":{"text":"InvertedIndexBuilder::update_index (cognitive 16): InvertedIndexBuilder::update_index has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (6 pts), loops 5 (6 pts), match/switch 2 (4 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":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c91b2343dca18cb1be240203bfcd9c1ebd50297030abdd71e3546a38b154760"}},{"ruleId":"D2","level":"warning","message":{"text":"InnerBuilder::write_posting_lists (cognitive 16): InnerBuilder::write_posting_lists has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":1147}}}],"partialFingerprints":{"codehealthFindingId/v1":"28717b870b20772a3c194ecc7b7bdbf67d12556e091d1765529c323152bd6374"}},{"ruleId":"D2","level":"warning","message":{"text":"PostingListBatchBuilder::append (cognitive 16): PostingListBatchBuilder::append has cognitive complexity 16 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 3 (5 pts), match/switch 1 (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":"rust/lance-index/src/scalar/inverted/index/posting_batch_builder.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4b6281c0d61f14e87ccd8c2d4c34a0fb478b463a68dcd1f247a7cb9e06004d8"}},{"ruleId":"D2","level":"warning","message":{"text":"PostingListReader::posting_read_chunk_ranges (cognitive 16): PostingListReader::posting_read_chunk_ranges has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (10 pts), boolean chains 3, loops 2 (3 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":"rust/lance-index/src/scalar/inverted/index/posting_prewarm.rs"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"915fdccb1bf42d67869e43788e125c1fc2980a081c52af7b36586452717e99da"}},{"ruleId":"D2","level":"warning","message":{"text":"ProductQuantizationStorage::new_with_remapper (cognitive 16): ProductQuantizationStorage::new_with_remapper has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (13 pts), loops 1 (2 pts), match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/pq/storage.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"047fdf319a3cee8e7438798a11b32e13d652b3f749217cf29dcb4133f6661be8"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::vector::bq::storage::compute_single_rq_distance (cognitive 16): lance_index::vector::bq::storage::compute_single_rq_distance has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (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":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":2748}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ce6adc8fa7ab7385622fbe3bd76ba278922e65b7d1d9216352066de4cedca92"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::expression::like_to_regex (cognitive 16): lance_index::scalar::expression::like_to_regex has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (12 pts), match/switch 1 (3 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/expression.rs"},"region":{"startLine":1014}}}],"partialFingerprints":{"codehealthFindingId/v1":"3489e57dcad434a9c84221efce3a336c97913195b17f853f29428ded22f98669"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_index::scalar::bitmap::build_index_map (cognitive 16): lance_index::scalar::bitmap::build_index_map has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (7 pts), loops 3 (5 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/bitmap.rs"},"region":{"startLine":1618}}}],"partialFingerprints":{"codehealthFindingId/v1":"7468d6ee7bf66b9a726a3ee75f294de8d57abdd1b8084012c5bacbb4e5d33dd6"}},{"ruleId":"D2","level":"warning","message":{"text":"ObjectWriter::poll_tasks (cognitive 16): ObjectWriter::poll_tasks has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 4 (12 pts), loops 2 (4 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":"rust/lance-io/src/object_writer.rs"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffb9ec672d371d3b402320df17d19bee55037ed93cd8c80ae5fcb121e973e53e"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_namespace_impls::dir::build_engine_fts_query (cognitive 16): lance_namespace_impls::dir::build_engine_fts_query has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (10 pts), loops 3 (6 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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":6081}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a670975475ee08aaa67379e66619737c58fdf88ab521a6725df7fa1f48efcdf"}},{"ruleId":"D2","level":"warning","message":{"text":"Operation::modifies_same_metadata (cognitive 16): Operation::modifies_same_metadata has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 1 (3 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":"rust/lance-table/src/transaction/conflicts.rs"},"region":{"startLine":919}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee33919c6a2b0aa960467dc594bc66f308857c0f62b90108db2a1f872749f3dd"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::rowids::version::rechunk_version_sequences (cognitive 16): lance_table::rowids::version::rechunk_version_sequences has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 2 (3 pts), match/switch 1 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids/version.rs"},"region":{"startLine":562}}}],"partialFingerprints":{"codehealthFindingId/v1":"4368fe9341871c9c2a871c967d114705cc96d4dc37a3e86ce14ed810c57594fb"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::format::key_existence::extract_key_value (cognitive 16): lance_table::format::key_existence::extract_key_value has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (9 pts), loops 3 (6 pts), match/switch 1 (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":"rust/lance-table/src/format/key_existence.rs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"997bf3e436f52030dec2250f0cf3f3a14630d490d9d4b94c4decef46c0eec8c3"}},{"ruleId":"D2","level":"warning","message":{"text":"lance_table::rowids::select_row_ids (cognitive 16): lance_table::rowids::select_row_ids has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 1 (2 pts), boolean chains 1, 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":"rust/lance-table/src/rowids.rs"},"region":{"startLine":1055}}}],"partialFingerprints":{"codehealthFindingId/v1":"b33c73c96396388cdf986708f0a5cd6e87b8311775c91064fa54bb1615272371"}},{"ruleId":"D2","level":"warning","message":{"text":"fragment.write_fragments (cognitive 16): fragment.write_fragments has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 3, ternaries 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":"python/python/lance/fragment.py"},"region":{"startLine":1223}}}],"partialFingerprints":{"codehealthFindingId/v1":"afc9615b73e85388c1564102e0b95a55885f8f7bae01a8e99bd45c39a77c5c1e"}},{"ruleId":"D2","level":"warning","message":{"text":"pydantic._unwrap_optional_annotation (cognitive 16): pydantic._unwrap_optional_annotation has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 3 (nesting depth added 7). This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/pydantic.py"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"abdf532dcc8659a72fca1c59976a0368f4d411ea3f73482f4f36a2abaa53558f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: logical/primitive.rs: FileTooLong \u2014 5241 significant 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 4741 over it, 10.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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"93a9a651673ae61fa506cd59fbc26f9f779ef2ebe20c8eaf9450e9a66f79d2b4"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Scanner: ClassTooLong \u2014 4139 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 161 methods, 2 blocks, lines 1104-8078. The bar is 400 significant lines; this is 3739 over it, 10.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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c183ad15f581bfe2ed750e8e089a9849e4bdf82388154b5cf96748fefb06e3b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dataset/scanner.rs: FileTooLong \u2014 4935 significant 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 84% of them inside a single declaration: Scanner (2 blocks, 1104-8078). The bar is 500 significant lines; this is 4435 over it, 9.87\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"90980e1e3f199741e29d2a354cdc4b6f3340d9b297ff03ce34cd3c4eaf30555e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/dataset.rs: FileTooLong \u2014 4142 significant 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: Dataset (4 blocks, 830-4806). The bar is 500 significant lines; this is 3642 over it, 8.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":"python/src/dataset.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bc6e2e4048eb6bda4904a37440ee202808854391cd6553dc147722040d46ec9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: exec/fts.rs: FileTooLong \u2014 4074 significant 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 3574 over it, 8.15\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f17b1c04933ef51c01fe17218acdfc447e6727bcfc90ea644157fccee9ac33c6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DirectoryNamespace: ClassTooLong \u2014 3250 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 64 methods, 5 blocks, lines 884-5931. The bar is 400 significant lines; this is 2850 over it, 8.13\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":884}}}],"partialFingerprints":{"codehealthFindingId/v1":"21eed425e16c78b599e7161db74c0a3b34e0f0d3a714ffd76fac222584c7fc2e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inverted/wand.rs: FileTooLong \u2014 3871 significant 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 3371 over it, 7.74\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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"642ef85bf64eb2cc9bc841faf8f1cf2dec641d2d2bd53ec88f2c2a75e9444407"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Transaction.build_manifest_prepared: MethodTooLong \u2014 build_manifest_prepared runs 772 significant 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 672 over it, 7.72\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/manifest_build.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fd5a9c18e76b1fa28dbc19ce53b86b427980622fec9de5284414c75a4182b28"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/dir.rs: FileTooLong \u2014 3856 significant 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 84% of them inside a single declaration: DirectoryNamespace (5 blocks, 884-5931). The bar is 500 significant lines; this is 3356 over it, 7.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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"35a87b459631c51a5d3663819c99bb88d64913db6c19f67a86ea4721c77887d4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: vector/ivf.rs: FileTooLong \u2014 3701 significant 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 81 free functions. The bar is 500 significant lines; this is 3201 over it, 7.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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"22a602bd8f48461d22fda3048bdd3ef5d999b502a1d1db0437e16a6f3a4af987"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: primitive/sparse.rs: FileTooLong \u2014 3442 significant 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 2942 over it, 6.88\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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc0b1ae06b6e58243829b193676f9e70be2e7a3c422665cd3267e0624af51664"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Dataset: TooManyMethods \u2014 203 methods. The bar is 30 methods; this is 173 over it, 6.77\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/Dataset.java"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"021aca332c7592475dc480dd5559702ebc666cb3b863ea50aa8d8b5c0e8a5a2a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lance/dataset.py: FileTooLong \u2014 3377 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 2877 over it, 6.75\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/dataset.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"947cd5e5eaebb418e88b443b130730f7de83e895e2b167861f7a520f960c5a11"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/blocking_dataset.rs: FileTooLong \u2014 3302 significant 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 169 free functions. The bar is 500 significant lines; this is 2802 over it, 6.60\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":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a44dae9b7c796319c916d2252eb4b4a8cde0c50d82cff3c0f4ba8cd00956f10"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dataset/blob.rs: FileTooLong \u2014 3176 significant 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 60 free functions. The bar is 500 significant lines; this is 2676 over it, 6.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":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfae8f5d6da3e37ee8f120ca43cfe46873d91359fb32879a6c5df7f832d25b9d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/fts.rs: FileTooLong \u2014 3156 significant 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 50 free functions. The bar is 500 significant lines; this is 2656 over it, 6.31\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7df87d2c4a2b02ad9d27b10f7723aadfe3154427298880e688592c1e9327c0ed"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Dataset: ClassTooLong \u2014 2513 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 125 methods, 4 blocks, lines 830-4806. The bar is 400 significant lines; this is 2113 over it, 6.28\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":"python/src/dataset.rs"},"region":{"startLine":830}}}],"partialFingerprints":{"codehealthFindingId/v1":"376af26e66e22b6a8f7853388f08dfce852c31ccd38cc55f57ca7c8a2c73a08e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_index::vector::distributed::index_merger::merge_partial_vector_auxiliary_files_inner: FunctionTooLong \u2014 lance_index::vector::distributed::index_merger::merge_partial_vector_auxiliary_files_inner runs 619 significant 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 519 over it, 6.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":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":862}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ffaec548830e1b9d85d44660050899798d2b9f1ed6cc5f7d369d1368d82a357"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inverted/compound.rs: FileTooLong \u2014 2933 significant 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 33 free functions. The bar is 500 significant lines; this is 2433 over it, 5.87\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd3cc4ecbdb5e71ecef5be7fbf25cc5865c6b4e9f1bb3400fa8befae508ed92f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Operation.eq: MethodTooLong \u2014 eq runs 571 significant 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 471 over it, 5.71\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":"rust/lance-table/src/transaction/conflicts.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"c57f4aca8418b6a5a5d911f432a6d7b5342d694e40b0c5f0b7d6f66117009769"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/namespace.rs: FileTooLong \u2014 2798 significant 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 132 free functions. The bar is 500 significant lines; this is 2298 over it, 5.60\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":"java/lance-jni/src/namespace.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecd12c21e1350db2190b8f2dec6b5ea5bb612c2a1865cf23b94a19c1b4d48925"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/index.rs: FileTooLong \u2014 2689 significant 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 57 free functions. The bar is 500 significant lines; this is 2189 over it, 5.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":"rust/lance/src/index.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb06f8a986375d3902fccc60b62e66558d5b95437a3404f9e094487ce92fb412"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Scanner: TooManyMethods \u2014 161 methods. The bar is 30 methods; this is 131 over it, 5.37\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"519054d3d419c901c69da50ac63973ea7f76ff69b5c0e8424fdd290a506fa4e0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Dataset: TooManyMethods \u2014 153 methods, declared across 5 files: src/dataset.rs (145), dataset/files.rs (3), dataset/write.rs (3), index/frag_reuse.rs (1), \u002B1 more file(s). The bar is 30 methods; this is 123 over it, 5.10\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":"rust/lance/src/dataset.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f89463a16335daa7f54ca856652da16bb31688c88ae46fe07a7dca3af55c7d9"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ManifestNamespace: ClassTooLong \u2014 2040 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 66 methods, 4 blocks, lines 755-3843. The bar is 400 significant lines; this is 1640 over it, 5.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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":755}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b69af918913eb9d208ee58602e54453802532844e8501c0cfc9cf13a3f77769"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dir/manifest.rs: FileTooLong \u2014 2550 significant 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: ManifestNamespace (4 blocks, 755-3843). The bar is 500 significant lines; this is 2050 over it, 5.10\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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7123bf8a2181b76be2bf030237ec2d03ec60eb07cbb730c298648ef1775627b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dataset/fragment.rs: FileTooLong \u2014 2545 significant 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 2045 over it, 5.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":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b79201cafdd8a0203ede5955d68535c3d21747d34e17428494e107ce802bd2c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::append::merge_indices_with_unindexed_frags: FunctionTooLong \u2014 lance::index::append::merge_indices_with_unindexed_frags runs 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) in one body. The bar is 100 significant lines; this is 405 over it, 5.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":"rust/lance/src/index/append.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"36fe92c8988f6a688880116496602482923d4394e1f77a5f159619d0e982a2df"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scalar/btree.rs: FileTooLong \u2014 2428 significant 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 1928 over it, 4.86\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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ce8753ef4ac36adac8375e872d8f72bddf669a43b4cbb14606262d87d192007"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/dataset.rs: FileTooLong \u2014 2359 significant 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 79% of them inside a single declaration: Dataset (7 blocks, 219-4266). The bar is 500 significant lines; this is 1859 over it, 4.72\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":"rust/lance/src/dataset.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f1c9895880682f187cc768a6ed40a4fb309c836424b3cbb712d57560c3fab9"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Dataset: ClassTooLong \u2014 1872 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 153 methods, 7 blocks, lines 219-4266. The bar is 400 significant lines; this is 1472 over it, 4.68\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":"rust/lance/src/dataset.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7450faf1a5ad6724475d2a12c0d92f650790c688096ec65ccdfb38e425ea28d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: exec/filtered_read.rs: FileTooLong \u2014 2297 significant 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 1797 over it, 4.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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7533f0b45486c5bb4a3bb55b6ef3292fd906a73bd2dcb7a931ee87b63a6a0a1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dataset/optimize.rs: FileTooLong \u2014 2226 significant 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 33 free functions. The bar is 500 significant lines; this is 1726 over it, 4.45\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"11407a0dd89cd5601b18376b2379c02dac5318421e7e50555d88356624a9b25f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: mem_wal/write.rs: FileTooLong \u2014 2198 significant 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 1698 over it, 4.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":"rust/lance/src/dataset/mem_wal/write.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e167153ba44dd14ef56dc22f8fdd7a6049b6c58530d785a96450d90ef3e3fd51"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: IvfIndexBuilder: ClassTooLong \u2014 1750 significant 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, 2 blocks, lines 275-2800. The bar is 400 significant lines; this is 1350 over it, 4.38\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":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fb1cfb33f579008dbaf94bd132d9224a6bd78852b52ac13e9d58ef7d6a10d8c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: vector/builder.rs: FileTooLong \u2014 2185 significant 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: IvfIndexBuilder (2 blocks, 275-2800). The bar is 500 significant lines; this is 1685 over it, 4.37\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":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5215ac6d25b89510e8eafcf17c0c9c51b3bb9bba7642b5568627917f656ad651"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: write/merge_insert.rs: FileTooLong \u2014 2122 significant 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 1622 over it, 4.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":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"45a75ffa67416a435baf6034a6253905d12c08ffe5aabefccb71a6940d9a2df2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ivf/v2.rs: FileTooLong \u2014 2119 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 65% of them inside a single declaration: IVFIndex (5 blocks, 1038-2943). The bar is 500 significant lines; this is 1619 over it, 4.24\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf/v2.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"14d04d3f835d4391d7c18976cd50522632800bf7c4ea9222fc6c1c21cd244b7b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TransactionRebase: ClassTooLong \u2014 1685 significant 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 35-2782. The bar is 400 significant lines; this is 1285 over it, 4.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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b49c4a95501ce7d6dfdd4db2cfccf09be4789ddab4b6b6cf25b785655611b18"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Dataset: TooManyMethods \u2014 125 methods. The bar is 30 methods; this is 95 over it, 4.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":"python/src/dataset.rs"},"region":{"startLine":830}}}],"partialFingerprints":{"codehealthFindingId/v1":"818a126ca665ef68d26d7167468d3e04e9aac7ff80fcc8a769ecbacdbf4c41ef"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: bq/storage.rs: FileTooLong \u2014 2070 significant 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 1570 over it, 4.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":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea401739ae97656a338c843d1fd4af235dec74a0f4919b531dc203c57dc19728"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: exec/knn.rs: FileTooLong \u2014 2067 significant 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 1567 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":"rust/lance/src/io/exec/knn.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"99a4c782ba0da826cacfaef1be3360f30ae9a0dd5f36b05a03a94d673647879c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/generator.rs: FileTooLong \u2014 1964 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 48 free functions. The bar is 500 significant lines; this is 1464 over it, 3.93\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":"rust/lance-datagen/src/generator.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2479998c919c5c0e86a32a5dd05f9162a6c4a6e2631a726da311426ff65eeb88"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/decoder.rs: FileTooLong \u2014 1951 significant 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 1451 over it, 3.90\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":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"094a14d04809beccd029d25c4c6a4dcbed1a8dd4bc0f6340a2bed7f00241035f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SparseStructuralScheduler: ClassTooLong \u2014 1497 significant 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, 3 blocks, lines 1157-3162. The bar is 400 significant lines; this is 1097 over it, 3.74\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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":1157}}}],"partialFingerprints":{"codehealthFindingId/v1":"a217a2c96077593c6115eb1586b6bb7b8a011c8242c53a49e4caf7f2cc087930"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DirectoryNamespace: TooManyMethods \u2014 112 methods. The bar is 30 methods; this is 82 over it, 3.73\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/namespace/DirectoryNamespace.java"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"d448f476d5ef83bb91bfa3b02ff85b87c7a08534f6f7a252db87a7ff2782701d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CreateIndexBuilder.execute_uncommitted_impl: MethodTooLong \u2014 execute_uncommitted_impl runs 372 significant 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 272 over it, 3.72\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/create.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"60edfa4d308b25059e03ffc327f961ea737c0a857c599d45964bf32f3d01eed1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RestNamespace: TooManyMethods \u2014 111 methods. The bar is 30 methods; this is 81 over it, 3.70\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":"java/src/main/java/org/lance/namespace/RestNamespace.java"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"867b4a309e7aa757d242082f48921e56893c60391cf846acd38e968e9b51d62a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MergeInsertJob.update_fragments: MethodTooLong \u2014 update_fragments runs 370 significant 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 270 over it, 3.70\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":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":1580}}}],"partialFingerprints":{"codehealthFindingId/v1":"e48955db6e2e174d16cbf4272cc6ab70bf5686ccc2fc381af108ec4507165457"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_datafusion::expr::safe_coerce_scalar: FunctionTooLong \u2014 lance_datafusion::expr::safe_coerce_scalar runs 367 significant 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 267 over it, 3.67\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/expr.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab8fc96ab640da8fe790a0773a7a4ee825ce75e76bd9640f2d84213ac16caf7f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/transaction.rs: FileTooLong \u2014 1828 significant 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 1328 over it, 3.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":"java/lance-jni/src/transaction.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a98fdc2214c78bccea35d2fa1d9d2adf14ebd236407d9aa92044a210a4c1e27"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: commit/conflict_resolver.rs: FileTooLong \u2014 1825 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 92% of them inside a single declaration: TransactionRebase (2 blocks, 35-2782). The bar is 500 significant lines; this is 1325 over it, 3.65\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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e59176ca2fe88db54315a0aaa7950b42bc039dad19af2ec514564ae5025dac"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PrimitiveStructuralEncoder: ClassTooLong \u2014 1454 significant 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, 3 blocks, lines 5530-8019. The bar is 400 significant lines; this is 1054 over it, 3.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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":5530}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a1da01dce3491809ea6a1cda54fa6ef40b8ba1ac17bad8ba57933d12ba2635e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/repdef.rs: FileTooLong \u2014 1762 significant 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 1262 over it, 3.52\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":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c8a4e32ba067ab4dbfb9da3534c1ab4fb634a1c54380f8c79b478447bf12c5f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: OrderableScalarValue.cmp: MethodTooLong \u2014 cmp runs 350 significant 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 250 over it, 3.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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d1a781d9fb7664f6f64a3572580c06ac95146dae308675b27c9d0ec19cd2ced"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_jni::transaction::convert_to_rust_operation: FunctionTooLong \u2014 lance_jni::transaction::convert_to_rust_operation runs 345 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 245 over it, 3.45\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/transaction.rs"},"region":{"startLine":1682}}}],"partialFingerprints":{"codehealthFindingId/v1":"674b03a3850f0576824e3190b0e82cdf50c1cd57121b2535b3deeed31ad84de8"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: IVFIndex: ClassTooLong \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), 28 methods, 5 blocks, lines 1038-2943. The bar is 400 significant lines; this is 979 over it, 3.45\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":"rust/lance/src/index/vector/ivf/v2.rs"},"region":{"startLine":1038}}}],"partialFingerprints":{"codehealthFindingId/v1":"990b8c8b1cb7e75bf2d4fe21a8cd252b0ba52cffed4d265e0d99890cbf119e73"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inverted/builder.rs: FileTooLong \u2014 1719 significant 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 1219 over it, 3.44\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b347adbb9bf4b32872eab6fbf7e3bceb9400a6845d7393ad72304d2c8569cc3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/vector.rs: FileTooLong \u2014 1697 significant 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 1197 over it, 3.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":"rust/lance/src/index/vector.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cc59fca3571daf5bbb8c67fd773c6115163e7a9d955a6794fb59fed88eedf17"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/reader.rs: FileTooLong \u2014 1641 significant 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 1141 over it, 3.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":"rust/lance-file/src/reader.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"da12e9d341fce6e1cec7ac5f330f5614ebbd568fa27316b9d8620416b786bf20"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FileFragment: ClassTooLong \u2014 1306 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 56 methods, 2 blocks, lines 96-3036. The bar is 400 significant lines; this is 906 over it, 3.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":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"f89b3ac09f1f66c728e6dcb902ea6a77c599fcfe5d7e6cd3f5854db71abe1300"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scalar/fmindex.rs: FileTooLong \u2014 1611 significant 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 1111 over it, 3.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":"rust/lance-index/src/scalar/fmindex.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef7d0bb99b293b020493ba7438d27cbda23daaa1148142bd4a2f7daa1230e926"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LanceDataset: TooManyMethods \u2014 96 methods. The bar is 30 methods; this is 66 over it, 3.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":"python/python/lance/dataset.py"},"region":{"startLine":857}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bb206c9032dc95891040a3cb934d5f03a1e61108aea9a2ec80744466fdd26c9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scalar/expression.rs: FileTooLong \u2014 1550 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 31 free functions. The bar is 500 significant lines; this is 1050 over it, 3.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":"rust/lance-index/src/scalar/expression.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"197eefd43c8d16b9732da91520acc3b1bb144bda14e73e1be5c5e2db54daf547"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MergeInsertJob: ClassTooLong \u2014 1231 significant 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 664-3225. The bar is 400 significant lines; this is 831 over it, 3.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":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d4aab0f9d616fe7dde6d507b1c908aed6044139012715c703d10bd98c71783c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dataset/write.rs: FileTooLong \u2014 1536 significant 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 1036 over it, 3.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":"rust/lance/src/dataset/write.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"888d4d82039329fcd177860b06eb0f2823ff0d11f1f0ffe3c404066a4441b53c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Dataset.scanner: MethodTooLong \u2014 scanner runs 305 significant 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 205 over it, 3.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":"python/src/dataset.rs"},"region":{"startLine":1232}}}],"partialFingerprints":{"codehealthFindingId/v1":"10e7ef6d79e97a12e300ebe1748638f2dfbed8f7c7619ada5157eb04910c19d4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_jni::transaction::convert_to_java_operation_inner: FunctionTooLong \u2014 lance_jni::transaction::convert_to_java_operation_inner runs 287 significant 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 187 over it, 2.87\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":"java/lance-jni/src/transaction.rs"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"10380b468abcce82fcc2c03673e9e92168d45131f1e67b55e11b46d4c36d7f4f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: simd/dist_table.rs: FileTooLong \u2014 1415 significant 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 61 free functions. The bar is 500 significant lines; this is 915 over it, 2.83\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b6adba5ce5f5f54c1068cbbbd44a5a057e800714d1c8def591416c90808dd76"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::vector::build_distributed_vector_index: FunctionTooLong \u2014 lance::index::vector::build_distributed_vector_index runs 276 significant 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 176 over it, 2.76\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":793}}}],"partialFingerprints":{"codehealthFindingId/v1":"43f22f4bd1ae6f07d5bb7ea4f6893a2d36a309c38dd8fe7602868b24e18e0545"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inverted/documents.rs: FileTooLong \u2014 1372 significant 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 872 over it, 2.74\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":"rust/lance-index/src/scalar/inverted/documents.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1253b549a05f7dd23f882b5f75f48f3a399d762a971231de2326ee07222160f3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Transaction.try_from: MethodTooLong \u2014 try_from runs 270 significant 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 170 over it, 2.70\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":"rust/lance-table/src/transaction/proto.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c258a382d4f7f215f0fbde994beabba0b47242ea16a8d4505fcc832d42e8e96"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: v3/shuffler.rs: FileTooLong \u2014 1347 significant 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 847 over it, 2.69\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":"rust/lance-index/src/vector/v3/shuffler.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b8b163095210b927f1eb80ea3b79f36e259bc387b65f814e3dfbecc8eced2e2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: physical/rle.rs: FileTooLong \u2014 1338 significant 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 838 over it, 2.68\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":"rust/lance-encoding/src/encodings/physical/rle.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"211a637d8399883a36b056cc056b73bd988ec3b4f49bf1a2e6674079a9f85f23"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/data.rs: FileTooLong \u2014 1336 significant 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 836 over it, 2.67\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":"rust/lance-encoding/src/data.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5859f2131536001ccfe1861286f7bf33fbaab94194f9229b75e28d2f73ccbd21"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/namespace.rs: FileTooLong \u2014 1325 significant 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 825 over it, 2.65\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":"python/src/namespace.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e99b28999ad68f7a71bcd00214963c0d71bfbd2f043fe34a611ff8de2ab9eaa1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: vector/kmeans.rs: FileTooLong \u2014 1318 significant 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 818 over it, 2.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":"rust/lance-index/src/vector/kmeans.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d35ad91732c97b99164633f0772c0e54c41575c3a2a53b45682602bad601764a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scalar/bitmap.rs: FileTooLong \u2014 1313 significant 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 813 over it, 2.63\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":"rust/lance-index/src/scalar/bitmap.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d1ea6e27bdd77f461a9a5d89dd30d0e865a0c275ea8aad5cd6aeda4ab482ce9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scalar/zonemap.rs: FileTooLong \u2014 1302 significant 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 802 over it, 2.60\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":"rust/lance-index/src/scalar/zonemap.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca6e0fc0b12f4cce502a93f3c6d3f18ad0455a4fd8bfca35f9a770aac9ed58f9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::dataset::optimize::commit_compaction: FunctionTooLong \u2014 lance::dataset::optimize::commit_compaction runs 256 significant 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 156 over it, 2.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":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":3156}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a4ccc86e53bdd07d3738ec1bbf5080ae33e46db4f0f59f73d00b8e7e50a0fa2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 1272 significant 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 772 over it, 2.54\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/compression/bitpacking/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"93e4cb6c24c48464885216db4a6353d305fdfd06cd8ccd4bce809f831008589f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CompoundQueryExec.execute: MethodTooLong \u2014 execute runs 253 significant 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 153 over it, 2.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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"d02bba45c8d13fa2d17eb6d27b7c341a6edf4bd8aebeb7fc5a17f9276b4dfe6e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Wand.complete_maxscore_single_essential: MethodTooLong \u2014 complete_maxscore_single_essential runs 251 significant 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 151 over it, 2.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":"rust/lance-index/src/scalar/inverted/wand_maxscore.rs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5f588d66f896d5621c0377195d047549565210f23fca25088340e978d2c3bf8"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::dataset::optimize::rewrite_files: FunctionTooLong \u2014 lance::dataset::optimize::rewrite_files runs 251 significant 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 151 over it, 2.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":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":2443}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec5cd13cfb03b34dc6d20af19df2ab8d86478ff0388dd33394ed50f34095837d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FtsMemIndex: ClassTooLong \u2014 1003 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 50 methods, 3 blocks, lines 1190-2848. The bar is 400 significant lines; this is 603 over it, 2.51\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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":1190}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d94588b591da259a3e60d16368bb2c5047f5878e45c0f984fbf1ecf94c4d78"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: distributed/index_merger.rs: FileTooLong \u2014 1242 significant 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 742 over it, 2.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":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"36d6009564eee2124e41db00455dc72e4f7cb2f813c9ec71d9ee96df4a0e63e2"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: JavaLanceNamespace: ClassTooLong \u2014 981 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 11 methods, 5 blocks, lines 159-1520. The bar is 400 significant lines; this is 581 over it, 2.45\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":"java/lance-jni/src/namespace.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"11e53b64552a5e0d9a095db79a872753f2c458acdd8ecfb9a919dcb89c9cad4f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scalar/ngram.rs: FileTooLong \u2014 1226 significant 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 726 over it, 2.45\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/ngram.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"23dafa4afbbc5a664c1ad67a3270ffe01192ad7bac9b1000a9b46661f4776fd5"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TransactionRebase.check_create_index_txn: MethodTooLong \u2014 check_create_index_txn runs 245 significant 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 145 over it, 2.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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"83025051eefba9711a3893d986f664b1b2aa52ae24822a4899d55cdc9401a9c5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_index::scalar::inverted::cross_column::cross_column_compound_search: FunctionTooLong \u2014 lance_index::scalar::inverted::cross_column::cross_column_compound_search runs 244 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 144 over it, 2.44\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/cross_column.rs"},"region":{"startLine":1344}}}],"partialFingerprints":{"codehealthFindingId/v1":"f985dd42cac8188add85254099b84462a4ee81ce09d20ed9975175f557301ed6"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::frag_reuse::build_frag_reuse_rewrite_entry: FunctionTooLong \u2014 lance::index::frag_reuse::build_frag_reuse_rewrite_entry runs 243 significant 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 143 over it, 2.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":"rust/lance/src/index/frag_reuse.rs"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc91d719e31fd2ea234f158e52ab8a522236fbb665251637bb97ed5898c97f63"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inverted/cross_column.rs: FileTooLong \u2014 1209 significant 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 709 over it, 2.42\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":"rust/lance-index/src/scalar/inverted/cross_column.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7e14e927a2ae3c1377db5df1f3498a356b7b36c33b256a58a6e4c7011b06e8e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: io/commit.rs: FileTooLong \u2014 1199 significant 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 699 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":"rust/lance/src/io/commit.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c28d34753c9833f5897fb28b77f489406714c2326d737d211654e39a260ec90"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Dataset.open_vector_index_from_metadata: MethodTooLong \u2014 open_vector_index_from_metadata runs 239 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 139 over it, 2.39\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index.rs"},"region":{"startLine":3376}}}],"partialFingerprints":{"codehealthFindingId/v1":"7446e06507364ee775459b92a38373f7ec4813ea7984425aa74d5b74e3cee6af"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::vector::build_vector_index_impl: FunctionTooLong \u2014 lance::index::vector::build_vector_index_impl 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":"rust/lance/src/index/vector.rs"},"region":{"startLine":1201}}}],"partialFingerprints":{"codehealthFindingId/v1":"24c56a68b6e8f7a2c75de276e944f8a56c18df3f41ee82ded4922370f69ead55"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/partition.rs: FileTooLong \u2014 1168 significant 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 668 over it, 2.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":"rust/lance-index/src/scalar/inverted/index/partition.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"312ffa2abe57c2d388f50809e978dfe2d74f8c38d684b11fc171950ab5b68457"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PrimitiveStructuralEncoder.encode_dense_page: MethodTooLong \u2014 encode_dense_page runs 232 significant 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 132 over it, 2.32\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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":7170}}}],"partialFingerprints":{"codehealthFindingId/v1":"48923473a3d510f4155a0330eca49a2156a9f2eda0f8e8b22932f46550fb8dad"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/object_store.rs: FileTooLong \u2014 1149 significant 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: ObjectStore (6 blocks, 203-1876). The bar is 500 significant lines; this is 649 over it, 2.30\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":"rust/lance-io/src/object_store.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3babd06c84872ae5399551b4adaef77d3ed5603ecdd5d83423f4d0df41a35c30"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/mem_wal.rs: FileTooLong \u2014 1148 significant 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 87 free functions. The bar is 500 significant lines; this is 648 over it, 2.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":"java/lance-jni/src/mem_wal.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6931018ebfa5a340e447071bc7ea521e5fefe614b917f9f43b2a6f056c91a814"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: transaction/manifest_build.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), about 94% of them inside a single declaration: Transaction (125-1919). The bar is 500 significant lines; this is 622 over it, 2.24\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/manifest_build.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fbf7f8feca02924a66e6bb64c170a10d369c6244bcc825b8e62a06f49c3652e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dataset/cleanup.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), about 61% of them inside a single declaration: CleanupTask (2 blocks, 296-1409). The bar is 500 significant lines; this is 622 over it, 2.24\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c6182d0b634b9fdfd571ca963128093072d29a813df2a701d2c3f0495c6b065"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ManifestNamespace: TooManyMethods \u2014 66 methods. The bar is 30 methods; this is 36 over it, 2.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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":755}}}],"partialFingerprints":{"codehealthFindingId/v1":"17ad0dd8d48a413eba0df8c9ca79daab4d68e2e88304a7edb0d93b076e015183"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::vector::ivf::optimize_vector_indices_v2: FunctionTooLong \u2014 lance::index::vector::ivf::optimize_vector_indices_v2 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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"d56055755765d937590cff3181bebb1bdf55481bad6e68a9525b8ccad112590a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: hnsw/builder.rs: FileTooLong \u2014 1094 significant 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 594 over it, 2.19\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/hnsw/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d09b40df732a467321a34edd9cc33be2460d7148e01693a03574771fb20f459b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/rest.rs: FileTooLong \u2014 1091 significant 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: RestNamespace (5 blocks, 525-1657). The bar is 500 significant lines; this is 591 over it, 2.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":"rust/lance-namespace-impls/src/rest.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4fdff5dd202be40028fb25ba386c1ddf208d609bfb3539db4666e51cd15a28d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RestNamespace: ClassTooLong \u2014 868 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 11 methods, 5 blocks, lines 525-1657. The bar is 400 significant lines; this is 468 over it, 2.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":"rust/lance-namespace-impls/src/rest.rs"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"5acfd0c11e19617f0d644ca8fc8a5eaf0d464ded6bb733e44923d5da5f071222"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lance/Dataset.java: FileTooLong \u2014 1073 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 573 over it, 2.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":"java/src/main/java/org/lance/Dataset.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0e51396725a6a2500cb024c8932585d23f04294f8602d50fbd3e7a5e5123f5a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/append.rs: FileTooLong \u2014 1072 significant 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 572 over it, 2.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":"rust/lance/src/index/append.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f83aaad494c5192ca721072e20a998d3474cbff82135710ed00da2714de9c2c5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DirectoryNamespace: TooManyMethods \u2014 64 methods. The bar is 30 methods; this is 34 over it, 2.13\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":884}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2142523dd561f982dbc11c208f0e9be175231d2f1ec26a0d817f76efbf5f5b3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scalar/bloomfilter.rs: FileTooLong \u2014 1065 significant 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 565 over it, 2.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":"rust/lance-index/src/scalar/bloomfilter.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"58060211de7eb39b9e7ed1d4fd3e5b732ef6019508f6ec3cdf93f58251d9ab85"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::dataset::schema_evolution::alter_columns: FunctionTooLong \u2014 lance::dataset::schema_evolution::alter_columns runs 212 significant 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 112 over it, 2.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":"rust/lance/src/dataset/schema_evolution.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c1d210068fe19c300171afed9d1ffa2065b50347ee16e28497c8d0f10a93174"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MergeInsertJob.execute_uncommitted_impl: MethodTooLong \u2014 execute_uncommitted_impl 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":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":2726}}}],"partialFingerprints":{"codehealthFindingId/v1":"499edc2736af67b50d6761ebbae50b672d47f5c37c08a073bd9aca4eb80fc609"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::io::commit::commit_transaction: FunctionTooLong \u2014 lance::io::commit::commit_transaction 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":"rust/lance/src/io/commit.rs"},"region":{"startLine":1576}}}],"partialFingerprints":{"codehealthFindingId/v1":"430e570be606fa33cb4c3a0a15004fb9a9d6a05ba9cfecbe1fadcf212d2eb209"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DecodeSparseStructuralTask.validate_value_buffers: MethodTooLong \u2014 validate_value_buffers runs 208 significant 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 108 over it, 2.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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":3453}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6bbff91d7ba8bb7a18c99f2f89656edd7454ede03b37b5b20b918185aec6848"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FileReader: ClassTooLong \u2014 831 significant 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, 3 blocks, lines 452-2156. The bar is 400 significant lines; this is 431 over it, 2.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":"rust/lance-file/src/reader.rs"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"234938cf021e6ea6fbc9c675df87a4a790645275319d4c15c94ecf16909def64"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IvfIndexBuilder.merge_partitions: MethodTooLong \u2014 merge_partitions runs 207 significant 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 107 over it, 2.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":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":1597}}}],"partialFingerprints":{"codehealthFindingId/v1":"413f5b534c5824065b3cd0e4655f8c5be7a74c6df4598afc29d4b51d0f4f6ba0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Scanner.vector_search: MethodTooLong \u2014 vector_search 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":6102}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fa6e3c4ab0d1bebb0743a5e100b792e9e9638d9cfa30d6b08fa1ba1e2907956"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::dataset::optimize::binary_copy::rewrite_files_binary_copy: FunctionTooLong \u2014 lance::dataset::optimize::binary_copy::rewrite_files_binary_copy 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":"rust/lance/src/dataset/optimize/binary_copy.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"a86165e109f1fb4858352f30a0a7f72281316ecb227b8c4c3682f74063d696de"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::vector::build_vector_index_incremental: FunctionTooLong \u2014 lance::index::vector::build_vector_index_incremental 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":"rust/lance/src/index/vector.rs"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed06a86e6fb10019f61c73ed3e733c2696c06972cc0d0088885dc81f9abf06f0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IVFIndex.search_partitions: MethodTooLong \u2014 search_partitions 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":"rust/lance/src/index/vector/ivf/v2.rs"},"region":{"startLine":2318}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d72a6731273ab2463380cbbd9acc09e1b1ce4f5537aa6521603ba5218f0f51"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: pq/storage.rs: FileTooLong \u2014 1017 significant 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 517 over it, 2.03\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":"rust/lance-index/src/vector/pq/storage.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0a4609b9300f2a40138dc718c284ffe50a31d33fc7cac4e637553eebc9d1555"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: io/commit.rs: FileTooLong \u2014 1017 significant 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 517 over it, 2.03\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":"rust/lance-table/src/io/commit.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6162aee4953f4b5223ef57cb4ff2351f2a25e849a2507b8008e14423460e3816"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/rest_adapter.rs: FileTooLong \u2014 1016 significant 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 57 free functions. The bar is 500 significant lines; this is 516 over it, 2.03\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":"rust/lance-namespace-impls/src/rest_adapter.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3e0d01a4d080e3ea05aaee9ebfcea007ce3ba735e1228c0c4119659037a292c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PyLance.into_pyobject: MethodTooLong \u2014 into_pyobject runs 203 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 103 over it, 2.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/transaction.rs"},"region":{"startLine":659}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcbb3b850ad1ded0f77dd08854d6c74ad6d651c8ff48f0f013bcd944a583ad5a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Dataset.create_index: MethodTooLong \u2014 create_index runs 198 significant 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 98 over it, 1.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":"python/src/dataset.rs"},"region":{"startLine":2601}}}],"partialFingerprints":{"codehealthFindingId/v1":"e86c8570156d70e09722626c2ac10c3d806308e35236f249b89e10f4743316ce"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::io::commit::do_commit_new_dataset: FunctionTooLong \u2014 lance::io::commit::do_commit_new_dataset runs 197 significant 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 97 over it, 1.97\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":"rust/lance/src/io/commit.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"baeb9d7d5a4250b5db54b133efac4a5c9390f3ab721f77d3ff948c2d8fcac681"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Transaction.from: MethodTooLong \u2014 from runs 196 significant 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 96 over it, 1.96\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/proto.rs"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"542c1703d498ba53377fcee185f08b3e9f32a889d254138d7afe2c433d17e54c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 969 significant 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 469 over it, 1.94\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":"rust/lance-arrow/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"24411ee021c957f14bfbc794626d24389bdc55a5ad8003319453d0c32003f3b0"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FilteredReadStream: ClassTooLong \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), 21 methods, 3 blocks, lines 440-1725. The bar is 400 significant lines; this is 375 over it, 1.94\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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b1816f47ff6e80dd42f9583df01c9c5dc98d148f37103fdacb817ec8703ca3c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: datatypes/schema.rs: FileTooLong \u2014 968 significant 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 468 over it, 1.94\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":"rust/lance-core/src/datatypes/schema.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b34c8d8c387f04a8cea23a5dd0ca50829a5a3e4d20bb7a46f3db5fe7ff49c24a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::dataset::take::do_take_rows: FunctionTooLong \u2014 lance::dataset::take::do_take_rows 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":"rust/lance/src/dataset/take.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"6704bf9c45accb9d9049568c2eb1b74c2ec76b86a2b32ba7628b0ecd6583a358"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IvfIndexBuilder.build_partitions: MethodTooLong \u2014 build_partitions runs 192 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 92 over it, 1.92\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":999}}}],"partialFingerprints":{"codehealthFindingId/v1":"064b0a20e2680ab899045aa34d60478468a6e92c915b1a2fdb3bc55f0c423a59"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LanceStream.try_new_v2: MethodTooLong \u2014 try_new_v2 runs 191 significant 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 91 over it, 1.91\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/scan.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f28ec4c7c3c4f2eb6ef5af4aeebda9973cbf5524b91661ed506cfe0ac0ee087"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/search.rs: FileTooLong \u2014 950 significant 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: InvertedIndex (43-1304). The bar is 500 significant lines; this is 450 over it, 1.90\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":"rust/lance-index/src/scalar/inverted/index/search.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"79b5997325e2cf7d5a5e1cd9c77117c1a9cc7b9871305b65ac8c6ca9aa5f3047"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Planner.parse_sql_expr: MethodTooLong \u2014 parse_sql_expr runs 190 significant 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 90 over it, 1.90\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":"rust/lance-datafusion/src/planner.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"e997709a37736ca78e071f25f68ab84a4aa6bbce9705099792c3dec6e70a30ea"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_index::scalar::inverted::index::flat_search::tokenize_and_count: FunctionTooLong \u2014 lance_index::scalar::inverted::index::flat_search::tokenize_and_count 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":"rust/lance-index/src/scalar/inverted/index/flat_search.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e2b4e531deec21542dfe6733b59ac0d6db32b9db3cd61a28e744c9f58d7dfbb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/fsst.rs: FileTooLong \u2014 939 significant 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 439 over it, 1.88\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":"rust/compression/fsst/src/fsst.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d7c699e9bd2532031584cafc32edd04616bb0a7f0d32aabedddafe77b3758a0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/frag_reuse.rs: FileTooLong \u2014 937 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 437 over it, 1.87\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/frag_reuse.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cbbfa4b13e9b242e6e3456bb6f4ffb3c273662c0edb50ef187a5e3564666942"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CleanupTask.delete_unreferenced_files: MethodTooLong \u2014 delete_unreferenced_files runs 187 significant 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 87 over it, 1.87\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":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"3164713b916299237a19f9a3d6fe06a1180817835f1a0018195f75d8d90f437d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DirectoryNamespace: TooManyMethods \u2014 56 methods. The bar is 30 methods; this is 26 over it, 1.87\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":"python/python/lance/namespace.py"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"afab5d949562c560ba05894593b300921175e03ed9f52c2bb5df936c41dad4a6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RestNamespace: TooManyMethods \u2014 56 methods. The bar is 30 methods; this is 26 over it, 1.87\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":"python/python/lance/namespace.py"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"48b1667136ba44f6a7c75c7657682733d42c37b6d144a52c920b774203e7e33b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PyDirectoryNamespace: TooManyMethods \u2014 56 methods. The bar is 30 methods; this is 26 over it, 1.87\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":"python/src/namespace.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"7caf3f4cf725ab3eaf2e25880e2c4292ec2ddcdb3b3ad8ecc4526d2de24ee8a2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PyRestNamespace: TooManyMethods \u2014 56 methods. The bar is 30 methods; this is 26 over it, 1.87\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":"python/src/namespace.rs"},"region":{"startLine":823}}}],"partialFingerprints":{"codehealthFindingId/v1":"580aa53645042d1c7d5558d6bdc501788e8e3ab94c4adbfae13792c198390743"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FileFragment: TooManyMethods \u2014 56 methods. The bar is 30 methods; this is 26 over it, 1.87\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":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"be2117db737d62388aad180e5747a5de52fd49f623c74b83891fd16931c7e16d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Field: ClassTooLong \u2014 738 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 47 methods, 5 blocks, lines 137-1325. The bar is 400 significant lines; this is 338 over it, 1.85\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":"rust/lance-core/src/datatypes/field.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"656d8e36699bd431367f96fa59e986c3fb84382b3ca88251d75be444564b30e5"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PackedStructVariablePerValueDecompressor.decompress: MethodTooLong \u2014 decompress runs 184 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 84 over it, 1.84\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/packed.rs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"6574957ee28460a47705e464f3e18d0e1b4575f08378c191602df7dc1f807e84"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InvertedIndex: TooManyMethods \u2014 55 methods, declared across 2 files: index/search.rs (29), index/inverted_index.rs (26). The bar is 30 methods; this is 25 over it, 1.83\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":"rust/lance-index/src/scalar/inverted/index/inverted_index.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4fd33f6da89861c234c814afd2b73fa658d4df628e64cf2b6ea0ca6e3396730"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/compression.rs: FileTooLong \u2014 911 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 48 free functions. The bar is 500 significant lines; this is 411 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":"rust/lance-encoding/src/compression.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a1ffcbed85b0aea00495506a53eb96b1bdaaf7ab6e76d09f758f11b346cb3f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::vector::ivf::train_streaming_coreset_ivf_model: FunctionTooLong \u2014 lance::index::vector::ivf::train_streaming_coreset_ivf_model runs 181 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 81 over it, 1.81\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":4555}}}],"partialFingerprints":{"codehealthFindingId/v1":"28cb0f7d2af75898b3d1b4bb6bb9bb837efeb0bb5fcd2175c47077dcc11fd1d9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Wand: TooManyMethods \u2014 54 methods, declared across 2 files: inverted/wand.rs (52), inverted/wand_maxscore.rs (2). 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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":2396}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3dde6cad07a5ad349f11aeb3b11fa77bd761e32165e65bae997c3a21ba35c0b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RabitDistCalculator: ClassTooLong \u2014 718 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 16 methods, 3 blocks, lines 874-2050. The bar is 400 significant lines; this is 318 over it, 1.80\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":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":874}}}],"partialFingerprints":{"codehealthFindingId/v1":"44017f222b818364d35fea518e6d07c2cef3fc8c9c7fa75855f3a913e55c6602"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/fragment.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":"java/lance-jni/src/fragment.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"38b3b8697f396a36e78726feff47684f20e5068a9100bdc5a6836c755baec125"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ObjectStore: ClassTooLong \u2014 711 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 49 methods, 6 blocks, lines 203-1876. The bar is 400 significant lines; this is 311 over it, 1.78\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":"rust/lance-io/src/object_store.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"16aaabb374e2a68be772123bde75a1e4ed85e85ad19bcaf1ab60c78abd100142"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FilteredReadExec: ClassTooLong \u2014 710 significant 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, 4 blocks, lines 2039-3597. The bar is 400 significant lines; this is 310 over it, 1.78\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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":2039}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4da9134fc6f32b1dc6dff6a1b34b746ec5c7878ecff684cc3e94a576bb30e84"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: minhash_lsh/index.rs: FileTooLong \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), about 76% of them inside a single declaration: MinHashLshIndex (6 blocks, 103-1291). The bar is 500 significant lines; this is 386 over it, 1.77\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":"rust/lance-index/src/scalar/minhash_lsh/index.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"22eb7ecd3396f29ac031572fd6f5ea9971eb8a94d1235e02ec0719ed3770f6d7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: UpdateJob.execute_impl: MethodTooLong \u2014 execute_impl runs 177 significant 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 77 over it, 1.77\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/update.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3de8a3a87d546a24d20995fd28c6e444ccdb6c99c8d5d3844e036caaab274cf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scalar/rtree.rs: FileTooLong \u2014 884 significant 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 384 over it, 1.77\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":"rust/lance-index/src/scalar/rtree.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f13e17d4ddd076c09f55927450f2ee449427dc2b83c2038cdcaaaadf9ca3c4ee"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CommitBuilder.execute_inner: MethodTooLong \u2014 execute_inner runs 176 significant 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 76 over it, 1.76\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/commit.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dadd6b1f940029d82fa9a1f8996ad39309170abe863efec06e65c2b7fc3701c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: mem_wal/wal.rs: FileTooLong \u2014 878 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 378 over it, 1.76\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/wal.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dad4367f1c9849e44a86ccd2cac0b3680c7bcd0f124a0b8b9e010ea48f81372"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DirectoryNamespace.describe_table_impl: MethodTooLong \u2014 describe_table_impl 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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":2062}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9a0fa3b707666888a95d0d5a4e2c4c1915067702e69681152be7b75a8f0578f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: logical/list.rs: FileTooLong \u2014 872 significant 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 372 over it, 1.74\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":"rust/lance-encoding/src/array_encoding/logical/list.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0383e7a44514a005bb29fc83e052ccfa9743970c7793a8f9901ed593417b9f53"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InvertedIndex: ClassTooLong \u2014 692 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 55 methods, 8 blocks, lines 19-1010. The bar is 400 significant lines; this is 292 over it, 1.73\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/inverted_index.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e41fd2b9efa2a991ab6fde760411ca16ea8887dfbe3ea1a18aba67d04249900"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CleanupTask: ClassTooLong \u2014 687 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 12 methods, 2 blocks, lines 296-1409. The bar is 400 significant lines; this is 287 over it, 1.72\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"35b28a0f36cc584854b11efb82c2fe60f8514adb534d8fdde1470a035086856a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BTreeIndex: ClassTooLong \u2014 686 significant 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, 5 blocks, lines 1618-2790. The bar is 400 significant lines; this is 286 over it, 1.72\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":1618}}}],"partialFingerprints":{"codehealthFindingId/v1":"c37cafe8e14612d487e05e1206a25fca931a1ec726d01c92385173cba5a778ae"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Scanner.plan_compound_scorer: MethodTooLong \u2014 plan_compound_scorer runs 171 significant 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 71 over it, 1.71\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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":4837}}}],"partialFingerprints":{"codehealthFindingId/v1":"10dc45d756fd9d22547a35e700bc4897b4cde9f54776ce6443ae3f0e593ef2ab"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scanner/builder.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), about 67% of them inside a single declaration: MemTableScanner (2 blocks, 507-1578). The bar is 500 significant lines; this is 350 over it, 1.70\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":"rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ca260ce7b027f1580cf509b681eb83243bdfde923769521a1ae22f5d909154a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PyLance.extract: MethodTooLong \u2014 extract runs 170 significant 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 70 over it, 1.70\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":"python/src/transaction.rs"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"c133c523d9483389c3cb7e81099212886c0a8718b15b442cf8288cd8ae4cdbb4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BloomFilterProcessor.process_chunk: MethodTooLong \u2014 process_chunk runs 170 significant 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 70 over it, 1.70\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":"rust/lance-index/src/scalar/bloomfilter.rs"},"region":{"startLine":1126}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4d58de03785deee989b7828adce7ae9cba18adfb2b5d753e5239e01318b3622"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MemTableFlusher: ClassTooLong \u2014 679 significant 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 69-1191. The bar is 400 significant lines; this is 279 over it, 1.70\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":"rust/lance/src/dataset/mem_wal/memtable/flush.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d777706af405169edf062d3088750d2ee9ce86f2447263089f49be6b0d05435"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PostingListBuilder: ClassTooLong \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), 30 methods, 2 blocks, lines 7-850. The bar is 400 significant lines; this is 277 over it, 1.69\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":"rust/lance-index/src/scalar/inverted/index/posting_builder.rs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"da3f827fff0afc1991e5979bdbfebb0559d6fbdabc05d8dccae89dd68dcde2db"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IndexWorker.process_document: MethodTooLong \u2014 process_document runs 168 significant 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 68 over it, 1.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":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":1573}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fb8931425667052e46c87dadcfdc3919422f56e0778e2335a27129815ee9f2f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Scanner.plan_fts: MethodTooLong \u2014 plan_fts runs 168 significant 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 68 over it, 1.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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5079}}}],"partialFingerprints":{"codehealthFindingId/v1":"791d21378c7e9fc1ef316432c2062c19d164b532bfe9c80c8730ccb47469d132"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::vector::ivf::io::write_hnsw_quantization_index_partitions: FunctionTooLong \u2014 lance::index::vector::ivf::io::write_hnsw_quantization_index_partitions runs 168 significant 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 68 over it, 1.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":"rust/lance/src/index/vector/ivf/io.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"58b8fe5192492d991191015d2b29824f98d17eae93f6fea1b5d65477f6b370da"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: distance/cosine.rs: FileTooLong \u2014 838 significant 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 338 over it, 1.68\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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e72d99ce699904b50487441892ddf7efce1738296c0a14e50292b802a2608c8f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MinHashLshIndex: ClassTooLong \u2014 669 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 21 methods, 6 blocks, lines 103-1291. The bar is 400 significant lines; this is 269 over it, 1.67\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":"rust/lance-index/src/scalar/minhash_lsh/index.rs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e4e29be0bf86d713f1b75838ad0530e260939a64e046f7aa0b7c6496ab3f908"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InvertedIndex.bm25_search_modern_candidates: MethodTooLong \u2014 bm25_search_modern_candidates runs 167 significant 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 67 over it, 1.67\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/search.rs"},"region":{"startLine":1005}}}],"partialFingerprints":{"codehealthFindingId/v1":"85ca4c3746eaeacde443d7cab0a5797ba5a5d49be2a079d126874b464f7ce920"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FtsMemIndex: TooManyMethods \u2014 50 methods. The bar is 30 methods; this is 20 over it, 1.67\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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":1190}}}],"partialFingerprints":{"codehealthFindingId/v1":"8db74fead3bd8f72486d7040e1b4c8f23780084c1dc41fffd8e30ac23757a3e0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MemTableScanner: TooManyMethods \u2014 50 methods. The bar is 30 methods; this is 20 over it, 1.67\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":"rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"980f889d0683108e04ce74a3db46059d34433e465bf4b69a2bc26eba1f64fe80"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FullSchemaMergeInsertExec.execute: MethodTooLong \u2014 execute 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":"rust/lance/src/dataset/write/merge_insert/exec/write.rs"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"60a4ccc98f0ff3b282cbb6c0541894cee470b2c0faa66cf5c08c12e7535cf50c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/scheduler.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":"rust/lance-io/src/scheduler.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d95b9c24584ef6f35e9f58d0764e54ea7d133d581f266cd621251c1ff910cf3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/flat_search.rs: FileTooLong \u2014 823 significant 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 323 over it, 1.65\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":"rust/lance-index/src/scalar/inverted/index/flat_search.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0d37a44544586b0dbe96d001bfe2080ebaa148f0087bbc0a9e9103f34052d9d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: datatypes/field.rs: FileTooLong \u2014 817 significant 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: Field (5 blocks, 137-1325). The bar is 500 significant lines; this is 317 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":"rust/lance-core/src/datatypes/field.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d190df37172684ca3ad690c84ab8842fc6d71027225c11aa72cc3e659830291"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: versions/mod.rs: FileTooLong \u2014 817 significant 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 44 free functions. The bar is 500 significant lines; this is 317 over it, 1.63\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":"rust/lance/src/dataset/versions/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"100c873488d428e8d28ecf49b87277f111e963932aec03dc56ebd2cbf796f415"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SparseStructuralScheduler: 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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":1157}}}],"partialFingerprints":{"codehealthFindingId/v1":"146eed16ff93fe4fd82906ec1d0488de10d20d7b34276c7698825ed77641aaf3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FileReader: 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":"rust/lance-file/src/reader.rs"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"946e39555a001a411de9ad1ce8c122258dc1c3464538bb5a1995f904cc25d427"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PostingListReader: TooManyMethods \u2014 49 methods, declared across 2 files: index/posting_reader.rs (30), index/posting_prewarm.rs (19). The bar is 30 methods; this is 19 over it, 1.63\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":"rust/lance-index/src/scalar/inverted/index/posting_reader.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa474b0b999ea860f0771e1a3ca0df8ebaa32ad0deee9ad96532368d68d15147"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ObjectStore: TooManyMethods \u2014 49 methods, declared across 2 files: src/object_store.rs (47), object_store/read_dir.rs (2). The bar is 30 methods; this is 19 over it, 1.63\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":"rust/lance-io/src/object_store.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"947536c5656062e39363ec3e1ebadaf55fb9c97a970ccdbe280d3e5aed1d4889"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MemTable: 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":"rust/lance/src/dataset/mem_wal/memtable.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e8b37bb1989e6b7815025670cbe4398d939f09b1e529c859258a40b1411e2a9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: hnsw/graph.rs: FileTooLong \u2014 815 significant 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: HnswGraph (2 blocks, 305-1181). The bar is 500 significant lines; this is 315 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":"rust/lance/src/dataset/mem_wal/hnsw/graph.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"135244419087075afff6f9c9236e3a2ab585921f5d7d55de654a1cb9cefd5599"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ObjectStore.copy_via_stream: MethodTooLong \u2014 copy_via_stream 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":"rust/lance-io/src/object_store.rs"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"6371c9962f03139303182bb27e7f22dd01fb5deb03616303aaf5ca2946a2358a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MemTableFlusher.create_hnsw_index: MethodTooLong \u2014 create_hnsw_index runs 162 significant 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 62 over it, 1.62\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/memtable/flush.rs"},"region":{"startLine":929}}}],"partialFingerprints":{"codehealthFindingId/v1":"84a786f76844594ad56ba0b1da6cc7944c2bd82f2a28539af083a32a74b36d2a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TransactionRebase.check_rewrite_txn: MethodTooLong \u2014 check_rewrite_txn runs 162 significant 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 62 over it, 1.62\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":1234}}}],"partialFingerprints":{"codehealthFindingId/v1":"03b11e7302e34c0c9a5edfce9c8c7dbc0bd1781cf95c04adc35712bdfb2f7db9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scalar/inverted.rs: FileTooLong \u2014 809 significant 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 309 over it, 1.62\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/scalar/inverted.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"149881f6d51674dfcf8ebb78f0606dbcbc7c7d2d26c356060b54e969df62f299"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ZoneMapIndex.evaluate_zone_against_query: MethodTooLong \u2014 evaluate_zone_against_query runs 161 significant 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 61 over it, 1.61\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":"rust/lance-index/src/scalar/zonemap.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"b773d277cae6096df55b89ecb309ead507f00250dec42989315181981fa08551"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: KNNVectorDistanceExec: ClassTooLong \u2014 643 significant 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, 4 blocks, lines 237-1129. The bar is 400 significant lines; this is 243 over it, 1.61\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":"rust/lance/src/io/exec/knn.rs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa77ef2b7cbe13503ed14cb058bc17212914b15d39fb51d2dfa51c919871a32a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IvfIndexBuilder.build_fresh_partitions_windowed: MethodTooLong \u2014 build_fresh_partitions_windowed 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":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":1263}}}],"partialFingerprints":{"codehealthFindingId/v1":"994be892984ff4e31980b27ba11f002e163fc4d2982f2a2ed8ec9c9f7477468c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dataset/schema_evolution.rs: FileTooLong \u2014 789 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 289 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":"rust/lance/src/dataset/schema_evolution.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd97447303718a7f077e16da052297dd04d9e6657ec2c47e537d1d543b964b2"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CreateIndexBuilder: ClassTooLong \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), 14 methods, 3 blocks, lines 69-1077. The bar is 400 significant lines; this is 231 over it, 1.58\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":"rust/lance/src/index/create.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"302c9c928ad5a8c8e2ef60c17e40d1a8374a23e876fbc6f13afb469a5b24554f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BlobPreprocessor.logical_to_prepared_blob_array: MethodTooLong \u2014 logical_to_prepared_blob_array runs 157 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 57 over it, 1.57\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":1122}}}],"partialFingerprints":{"codehealthFindingId/v1":"a62ccad000ab5917efd93ba9df4fdb418e06e2d1fa90144fa3c801efaa2cfd60"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Field: TooManyMethods \u2014 47 methods. The bar is 30 methods; this is 17 over it, 1.57\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":"rust/lance-core/src/datatypes/field.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6d1a4971bb6fef2f151d14a6e197f9c7ce9455b121ea690f926affea7c3d3a8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/transaction.rs: FileTooLong \u2014 782 significant 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: PyLance (21 blocks, 26-1034). The bar is 500 significant lines; this is 282 over it, 1.56\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":"python/src/transaction.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"abc6d8d3f835f2274b3bdd440451cc3428256e27784180fcddbede25a1db91e9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_jni::utils::get_vector_index_params: FunctionTooLong \u2014 lance_jni::utils::get_vector_index_params 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":"java/lance-jni/src/utils.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"2733806068c54191fe187cf5691060d29e9716923a797cb4c91ed60285448429"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DirectoryNamespace.query_table: MethodTooLong \u2014 query_table 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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":5366}}}],"partialFingerprints":{"codehealthFindingId/v1":"25c80801fdb5913e7ecc8d0a796b2feaf01b7eefd46db4fbb1c048dfda90e42f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FullSchemaMergeInsertExec: ClassTooLong \u2014 620 significant 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, 4 blocks, lines 219-1149. The bar is 400 significant lines; this is 220 over it, 1.55\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":"rust/lance/src/dataset/write/merge_insert/exec/write.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"80a4037fd103a41cb5f85735df8b2b1d5289725ab0382f445b7ae14e98822bb5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scanner/fts_search.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 63% of them inside a single declaration: LsmFtsSearchPlanner (2 blocks, 515-1376). 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":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3673452add65d2ca6b7f14282a07eaef4d346a598c54fccd5456925bed461cc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_jni::blocking_scanner::build_scanner_with_options: FunctionTooLong \u2014 lance_jni::blocking_scanner::build_scanner_with_options runs 155 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 55 over it, 1.55\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/blocking_scanner.rs"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"f33cb8b7fa27331a41e7cfc89be6b6af443eb653d8389fdaee094b33d9cc09f3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TransactionRebase.try_new: MethodTooLong \u2014 try_new runs 155 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 55 over it, 1.55\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4d96d4b25830fc4cc076205ba8dd4eef5637f25b022e3a049bb035befba6d48"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/concat.rs: FileTooLong \u2014 773 significant 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 273 over it, 1.55\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":"rust/lance-file/src/concat.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ea67cec41f3e6f48f76bc8beb9696598a77948c3c44812e0aa4fd95c56b3879"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: vector/storage.rs: FileTooLong \u2014 773 significant 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 273 over it, 1.55\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":"rust/lance-index/src/vector/storage.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bae91b9e4d43a99287371d56d301f8d8051b10ec3dad0bbe7ac9a6c946401494"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DecodeSparseStructuralTask: ClassTooLong \u2014 618 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 10 methods, 3 blocks, lines 3245-4041. The bar is 400 significant lines; this is 218 over it, 1.55\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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":3245}}}],"partialFingerprints":{"codehealthFindingId/v1":"820ec384048e8ad2515308604a5c4091c9d52f2ef6aa0df617a997c3b65c9590"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/mem_wal.rs: FileTooLong \u2014 765 significant 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 265 over it, 1.53\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":"python/src/mem_wal.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbc7367789d3b1bd6e99769221373af3ac2f571edf44894442494b5773326c2f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RQTransformer.transform: MethodTooLong \u2014 transform runs 152 significant 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 52 over it, 1.52\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":"rust/lance-index/src/vector/bq/transform.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"163d5d0fdf1e645159136b5f1392980eddc9107fcc3ffc31751053a630833ceb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/create.rs: FileTooLong \u2014 758 significant 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: CreateIndexBuilder (3 blocks, 69-1077). The bar is 500 significant lines; this is 258 over it, 1.52\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":"rust/lance/src/index/create.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"337a954ee1d86fef62f67173f8cd0bbbaa6fa8e5260acf2b15cad96f6dc7b452"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scalar/json.rs: FileTooLong \u2014 756 significant 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 256 over it, 1.51\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":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e5fa1dd2e109692feb6aa658edfc244fd5716ec8dcff90deb3427618e432ea8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: memtable/flush.rs: FileTooLong \u2014 756 significant 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: MemTableFlusher (2 blocks, 69-1191). The bar is 500 significant lines; this is 256 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":"rust/lance/src/dataset/mem_wal/memtable/flush.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1104906a723fe535c58c7b2abfaaf34ae349b079e2c597e3f1c4eaf6e98c982a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CleanupTask.cleanup_file_if_not_referenced: MethodTooLong \u2014 cleanup_file_if_not_referenced 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":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":975}}}],"partialFingerprints":{"codehealthFindingId/v1":"584cf41c9bf6cf4a0ea5b58eae883d877fcae8ee2b9e9386b34f358de81ca1ee"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/planner.rs: FileTooLong \u2014 753 significant 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: Planner (2 blocks, 273-1120). The bar is 500 significant lines; this is 253 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":"rust/lance-datafusion/src/planner.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fc13f4fa116ba74ae802e612aa49012a1b4c1c8bb388189a977b26cac1e6c45"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: credentials/gcp.rs: FileTooLong \u2014 753 significant 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 253 over it, 1.51\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":"rust/lance-namespace-impls/src/credentials/gcp.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f8e0851f7f877a12f371b55d113b6aa1a313f205a608465d61f3b8d5af679d4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: exec/write.rs: FileTooLong \u2014 753 significant 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: FullSchemaMergeInsertExec (4 blocks, 219-1149). The bar is 500 significant lines; this is 253 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":"rust/lance/src/dataset/write/merge_insert/exec/write.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4655b4b0a8df05ddb1d94f372ea304f6f4c6706ba6952bfdbb0f4507ffb1fb13"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Dataset.commit_existing_index_segments: MethodTooLong \u2014 commit_existing_index_segments 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":"rust/lance/src/index.rs"},"region":{"startLine":2260}}}],"partialFingerprints":{"codehealthFindingId/v1":"5316f38c48ae8ab02dd2992d46950617f4ea8487576b8d3b647a06268bd4565f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_jni::blocking_dataset::inner_get_zonemap_stats: FunctionTooLong \u2014 lance_jni::blocking_dataset::inner_get_zonemap_stats runs 149 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":4127}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d73e1e02b6a8f175df271cf30ebaf28ec00a74691125d6c244ee49cd8a4b589"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CreateIndexBuilder.execute_multi_segment_fmindex: MethodTooLong \u2014 execute_multi_segment_fmindex runs 149 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/create.rs"},"region":{"startLine":726}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7e765903973f27c5b52a329a9722a827cff1bcd2ea3265bb6f426d301534529"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: HnswGraph: ClassTooLong \u2014 592 significant 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 305-1181. The bar is 400 significant lines; this is 192 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":"rust/lance/src/dataset/mem_wal/hnsw/graph.rs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2227662cf75cc1923dcb042678f7d2d5b8c503e08a0b3603358666aab553ddc"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RleEncoder: ClassTooLong \u2014 592 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 19 methods, 5 blocks, lines 330-1149. The bar is 400 significant lines; this is 192 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":"rust/lance-encoding/src/encodings/physical/rle.rs"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a7b9e57a745b56acf62c0cf909c1a1d179b0984898cd51accc58a42c689965c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ManifestNamespace.create_table: MethodTooLong \u2014 create_table 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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2950}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e88857834eb6ad39409cd0ace2c39824c3353d1e2f6c631052c9066d2a71f82"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Error: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\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":"rust/lance-core/src/error.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e02543c4a026804a0866b8c117d4b79bf09828fcb492070733ca99b7eff6dd0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: IndexStore: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\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":"rust/lance/src/dataset/mem_wal/index.rs"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6de267827a643aa342c6c29d2c01d79b67401e84110324627caf2324bead521"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/exec.rs: FileTooLong \u2014 733 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 233 over it, 1.47\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/exec.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"432fdbc13e8b99c85c840ff6271f83666d018b678e8520116628599e9f197dd0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: vector/utils.rs: FileTooLong \u2014 728 significant 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 228 over it, 1.46\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":"rust/lance/src/index/vector/utils.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bac91d3ca7c64695818b7f16943f52e78317df24c850771713ef9ae6fb6f93b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lance/fragment.py: FileTooLong \u2014 727 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 227 over it, 1.45\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/fragment.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d214f2a81d79f2a0449803a7b17dc3f84d868476248892276f1d0a91c5b5fb77"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/fragment.rs: FileTooLong \u2014 727 significant 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 227 over it, 1.45\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/fragment.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a0215423d713392a5dfca9de49c079af79e7c8a3215b112fd6fd5e1b40087be"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: object_store/throttle.rs: FileTooLong \u2014 727 significant 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 227 over it, 1.45\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/object_store/throttle.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8a08e2c41403eac9e86b37be6e104acf03881fbe4ece6fe45370907361f6e98"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::frag_reuse::validate_folded_deletions: FunctionTooLong \u2014 lance::index::frag_reuse::validate_folded_deletions 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":"rust/lance/src/index/frag_reuse.rs"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1a66fb1874f7e0673f28fd9d610199f3119fbe0974e81369c7d759113705ab5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: mem_wal/index.rs: FileTooLong \u2014 723 significant 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 64% of them inside a single declaration: IndexStore (4 blocks, 499-1341). The bar is 500 significant lines; this is 223 over it, 1.45\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":"rust/lance/src/dataset/mem_wal/index.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"115bebac44090b288b96eef4ac0ecf6f7a246622f439116d30e3c113a27bd12b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: KMeans: ClassTooLong \u2014 578 significant 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 831-1639. The bar is 400 significant lines; this is 178 over it, 1.45\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":"rust/lance-index/src/vector/kmeans.rs"},"region":{"startLine":831}}}],"partialFingerprints":{"codehealthFindingId/v1":"923d6642ecc37ae42fdee751f90a8fa5d4618422f16146ab24dc6d83cd67d460"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TransactionRebase.check_update_txn: MethodTooLong \u2014 check_update_txn 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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b62ef172756f8f897d54b9df51770604b15a5f39a55de8417049ab398f895c6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: HNSW: ClassTooLong \u2014 575 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 16 methods, 4 blocks, lines 202-1816. The bar is 400 significant lines; this is 175 over it, 1.44\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":"rust/lance-index/src/vector/hnsw/builder.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc921c9d2e9e674051608ba2513384580d730d63bfb4d3dca15af77211108d6c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: exec/scalar_index.rs: FileTooLong \u2014 718 significant 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 218 over it, 1.44\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/scalar_index.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cd2983e5d5a4e289ed9a770f66bdf547ae44c617ba31a5c236aaf1c9194751c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/blob.rs: FileTooLong \u2014 716 significant 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 216 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":"rust/lance/src/blob.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"44c2a684d9d17990950b78614188f255cc7db0cff70188236a8e27b9d932df7b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MemTableScanner: ClassTooLong \u2014 572 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 50 methods, 2 blocks, lines 507-1578. The bar is 400 significant lines; this is 172 over it, 1.43\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":"rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"23a442dbee2a3161ca4c4e47b1d2e258035db3089d828486ccf41393c4ee58fa"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: pylance::dataset::prepare_vector_index_params: FunctionTooLong \u2014 pylance::dataset::prepare_vector_index_params 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":"python/src/dataset.rs"},"region":{"startLine":5111}}}],"partialFingerprints":{"codehealthFindingId/v1":"309d99034e6ea5eff65a091fbc19ffc75f16d180ba772936a19f119005749882"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_table::utils::stream::wrap_with_row_id_and_delete_impl: FunctionTooLong \u2014 lance_table::utils::stream::wrap_with_row_id_and_delete_impl 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":"rust/lance-table/src/utils/stream.rs"},"region":{"startLine":669}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4ebc52644a4538cc9ab06402279c3652d26aefabba295c6af964571c59eca57"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FtsIndexExec.materialize_rows_sorted: MethodTooLong \u2014 materialize_rows_sorted 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/fts.rs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"d59e4f916abe6992dd69a97af81707022079e4389d491e2656411aedb3a2c105"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: commit/external_manifest.rs: FileTooLong \u2014 707 significant 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 60% of them inside a single declaration: ExternalManifestCommitHandler (4 blocks, 563-1149). The bar is 500 significant lines; this is 207 over it, 1.41\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":"rust/lance-table/src/io/commit/external_manifest.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fdb65b483d4039c552432f511432cc0a601d105c0e9bb899b7cee45c6981a55"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inverted/query.rs: FileTooLong \u2014 705 significant 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 205 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":"rust/lance-index/src/scalar/inverted/query.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e2c86d793deaebd77690e12b89ed2a8d2079fe37fa5beb13b8866bb3f3fc634"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::io::commit::do_commit_detached_transaction: FunctionTooLong \u2014 lance::io::commit::do_commit_detached_transaction 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":"rust/lance/src/io/commit.rs"},"region":{"startLine":1191}}}],"partialFingerprints":{"codehealthFindingId/v1":"f27a3d22023a00d630d7d65558a8aace6f5c636b09930410036d798b2e804280"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/inverted_index.rs: FileTooLong \u2014 703 significant 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: InvertedIndex (8 blocks, 19-1010). The bar is 500 significant lines; this is 203 over it, 1.41\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":"rust/lance-index/src/scalar/inverted/index/inverted_index.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3feafaf2565fdd709598f1074cd9959488955b7962bc2378836eb2d413632a49"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/file.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":"python/src/file.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"798163f1e7a69c4d6fa87a1d5c95dd59034f026958680d861141e37312fb44e7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/mask.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":"rust/lance-select/src/mask.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff1c549ec93c8a359f5ba4cfa6636a6afbd8094d9cf749e25ec3457880268e63"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dataset/refs.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":"rust/lance/src/dataset/refs.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab1424bf29ebb8cdc7b0fabcc3a10770f290ef5de52101b0b8ea61a78399e03d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: IvfIndexBuilder: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.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":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"73151fbcb01110c5a318fcddf8582b2c7e43d4469896427383b4e48ed76a4868"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BlobPreprocessor: ClassTooLong \u2014 560 significant 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, 2 blocks, lines 441-1334. The bar is 400 significant lines; this is 160 over it, 1.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":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"dabee7983bec7509aa8983ebc95e07816212369f6be97a4a940d12697d953937"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RabitQuantizationStorage: ClassTooLong \u2014 560 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 9 methods, 5 blocks, lines 481-2740. The bar is 400 significant lines; this is 160 over it, 1.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":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"647ec2ae4959d8daef0733add4a72726f39469f8398ee92dd9e91703f14de3cc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DecodeSparseStructuralTask.decode_value_chunk: MethodTooLong \u2014 decode_value_chunk runs 140 significant 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 40 over it, 1.40\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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":3736}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cccb8e0ebaebe2c8646c4d634d17179e700b8da8f7635d00e4c0c7d284157cf"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ANNIvfSubIndexExec.execute: MethodTooLong \u2014 execute runs 140 significant 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 40 over it, 1.40\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":"rust/lance/src/io/exec/knn.rs"},"region":{"startLine":2264}}}],"partialFingerprints":{"codehealthFindingId/v1":"24af07814d143f984f916943a48bdbaac2d58b1c90df9434a04ffea542382f78"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/posting_builder.rs: FileTooLong \u2014 697 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 97% of them inside a single declaration: PostingListBuilder (2 blocks, 7-850). The bar is 500 significant lines; this is 197 over it, 1.39\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":"rust/lance-index/src/scalar/inverted/index/posting_builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d18c4a7d32f7a86563f46bf9661ab086bd65f1839eb00fe80e4f1bcd36688694"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scalar/label_list.rs: FileTooLong \u2014 693 significant 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 193 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":"rust/lance-index/src/scalar/label_list.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"45acd6d1f9b942f0e552ad049b77ea3af362874a18f1c29dff7cf9190d8aba1c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Planner: ClassTooLong \u2014 554 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 27 methods, 2 blocks, lines 273-1120. The bar is 400 significant lines; this is 154 over it, 1.39\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/planner.rs"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"55deefefc22a69a4618e194c2580a8bd6ab85de8c9cec5c226af1fa91bac974e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/error.rs: FileTooLong \u2014 692 significant 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 79% of them inside a single declaration: Error (17 blocks, 159-1051). The bar is 500 significant lines; this is 192 over it, 1.38\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":"rust/lance-core/src/error.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cfe5c60613334e5724e17cf7ded3aa594078f3c6aaf5cca2497558a2248962f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: exec/utils.rs: FileTooLong \u2014 691 significant 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 191 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":"rust/lance/src/io/exec/utils.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"68dea51ac05802f8a208f603fd36fe5bd9937d0f434b887336e08d0f9bb99865"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_jni::blocking_dataset::convert_java_compaction_options_to_rust: FunctionTooLong \u2014 lance_jni::blocking_dataset::convert_java_compaction_options_to_rust 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":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":3498}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0eab06f88987becd95ba8fa4b0c6ae8351a7dc0db3d42250cbed1bad5b86aac"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: format/manifest.rs: FileTooLong \u2014 687 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 187 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":"rust/lance-table/src/format/manifest.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9714ec517259d61768b4c3ff310f51d9b9ae05ad69c50959330ee80a90fecfc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: simd/f32.rs: FileTooLong \u2014 686 significant 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 186 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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dab89fbeea8f77ef96a5223a9294b639d86144373c4be3d6743d0c00333a948"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inverted/tokenizer.rs: FileTooLong \u2014 685 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 61% of them inside a single declaration: InvertedIndexParams (5 blocks, 105-1196). The bar is 500 significant lines; this is 185 over it, 1.37\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":"rust/lance-index/src/scalar/inverted/tokenizer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4714f64df878bce23017fb476a17cc1aa3be99807b08fa671aa9dd80eda41e73"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BlobV2StructuralEncoder.maybe_encode: MethodTooLong \u2014 maybe_encode runs 137 significant 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 37 over it, 1.37\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":"rust/lance-encoding/src/encodings/logical/blob.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c70e42231f0c87fd9d85ff8aba005dad42672f00592d0d715b1f54caa0d4bfb"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_table::utils::stream::apply_row_id_and_deletes_with_system_columns: FunctionTooLong \u2014 lance_table::utils::stream::apply_row_id_and_deletes_with_system_columns runs 137 significant 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 37 over it, 1.37\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":"rust/lance-table/src/utils/stream.rs"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"be7bb44f6680063183dce140117c67b56d946402ebe9074067456168486ab770"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Error: ClassTooLong \u2014 547 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 44 methods, 17 blocks, lines 159-1051. The bar is 400 significant lines; this is 147 over it, 1.37\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/error.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"def600bf3e24d88312897dd7d4c361173167da27d9315067491fbf0a48fba4bd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Schema: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/datatypes/schema.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"46a794a5d50e8a3e59ab0dd4b3ffa9aed7849172fda019290a072bf6e8a431c2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InvertedIndexParams: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/tokenizer.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee28d1008a48c1ded12330a40725f31347ee14da07fd0a4f382818d5ea54fe50"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PostingIterator: TooManyMethods \u2014 41 methods, declared across 2 files: inverted/wand.rs (38), inverted/wand_maxscore.rs (3). The bar is 30 methods; this is 11 over it, 1.37\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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9a7ce0170af77e3b41c139385fd918eca20cfc67dea8e6383189964c220a4b6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: minhash_lsh/builder.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":"rust/lance-index/src/scalar/minhash_lsh/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f4c662892a98d31df784e4a335698c99c3ed77973cc931ddc79d30a0be18b3e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/btree.rs: FileTooLong \u2014 681 significant 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 181 over it, 1.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":"rust/lance/src/dataset/mem_wal/index/btree.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bd40f402fc004d6cd0aa4ffacb85452810a9f23639bf0e392a66e756316db99"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FileFragment.update_columns_with_offsets: MethodTooLong \u2014 update_columns_with_offsets runs 136 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 36 over it, 1.36\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":2393}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ba9ec99b6996ba05e2d0d83e0887f48f3993e035f02b290b19e080df30c36c6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AzureCredentialVendor: 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), 23 methods, 3 blocks, lines 221-978. 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":"rust/lance-namespace-impls/src/credentials/azure.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d4c44dba56adb73ec3169538a620d629fad20a053e360f00968452cc7f5749c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Scanner.plan_combined_fields_query: MethodTooLong \u2014 plan_combined_fields_query 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5784}}}],"partialFingerprints":{"codehealthFindingId/v1":"00b9437d9d2aa37d97bd7356fe8ee1fc4f9569cca9dbc47cc54fd3553fcf624c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: credentials/azure.rs: FileTooLong \u2014 671 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 81% of them inside a single declaration: AzureCredentialVendor (3 blocks, 221-978). The bar is 500 significant lines; this is 171 over it, 1.34\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/credentials/azure.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a588245d05c3986df76533d66fb8c297fdf9d37a44f48f9b33329fd8320e8c5f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/rowids.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":"rust/lance-table/src/rowids.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"601179212c709718d4516eba9d6d2aa1ffa3077e0567d2f85105d8c9d7f310c1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: bq/builder.rs: FileTooLong \u2014 667 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 69% of them inside a single declaration: RabitQuantizer (4 blocks, 59-887). The bar is 500 significant lines; this is 167 over it, 1.33\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":"rust/lance-index/src/vector/bq/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"50bf8e4ca13c63160f664cd5bb294131d601ff587a46f5dc30d8de5bd9ea7eef"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Scanner.create_plan_impl: MethodTooLong \u2014 create_plan_impl runs 133 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 33 over it, 1.33\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":3271}}}],"partialFingerprints":{"codehealthFindingId/v1":"96a497c89f779d9ef8b0f926735faa6eddc9ff7351ce9e679138c260ae721ed6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PyDirectoryNamespace: 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), 56 methods, 2 blocks, lines 120-819. 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":"python/src/namespace.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"65322eec5532fa4ae37f2eaaf690da3719686348e1799e760ffab168f090e4bc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: transaction/conflicts.rs: FileTooLong \u2014 661 significant 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 100% of them inside a single declaration: Operation (2 blocks, 18-990). The bar is 500 significant lines; this is 161 over it, 1.32\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":"rust/lance-table/src/transaction/conflicts.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0c2f4445c6fd69d877e62bd9d5af0cac4dfbcf6ed72a242ebd3609de9fa4d42"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inverted/encoding.rs: FileTooLong \u2014 660 significant 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 160 over it, 1.32\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":"rust/lance-index/src/scalar/inverted/encoding.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"35bce077823ca7af27dce89deb989a945763d9916c3eb8261243fa598e56a071"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Scanner.plan_phrase_query: MethodTooLong \u2014 plan_phrase_query runs 132 significant 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 32 over it, 1.32\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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5316}}}],"partialFingerprints":{"codehealthFindingId/v1":"068a3b6bca219fbbc865d4f5a0b4972218dc0185f76560d2b52c35e1f609085e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::vector::ivf::write_root_vector_index_from_auxiliary: FunctionTooLong \u2014 lance::index::vector::ivf::write_root_vector_index_from_auxiliary runs 132 significant 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 32 over it, 1.32\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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":2678}}}],"partialFingerprints":{"codehealthFindingId/v1":"4315033aa10b184d88d3bc1ff94248d32b08e5af2b095663fe8498986026f369"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PyRestNamespace: ClassTooLong \u2014 527 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 56 methods, 2 blocks, lines 823-1519. The bar is 400 significant lines; this is 127 over it, 1.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":"python/src/namespace.rs"},"region":{"startLine":823}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbfc0c0f76079a0919ce51eb27aadb5f401ef2fd0e0bc0a0ced2205121ffd11d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: writer/structural.rs: FileTooLong \u2014 656 significant 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 156 over it, 1.31\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/writer/structural.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f02853cd8de8cb65d526cb28a46113f7d24ca41a61315397ec5fee7c5ba02c89"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: physical/packed.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":"rust/lance-encoding/src/encodings/physical/packed.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bdd89be77f1cfe99267ce5aa87eebb5d343d24a40906377d54a06ab5851108d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_jni::blocking_dataset::inner_create_index: FunctionTooLong \u2014 lance_jni::blocking_dataset::inner_create_index 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":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":1148}}}],"partialFingerprints":{"codehealthFindingId/v1":"9994068e2bb4e2dfc33b535559da943e1c88da5321b065cb930fbf702e6349b8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DirectoryNamespace.alter_transaction: MethodTooLong \u2014 alter_transaction 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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":4523}}}],"partialFingerprints":{"codehealthFindingId/v1":"1289affec48d32844183e8d028addcfd0a4fc2d7850f3716d3ebd1fd1821b005"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: bq/pairwise.rs: FileTooLong \u2014 648 significant 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 148 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":"rust/lance-index/src/vector/bq/pairwise.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d1affa07d15afd3052fbc2794ddf0ff52ebc9f41adda1dd3ba0a6daec1c4930"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lance/namespace.py: FileTooLong \u2014 647 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 147 over it, 1.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":"python/python/lance/namespace.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb5e3b60d24a333d78d3b0a38471f64fadc54c3d09661ca2c02a312bd2141355"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: distance/hamming.rs: FileTooLong \u2014 647 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 147 over it, 1.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":"rust/lance-linalg/src/distance/hamming.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c84237f5c25ee4f28387ee6d338c5d88f6cceb403d6a6f484ee12c6345a1e976"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ZoneMapIndex: ClassTooLong \u2014 517 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 13 methods, 7 blocks, lines 110-929. The bar is 400 significant lines; this is 117 over it, 1.29\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/zonemap.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dd4965c34e0db56fe270c2ab7e693f64f5edef64fb06d93a3f411b2986d43f2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: pylance::dataset::get_write_params: FunctionTooLong \u2014 pylance::dataset::get_write_params 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":"python/src/dataset.rs"},"region":{"startLine":4901}}}],"partialFingerprints":{"codehealthFindingId/v1":"34a228ad81d68b41d7adc64dd3889b6353264b447129a697e44f110be36cb395"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_namespace::schema::arrow_type_to_json: FunctionTooLong \u2014 lance_namespace::schema::arrow_type_to_json 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":"rust/lance-namespace/src/schema.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4cf4609738cf891025a60588f50cbd2f32714cd538d92d314660d3156b3e9df"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::prewarm_index_segments_by_metadata: FunctionTooLong \u2014 lance::index::prewarm_index_segments_by_metadata 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":"rust/lance/src/index.rs"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"620196a2b30b68ab48e1d7ab6e0f193c6c94a96bd7116299af2e170e9033f29c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::io::exec::count_pushdown::try_rewrite: FunctionTooLong \u2014 lance::io::exec::count_pushdown::try_rewrite 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":"rust/lance/src/io/exec/count_pushdown.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5481a6be67d46f4ed15383a6789f80e318a657164093841f7dd2c96392d867f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PostingListReader: ClassTooLong \u2014 510 significant 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, 4 blocks, lines 83-856. The bar is 400 significant lines; this is 110 over it, 1.28\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":"rust/lance-index/src/scalar/inverted/index/posting_reader.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ff65066e9aeaaf8e7c9c8ff181a44a9528eabd6044f4e4fb339d90cf9ca4d01"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: fsst::fsst::build_symbol_table: FunctionTooLong \u2014 fsst::fsst::build_symbol_table 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":"rust/compression/fsst/src/fsst.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d390b5e7d906f18f23864743cdde5db09f4fe765d673f9ad3be52b5ee5d48b2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SerializerContext.normalize_specials_and_plan_splits: MethodTooLong \u2014 normalize_specials_and_plan_splits 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":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"d227bde5847e48e1b56c19c6f2cfb3f32f61bc990d8ae917da1c71444b93af80"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InvertedIndex.bm25_search_legacy: MethodTooLong \u2014 bm25_search_legacy 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":"rust/lance-index/src/scalar/inverted/index/search.rs"},"region":{"startLine":765}}}],"partialFingerprints":{"codehealthFindingId/v1":"1841043d22a7c7bbb48954e0501e1b02ef3cd8b32a2d084a66c9e57d78aefcda"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DefaultCompactionPlanner.plan: MethodTooLong \u2014 plan 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":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a3eeb731a7a2a6e02266e7bfdd45f4bc963bbcc845dafab07481c2795a29b77"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: Scanner: TooManyFields \u2014 38 stored fields beside 161 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"e88f0f18edebed51bde63611459ed4dead226044f643aeafeb6e19749692811b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/scalar.rs: FileTooLong \u2014 633 significant 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 133 over it, 1.27\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/scalar.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"425ef7e2a17d93914e44a51ec71ab32571151a9f173a8ca3a06888acf6b267f2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: sparse/writer.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":"rust/lance-encoding/src/encodings/logical/primitive/sparse/writer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd7b3967ef62f4c0183dee051039e906544d6b58c3086d84a08fc79fe6d08583"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PQDistCalculator.accumulate_topk_with_scratch: MethodTooLong \u2014 accumulate_topk_with_scratch 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":"rust/lance-index/src/vector/pq/storage.rs"},"region":{"startLine":982}}}],"partialFingerprints":{"codehealthFindingId/v1":"78d7ee6aa5bf3f6289bde76a9f6748c4231c6820699b3424c798f50a96f5369a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RowIdSequence.mask_to_offset_ranges: MethodTooLong \u2014 mask_to_offset_ranges 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":"rust/lance-table/src/rowids.rs"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"54587e671e62cd34247cf70084c46ce69085983fbc198d1b9a0cd4084e7777a7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::dataset::rowids::spill::read_spilled_column: FunctionTooLong \u2014 lance::dataset::rowids::spill::read_spilled_column 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":"rust/lance/src/dataset/rowids/spill.rs"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee9566c5ee7b3190af4c7dc61661459605ed36fd97582957469dd8842050ef7e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Scanner.plan_match_query: MethodTooLong \u2014 plan_match_query 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5480}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b1870d8ca7dd726b92905ea68f7a765d51a0d6e89d3646beff66bbf05b2f968"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ANNIvfSubIndexExec: 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), 11 methods, 5 blocks, lines 1547-2486. 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":"rust/lance/src/io/exec/knn.rs"},"region":{"startLine":1547}}}],"partialFingerprints":{"codehealthFindingId/v1":"8830f3d4dbae8c8cc9c0071cfcbfbd6388f2d232913a2dda356247d40aa47f40"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: transaction/proto.rs: FileTooLong \u2014 628 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 75% of them inside a single declaration: Transaction (3 blocks, 83-806). The bar is 500 significant lines; this is 128 over it, 1.26\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":"rust/lance-table/src/transaction/proto.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3112bbdd41fd1c19362bff77c2fe301b9bd66b7ea19ddd682623889c476fc4a1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ANNIvfBatchExec.execute: MethodTooLong \u2014 execute 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":"rust/lance/src/io/exec/knn.rs"},"region":{"startLine":2690}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5e2ac60c636768b4ebeddf53eaa59047497a4c49d4f5e9938bc54ae65e0dfe4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/blocking_scanner.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). The bar is 500 significant lines; this is 124 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":"java/lance-jni/src/blocking_scanner.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7cbeafc0a7c35c01c1cbdecf1f8452bb288d4c9c52979622a33d8bd1b0418d8"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ScanOptions: ClassTooLong \u2014 497 significant lines (blank, comment-only and punctuation-only lines excluded), 32 methods. The bar is 400 significant lines; this is 97 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":"java/src/main/java/org/lance/ipc/ScanOptions.java"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"06a36e14bf5b6f3ce0a4cc7c91f56c76f281bf0a208e1399cf194c5a45ca64c8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scanner/point_lookup.rs: FileTooLong \u2014 619 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 65% of them inside a single declaration: LsmPointLookupPlanner (2 blocks, 84-807). The bar is 500 significant lines; this is 119 over it, 1.24\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"37648ec11f6440ea2f265bc68e22ce2f8fbc2c07c3a5c7a1bc809d156a6859fd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MergeInsertParams: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/merge/MergeInsertParams.java"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b237dc71506f6a70327f1acb0e02f89d519c5063b4665d54f217382d70f9aad"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BatchStore: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/memtable/batch_store.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c7195fb0cd81bc2edf3f91888dafe8119cd88ee718ccfa33f15a52e5a0c53a8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RQPairScorer.stage: MethodTooLong \u2014 stage 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":"rust/lance-index/src/vector/bq/pairwise.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c74d12d96b9998a879b4095815295871c1633531aeeff1f22bc6068969a7842"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::dataset::optimize::descriptor_to_logical_blob_array: FunctionTooLong \u2014 lance::dataset::optimize::descriptor_to_logical_blob_array 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":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":1448}}}],"partialFingerprints":{"codehealthFindingId/v1":"8702d8c2814e399d54773ee202e86e7e3c244a6d94ffbc305e7e98645d97a157"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::append::merge_scalar_indices: FunctionTooLong \u2014 lance::index::append::merge_scalar_indices 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":"rust/lance/src/index/append.rs"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"f579860b4a3a3214bf88b0db5378fc954c4518be5164655184988f7bddd183e3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LsmFtsSearchPlanner: ClassTooLong \u2014 491 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 16 methods, 2 blocks, lines 515-1376. The bar is 400 significant lines; this is 91 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b4527805a074eaa0adcd399988f04196cbbcd3df1ee83105e508823a4ec2557"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: writer/statistics.rs: FileTooLong \u2014 611 significant 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 111 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":"rust/lance-file/src/versions/v1/writer/statistics.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d0b061dfdbd239ccec6bad76cec18b19fed510329ad921e150dde84718a5a28"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: distance/l2.rs: FileTooLong \u2014 611 significant 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 111 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":"rust/lance-linalg/src/distance/l2.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"97b5d498c23218bbcbe1e0ced96626532934dcb3c7b15a12e3cad7946dc94c1e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: NGramIndexBuilder: 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), 22 methods, 2 blocks, lines 1041-1741. 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":"rust/lance-index/src/scalar/ngram.rs"},"region":{"startLine":1041}}}],"partialFingerprints":{"codehealthFindingId/v1":"71dfb7e84c8d67909d7cdfe1ce9e306a9bfcbf1cb3ade95a88b81981f2450a64"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_index::scalar::inverted::cross_column::score_cross_column_sources: FunctionTooLong \u2014 lance_index::scalar::inverted::cross_column::score_cross_column_sources 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":"rust/lance-index/src/scalar/inverted/cross_column.rs"},"region":{"startLine":1167}}}],"partialFingerprints":{"codehealthFindingId/v1":"b59455c5b105520317f3da14327a62c1b2511078f871561c5559c974a0830e15"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InvertedIndexBuilder: ClassTooLong \u2014 487 significant 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, 3 blocks, lines 150-823. The bar is 400 significant lines; this is 87 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":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"723908458ab249cb6e98eb85bdc5d350b069e9461b28605de907414b420f2428"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: fsst::fsst::decompress_bulk: FunctionTooLong \u2014 fsst::fsst::decompress_bulk 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":"rust/compression/fsst/src/fsst.rs"},"region":{"startLine":926}}}],"partialFingerprints":{"codehealthFindingId/v1":"b58e76fcabb21c1675c75a23314f46464724d025493a6b067c218923a9560466"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::dataset::schema_evolution::add_columns_to_fragments: FunctionTooLong \u2014 lance::dataset::schema_evolution::add_columns_to_fragments 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":"rust/lance/src/dataset/schema_evolution.rs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"9581999cea922ebf7c640430666f567c5952948472b635eb8b57353a97eff966"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: v2_0/writer.rs: FileTooLong \u2014 601 significant 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: Writer (2 blocks, 154-850). The bar is 500 significant lines; this is 101 over it, 1.20\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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0217bd6043efa3ae1b718b45127927caa9cded5d7c8e875d29f3c5649fd8778e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BlockingDataset: 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":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"34b6a272fadcd404569ac59b8b269e56476be8102babeed14997303e6d70fea1"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_arrow::merge_with_schema: FunctionTooLong \u2014 lance_arrow::merge_with_schema 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":"rust/lance-arrow/src/lib.rs"},"region":{"startLine":1334}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbe2a09c95deda4b241061081ca6845880703e09046705569d84b8a11a40920d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DecodeMiniBlockTask.map_range: MethodTooLong \u2014 map_range 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"a56d011754fd5b99ad677b87bb6ced369424d90252669d100b533b1a2dbe064b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FlatCombinedFieldsExec.execute: MethodTooLong \u2014 execute 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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":4643}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e68eaa5ba00556ed3ec8f95c19516a01698162c907451827f9c5cf758b10cce"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ivf/shuffler.rs: FileTooLong \u2014 599 significant 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 99 over it, 1.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":"rust/lance-index/src/vector/ivf/shuffler.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"691caca7168e30a2d00d0c9b218a094547b216b7ccbec2e1d78991a68cabd96e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: array_encoding/strategy.rs: FileTooLong \u2014 596 significant 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 64% of them inside a single declaration: ArrayFieldEncodingStrategy (4 blocks, 52-625). The bar is 500 significant lines; this is 96 over it, 1.19\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":"rust/lance-encoding/src/array_encoding/strategy.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"13fc7aef945f7d6573b1d6f84ac76c1dbb63ba896438a96522a3f546ce15ccde"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: utils/stream.rs: FileTooLong \u2014 596 significant 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 96 over it, 1.19\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/utils/stream.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"10cb7311a89f50ded33c3faca223e4f18006f31b5150351849226a51910fa9af"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: exec/scan.rs: FileTooLong \u2014 596 significant 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 96 over it, 1.19\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/scan.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"98c3f7157aabfc8cdf2ee9561a58b3d257fa694c70b0cc865ce39883ac76dda4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_index::scalar::fmindex::write_partitioned_fmindex_stream_with_config: FunctionTooLong \u2014 lance_index::scalar::fmindex::write_partitioned_fmindex_stream_with_config 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":"rust/lance-index/src/scalar/fmindex.rs"},"region":{"startLine":1734}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2aa111ba6b737ddfce4862c9a771c45a61081f5dc39bd3c21de54ebc8edaab6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DatasetBuilder: ClassTooLong \u2014 474 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 32 methods, 4 blocks, lines 37-942. The bar is 400 significant lines; this is 74 over it, 1.19\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":"rust/lance/src/dataset/builder.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebe1bee71b2979d5cc942b08759706494df3eefe06b6ef6b1e7562b6f59dd4ae"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ProductQuantizationStorage: ClassTooLong \u2014 472 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 10 methods, 6 blocks, lines 169-844. The bar is 400 significant lines; this is 72 over it, 1.18\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":"rust/lance-index/src/vector/pq/storage.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"3483688ec2354b10e4d6d12bdbd8600ded6444cb7e21b15a119fddc4a3f46637"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ManifestNamespace.rewrite_manifest: MethodTooLong \u2014 rewrite_manifest 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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":1940}}}],"partialFingerprints":{"codehealthFindingId/v1":"e226aba445c311dd51c2b0a6a5f532bae6212f5f30ea2fdf4f8b6622da676422"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_table::transaction::row_version::resolve_update_version_metadata: FunctionTooLong \u2014 lance_table::transaction::row_version::resolve_update_version_metadata 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":"rust/lance-table/src/transaction/row_version.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8f6102ba23b0e8ebccac4b6ffa157e4c54e28b441dcc44780416bb47ea9c3f4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Dataset.create_data_file: MethodTooLong \u2014 create_data_file 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":"rust/lance/src/dataset.rs"},"region":{"startLine":2262}}}],"partialFingerprints":{"codehealthFindingId/v1":"d228821416aa2fa7dba1a288340594f904a5180704d392cb5998259c4200af2f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FileFragment.validate: MethodTooLong \u2014 validate 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":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":1765}}}],"partialFingerprints":{"codehealthFindingId/v1":"f52d4137ba56357efc4305c4cc2e6970d0b23a152bf00edd0456a6b7d268809e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::vector::ivf::optimize_ivf_hnsw_indices: FunctionTooLong \u2014 lance::index::vector::ivf::optimize_ivf_hnsw_indices 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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":1117}}}],"partialFingerprints":{"codehealthFindingId/v1":"550b91b7638bebcfc760858f992a54d7fb369f12ac63f8d4be68f7d8d153591f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CrossColumnCompoundQueryExec.execute: MethodTooLong \u2014 execute 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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":1976}}}],"partialFingerprints":{"codehealthFindingId/v1":"59537439e759dbb00c62ef089abb6ce38b2dfa72e770af5c2c1af0fb03dddf2a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/posting_prewarm.rs: FileTooLong \u2014 589 significant 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: PostingListReader (6-831). The bar is 500 significant lines; this is 89 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":"rust/lance-index/src/scalar/inverted/index/posting_prewarm.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a38f90dc58add9cb3b92ce7a7448cc74834604d3b9e2c4b646c3ab720da2046e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_encoding::encodings::logical::primitive::sparse::slice_sparse_plan: FunctionTooLong \u2014 lance_encoding::encodings::logical::primitive::sparse::slice_sparse_plan runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":4527}}}],"partialFingerprints":{"codehealthFindingId/v1":"102223907a5cf4e4f72ab6eb9683b7804e310366845eedb367773aaa511a7129"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FileFragment.open_current_file_reader: MethodTooLong \u2014 open_current_file_reader runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":1404}}}],"partialFingerprints":{"codehealthFindingId/v1":"64e9d6176162e6a1cbf56233d93a624586a837d6d51a4396238fdf5d4d1a81e6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LsmFtsSearchPlanner.build_source_plan: MethodTooLong \u2014 build_source_plan runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3e274533121ade2d94e7b01ec46836d02e4f06cdb800ff817e7c259a5164c87"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::remap_index: FunctionTooLong \u2014 lance::index::remap_index runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index.rs"},"region":{"startLine":1328}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ac539aa5c4b0fc4808db964e9f73be18f71a6b6448520b59560e0d371368139"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::vector::ivf::train_weighted_hierarchical_f32_kmeans: FunctionTooLong \u2014 lance::index::vector::ivf::train_weighted_hierarchical_f32_kmeans runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":4376}}}],"partialFingerprints":{"codehealthFindingId/v1":"78a875cf5c9d7e30c4b25ed9723434006ba2bfc23b2848f33ef19813fd8f6132"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IVFIndex.try_new: MethodTooLong \u2014 try_new runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf/v2.rs"},"region":{"startLine":1521}}}],"partialFingerprints":{"codehealthFindingId/v1":"910e5e18e070acaaa99ec30bccc75ec4778f1ec92ab257f6874dfaeff5088559"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IVFIndex.search_partitions_batch: MethodTooLong \u2014 search_partitions_batch runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf/v2.rs"},"region":{"startLine":2644}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7563ab122266d0353d851cef7edced760217c0a84a220b379e17a8c2d343ad9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: rowids/segment.rs: FileTooLong \u2014 584 significant 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: U64Segment (5 blocks, 41-747). The bar is 500 significant lines; this is 84 over it, 1.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":"rust/lance-table/src/rowids/segment.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"35c89b0a74bc29b4f5d12e9f13ca7b44d7461077baa2954a645a909fc49f02d3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PyBitmap: 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":"python/src/bitmap.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6a23397baef4325d58f3b430f5a91ec4974c0feb0f588a3ad7c05e86e9ef7ae"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DocSet: 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":"rust/lance-index/src/scalar/inverted/index/doc_set.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"99f808dfe02c0fe03dd08c9e063e569aa4d1ac543eb363a6b19a82e4ec27261d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/indices.rs: FileTooLong \u2014 582 significant 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 82 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":"python/src/indices.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f40fc6f9e8a0544e33fb9c9873f3ff9c17575c78a95d5466d47df3d8409fd83"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/posting_reader.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), about 88% of them inside a single declaration: PostingListReader (4 blocks, 83-856). The bar is 500 significant lines; this is 80 over it, 1.16\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":"rust/lance-index/src/scalar/inverted/index/posting_reader.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"afc5be519ab0e4d0fcbe76a67434104ab4268d54bf42aff9bbafbb84dfe53884"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: U64Segment.with_new_high: MethodTooLong \u2014 with_new_high 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":"rust/lance-table/src/rowids/segment.rs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"b881088f7d0c199b46fd2974d557878fff38fcbd0ce2e769f8ac2402a8799e1c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: IndexStore: ClassTooLong \u2014 460 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 44 methods, 4 blocks, lines 499-1341. The bar is 400 significant lines; this is 60 over it, 1.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":"rust/lance/src/dataset/mem_wal/index.rs"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc2d9d861d940c96901427ecd1cba1e6f0732a5eee40bb330e85236364c0ca16"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_jni::blocking_scanner::build_full_text_search_query: FunctionTooLong \u2014 lance_jni::blocking_scanner::build_full_text_search_query 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":"java/lance-jni/src/blocking_scanner.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9f1537678797844c974cf30be763b5b51a79431433d5787c6f3d707b8e38f57"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CompoundScorerPlan.analyze_node: MethodTooLong \u2014 analyze_node 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":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"f64ff27d7323d76225debfd8f0bef138bef8c4276ae7ec41b7f386912b9a2f91"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FtsMemIndex.to_index_builder: MethodTooLong \u2014 to_index_builder 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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":2689}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9016277c2eef531580b3a89ba891e2b843f0a5c47a8cd9bff871c8f4f7d7362"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FilteredReadExec.try_new_row_stream: MethodTooLong \u2014 try_new_row_stream 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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":2194}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcc075f9c15f0851ad968b7178d8b5cb8ef3bde5a527c7de093a7117471f1809"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RabitQuantizer: ClassTooLong \u2014 458 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 17 methods, 4 blocks, lines 59-887. The bar is 400 significant lines; this is 58 over it, 1.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":"rust/lance-index/src/vector/bq/builder.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e7089c0e0cc12c46b7e28a9e7f313ec246c2fedc00fabfb968b95e57cc2a6f7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: bq/ex_dot.rs: FileTooLong \u2014 571 significant 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 47 free functions. The bar is 500 significant lines; this is 71 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":"rust/lance-index/src/vector/bq/ex_dot.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b500e40cedf0f456912791d2e5f2cc14e589c538c2f325711718d1224a9ccda4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_encoding::encodings::logical::primitive::dict::dictionary_encode: FunctionTooLong \u2014 lance_encoding::encodings::logical::primitive::dict::dictionary_encode 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":"rust/lance-encoding/src/encodings/logical/primitive/dict.rs"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"14c0116ab83d85b3ef898877f4d9ff1456ee861db88fd467805999fd41cb5983"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Scanner.minhash: MethodTooLong \u2014 minhash 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":4049}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a83024bf5549ffe38cc7146f4772c2dc3d1b86045e859bffc60e1f1d537698c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Dataset.merge_existing_index_segments: MethodTooLong \u2014 merge_existing_index_segments 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":"rust/lance/src/index.rs"},"region":{"startLine":2095}}}],"partialFingerprints":{"codehealthFindingId/v1":"f36b6734bf213077283c327f6a79b46b2e97485e037ea911270353b154e8b3aa"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MatchQueryExec.execute: MethodTooLong \u2014 execute 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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2980}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9f5f1001f57af9ecf2f48ef59106d20ffda4c4f6cf91a24cf930839f82c93e8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LsmScanner: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/scanner/builder.rs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef49b13b8f3ab6f95a452b87ec216d81536c0f3a71bd2610d7d9e29136760ae3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ShardWriter: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/write.rs"},"region":{"startLine":2197}}}],"partialFingerprints":{"codehealthFindingId/v1":"c215c6bbbdb816be2cc73453c5d2013e254e938c7c16be977c16470696ca163d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TwoFileShuffleReader.try_new_with_preload_limit: MethodTooLong \u2014 try_new_with_preload_limit 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":"rust/lance-index/src/vector/v3/shuffler.rs"},"region":{"startLine":898}}}],"partialFingerprints":{"codehealthFindingId/v1":"a600da92168f9d438594571ed74e7a2f0243ab94ebb686290f6247a8cdb8fade"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FilteredReadStream.read_fragment: MethodTooLong \u2014 read_fragment 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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":1471}}}],"partialFingerprints":{"codehealthFindingId/v1":"b195ae6880a5de8ea6c85cb654552d6c9d715a85e190b27d7bae32fbaf383233"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: KNNVectorDistanceExec.execute_batch: MethodTooLong \u2014 execute_batch runs 113 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/knn.rs"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"313b5ec3ec9cec0354e5280adae308350adf9bef6fa4f9531dadf3639f31d058"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lance/vector.py: FileTooLong \u2014 560 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 60 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":"python/python/lance/vector.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"49d30c4cb006988a9e5a858c0c2d3f5014855e0554fecedeeefcec1f2e5f8cc9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DataBlock.from_arrays: MethodTooLong \u2014 from_arrays 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":"rust/lance-encoding/src/data.rs"},"region":{"startLine":1891}}}],"partialFingerprints":{"codehealthFindingId/v1":"67fd0ae783d1935bc61082278f9a58559dbdfdd56e93004a0fc25e7663f26113"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PrimitiveStructuralEncoder.serialize_miniblocks: MethodTooLong \u2014 serialize_miniblocks 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":5751}}}],"partialFingerprints":{"codehealthFindingId/v1":"2735964209d178bb297aedf2e617b9c65ce2a0b0569810644b24ae10f4bb786e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LsmVectorSearchPlanner.plan_search: MethodTooLong \u2014 plan_search 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":"rust/lance/src/dataset/mem_wal/scanner/vector_search.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"540e1e97b90d043a3ac336aca4ada86c7e37fc229c397753e88bbb4d3823c707"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IvfIndexBuilder.join_partitions_impl: MethodTooLong \u2014 join_partitions_impl 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":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":2528}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd178d6b9d0886d7baeaadc853bcf6e74ee74cfdb78a7d3d09c37d4c66d5333a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DirectoryNamespace: ClassTooLong \u2014 447 significant lines (blank, comment-only and punctuation-only lines excluded), 112 methods. 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":"java/src/main/java/org/lance/namespace/DirectoryNamespace.java"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"882fc980b25b5343cfd2a4aab28e177e6e5dfed6626863438b776251274cb523"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: simd/f64.rs: FileTooLong \u2014 557 significant 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 57 over it, 1.11\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f64.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"460654cdeb4109aeb7c9213cd92a589f4742bf40a68baeb66514979a83a4ae15"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_encoding::repdef::build_control_word_iterator: FunctionTooLong \u2014 lance_encoding::repdef::build_control_word_iterator 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":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":2412}}}],"partialFingerprints":{"codehealthFindingId/v1":"65f87cf769b214977e49a4639614110372d20b21ca837331c4d143b9c7fcf609"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PostingListGroup.new_packed_with_block_size: MethodTooLong \u2014 new_packed_with_block_size 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":"rust/lance-index/src/scalar/inverted/index/cache.rs"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"89564edf28eb76efb783a621e73f56a73ec873ab494ecf45e86501988011aee2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RabitQuantizationStorage.try_from_batch_with_remapper: MethodTooLong \u2014 try_from_batch_with_remapper 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":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":2489}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3c93d9fa21da117ea1aa9ff56ad0bb210f732a534627475a96dd97d682d9c28"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: HybridCompoundQueryExec.execute: MethodTooLong \u2014 execute 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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"a18de869f13fc23124f91d09b0c2e6a68d1c51bdc7ac435b7039ac5f7ac9f1f1"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: JsonIndexPlugin: ClassTooLong \u2014 441 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 9 methods, 5 blocks, lines 476-1096. The bar is 400 significant lines; this is 41 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":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"f96d87207de84fe6f1da59496de9ccf1aff28a5db30b2a2e6c26766145cd5dd4"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FtsIndexExec: ClassTooLong \u2014 441 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 9 methods, 5 blocks, lines 59-728. The bar is 400 significant lines; this is 41 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/fts.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccb1ca8f45217a7508ca0c5c767cb5c3b1e3b28dba2797ec86b065dceb2fd7d4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ScannerBuilder: 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":"python/python/lance/dataset.py"},"region":{"startLine":6816}}}],"partialFingerprints":{"codehealthFindingId/v1":"84885094000eae55ac120fdce5a05c4180d226c97fc4880f9fa52b799028c163"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PrimitiveStructuralEncoder: 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":5530}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f979f2bc3ab294273e0b2eb259f5557aa2adb3f3590f4ee9e1151c95cb6c5dc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/utils.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":"java/lance-jni/src/utils.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"139aa008efb8523d93d6168309bfa6285f5bc02de41a3a4348e7e0e6fa196e8d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_encoding::encodings::logical::primitive::sparse::writer::plan: FunctionTooLong \u2014 lance_encoding::encodings::logical::primitive::sparse::writer::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":"rust/lance-encoding/src/encodings/logical/primitive/sparse/writer.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"985c7de3ff680cb35ce1d41d62496fc2f364f45a43ec984fff607eae8907f54b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: JsonIndexPlugin.convert_batch_by_type: MethodTooLong \u2014 convert_batch_by_type 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":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":680}}}],"partialFingerprints":{"codehealthFindingId/v1":"219c6c675077ff46d595bed717af48183b91d795c868f8b8fa7ff66305c7f132"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ManifestNamespace.ensure_manifest_table_up_to_date: MethodTooLong \u2014 ensure_manifest_table_up_to_date 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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2511}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2fbe0a35f740aaf55613fd32b0feb1de2d5ab747a32c1d2544b39a3475190e1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LsmFtsSearchPlanner.plan_bound_search: MethodTooLong \u2014 plan_bound_search 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":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"c86e445bcc47ac569def56afadcf24865625f547a6d6cf7d9af919d01018f07f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::build_index_metadata_from_segments: FunctionTooLong \u2014 lance::index::build_index_metadata_from_segments 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":"rust/lance/src/index.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4da5205a4d2efcb4c35989e2d1ecdddd4cf5fc5c2f61a06566f4eefed4536ef"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TransactionRebase.finish_delete_update: MethodTooLong \u2014 finish_delete_update 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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":2254}}}],"partialFingerprints":{"codehealthFindingId/v1":"817c0782d2c55147afaccaf6f40047e4656c169ec126d7570448402ae8b2a041"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RestNamespace: ClassTooLong \u2014 438 significant lines (blank, comment-only and punctuation-only lines excluded), 111 methods. The bar is 400 significant lines; this is 38 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":"java/src/main/java/org/lance/namespace/RestNamespace.java"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"01a8489999a1251bca19155ce63c645709dbca18d7e8a500d96240c485ad1a98"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: namespace/DirectoryNamespace.java: FileTooLong \u2014 546 significant lines (blank, comment-only and punctuation-only lines excluded), about 82% of them inside a single declaration: DirectoryNamespace (238-932). The bar is 500 significant lines; this is 46 over it, 1.09\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":"java/src/main/java/org/lance/namespace/DirectoryNamespace.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"da68d76c28995656bc3d9c189b7a076f4471ca7a5c88b8b32a7cf80487d7b61e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Dataset.new: MethodTooLong \u2014 new 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":"python/src/dataset.rs"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d3497d378f78325179a6a1e9df837319425c61894be691241ade639547fb243"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Scanner.scalar_indexed_scan: MethodTooLong \u2014 scalar_indexed_scan 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":7025}}}],"partialFingerprints":{"codehealthFindingId/v1":"525fb4417a463c9083394ab8ef0ad176819c28e13a3d9ead59971f0827a2a5f8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MergeInsertJob.create_indexed_scan_joined_stream: MethodTooLong \u2014 create_indexed_scan_joined_stream 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":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":1276}}}],"partialFingerprints":{"codehealthFindingId/v1":"743f42aee7fec08163f595b71e90f004facfc55685a7412bb431ac873aade1ab"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: physical/value.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 60% of them inside a single declaration: ValueEncoder (6 blocks, 30-823). 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":"rust/lance-encoding/src/encodings/physical/value.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"88d0e21356362c04c9631f0b548b39846e87541304999d4d1f4655c13771c8d7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InvertedIndexBuilder.update_index: MethodTooLong \u2014 update_index 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":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"c28a8ae87349ae956a2ac59ec900f396aae54669efa426e3b463376c5f251a09"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DirectoryNamespace.build_index_params: MethodTooLong \u2014 build_index_params 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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":2410}}}],"partialFingerprints":{"codehealthFindingId/v1":"60bdea5c490e495d9aa767441a6bed581b2273ecf3489d01f7c2ee7dcdfa3e10"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: v1/reader.rs: FileTooLong \u2014 537 significant 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 37 over it, 1.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":"rust/lance-file/src/versions/v1/reader.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"000d629b33f2cb9c0ed66f6eb8bf7934e4869133128a93003b489f11f2d62c5d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: namespace/RestNamespace.java: FileTooLong \u2014 536 significant lines (blank, comment-only and punctuation-only lines excluded), about 82% of them inside a single declaration: RestNamespace (154-839). The bar is 500 significant lines; this is 36 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":"java/src/main/java/org/lance/namespace/RestNamespace.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"783e3db97595bebabb0c0197d82e274bd0ea717b55c9c1ef40ffd005ea43b604"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inverted/wand_maxscore.rs: FileTooLong \u2014 536 significant 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: Wand (297-732). The bar is 500 significant lines; this is 36 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":"rust/lance-index/src/scalar/inverted/wand_maxscore.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdc76988781e3f232032b2ca22c8703378b1bc09ebbce9e010fc270a27d8155f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_jni::transaction::inner_commit_to_dataset: FunctionTooLong \u2014 lance_jni::transaction::inner_commit_to_dataset 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":"java/lance-jni/src/transaction.rs"},"region":{"startLine":1326}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff6917e5638639d2920bda8e7a9a3690bb3c6a230944de9f0a27208baaeb2fb9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TakeStream.map_batch: MethodTooLong \u2014 map_batch 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":"rust/lance/src/io/exec/take.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc253fa6d34ede644e462bc1ef01fb084d228e88661f6a27ef1b8bcd30a8ef73"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ScanOptions: 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":"java/src/main/java/org/lance/ipc/ScanOptions.java"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d75b51207e3271743b9a1ff22df332c4c1513ae6dce6a18d8150a4527040f71"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Transaction: TooManyMethods \u2014 32 methods, declared across 4 files: transaction/index_maintenance.rs (16), transaction/manifest_build.rs (12), format/transaction.rs (2), transaction/row_version.rs (2). 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":"rust/lance-table/src/format/transaction.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5080b536f6a2cc49a185e687e777b6d82934d2ea88a72f83cdbf8be961d548f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DatasetBuilder: 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":"rust/lance/src/dataset/builder.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b4860eaeacc747cc356a4d675f04c2b85c1bb1cf5ff1351b48bfa9fcaea8150"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: format/fragment.rs: FileTooLong \u2014 531 significant 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 31 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":"rust/lance-table/src/format/fragment.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7b6838337a2d9f9786f560ba5fef79787b340e623d91a172d74fdea7312a0fb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Writer: 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), 28 methods, 2 blocks, lines 154-850. 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"b98dca96a2837311eb57b477a3c61b770cbb28cff143edcdb6a72917b49cc612"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_datafusion::substrait::normalize_expr: FunctionTooLong \u2014 lance_datafusion::substrait::normalize_expr 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":"rust/lance-datafusion/src/substrait.rs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"b44cf169f70339912ba8f46a12c755043f9a1ef7b9aaaaf8a6ac9d96d0bac674"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_index::scalar::inverted::builder::merge_metadata_files: FunctionTooLong \u2014 lance_index::scalar::inverted::builder::merge_metadata_files 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":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":2258}}}],"partialFingerprints":{"codehealthFindingId/v1":"102277ab868421980c1a5c97c38558f7586a97eae2fb122742b5f30a4da10470"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: U64Segment: ClassTooLong \u2014 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), 20 methods, 5 blocks, lines 41-747. The bar is 400 significant lines; this is 23 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":"rust/lance-table/src/rowids/segment.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d68a2feb5328fc3d67ab33dc81312a55fa2dee7e9452232ce71eef86a594dee"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ExternalManifestCommitHandler: 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), 3 methods, 4 blocks, lines 563-1149. 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":"rust/lance-table/src/io/commit/external_manifest.rs"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"218cb30d131b07d4d3454cf3261195fbdf9dab5dfc8b8afa9c3ddc0158c5b603"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/object_writer.rs: FileTooLong \u2014 525 significant 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 25 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":"rust/lance-io/src/object_writer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2a2b7b480459871c411d510903aa2007965855b4794143f7c01ad98248e2862"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_encoding::encodings::logical::primitive::sparse::select_position_set: FunctionTooLong \u2014 lance_encoding::encodings::logical::primitive::sparse::select_position_set 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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":4131}}}],"partialFingerprints":{"codehealthFindingId/v1":"46d6cc729d27127f1284a19c1e919f8ac18e51a5dbfb4e8600867f7c71f6ef00"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::dataset::optimize::remapping::remap_index: FunctionTooLong \u2014 lance::dataset::optimize::remapping::remap_index 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":"rust/lance/src/dataset/optimize/remapping.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bde9758d3a8c9090fb5f7954259da388b783d4cc55a6dceb41185956af433db"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FlatMatchFilterExec.build_filter_stream: MethodTooLong \u2014 build_filter_stream 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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":3851}}}],"partialFingerprints":{"codehealthFindingId/v1":"18e86e19f9e7930a7702b6e01e77aed5cdee5c9edf76fc1fb5a1232e151253e2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/doc_set.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), about 75% of them inside a single declaration: DocSet (3 blocks, 223-897). The bar is 500 significant lines; this is 23 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":"rust/lance-index/src/scalar/inverted/index/doc_set.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"196a3b06f85f7ffdb8abf795aa289f43879d0b923a2188b9de4528f9d73fe243"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InvertedIndexParams: ClassTooLong \u2014 417 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 41 methods, 5 blocks, lines 105-1196. The bar is 400 significant lines; this is 17 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":"rust/lance-index/src/scalar/inverted/tokenizer.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"e13d1a2d2356390852527ddf67e92c25b3228ebb28dec37d16ea527450d00b45"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: udf/json.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), declaring 39 free functions. 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":"rust/lance-datafusion/src/udf/json.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"19eeeedc0444c1744bfcf7705e66d545e08a73ae63a51244eb508b3529b41786"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_arrow::json::convert_json_array: FunctionTooLong \u2014 lance_arrow::json::convert_json_array 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":"rust/lance-arrow/src/json.rs"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"a42bfad3b6f08cfb0d24c8f2a534f1a7f968c69020963460275dbb3c70da6fbc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_index::vector::bq::transform::compute_raw_query_factors: FunctionTooLong \u2014 lance_index::vector::bq::transform::compute_raw_query_factors 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":"rust/lance-index/src/vector/bq/transform.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"d12b746efec5757ac6d6d3a60c139569fda3388f4e305ec8ad880826b6232658"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Schema: 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), 41 methods, 7 blocks, lines 26-1108. 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":"rust/lance-core/src/datatypes/schema.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"a67689a304cd2ee38d02a3b60c7821e7036f282b4c40851fc53c4ebb177ce839"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LsmScanner: 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), 34 methods, 3 blocks, lines 193-939. 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":"rust/lance/src/dataset/mem_wal/scanner/builder.rs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"66c471ad9d84e0e3e0e297d8375de1081f554ec4a66339f6504f6f416c3f8585"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scanner/builder.rs: FileTooLong \u2014 517 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 80% of them inside a single declaration: LsmScanner (3 blocks, 193-939). The bar is 500 significant lines; this is 17 over it, 1.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":"rust/lance/src/dataset/mem_wal/scanner/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5e85240838453bb0ed56746340fedd52402e7a4ac29f5755dca018e4aef61b9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PartitionDocuments: 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":"rust/lance-index/src/scalar/inverted/documents.rs"},"region":{"startLine":1146}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d08735b07ce5bf95e5d26e5d36907367a97cfba66441acc33716a6c19548814"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: pylance::lance: FunctionTooLong \u2014 pylance::lance 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":"python/src/lib.rs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"972d7c5997369baa41832ee3306f0e72eafe4c0fafa518ea23bed405539145bb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PrimitiveStructuralEncoder.encode_miniblock: MethodTooLong \u2014 encode_miniblock 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6396}}}],"partialFingerprints":{"codehealthFindingId/v1":"5317f46a0c6b9ca106957303f137a3cb9a0d074f81afa718794a8226443a54a9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Dataset.write_into_namespace_impl: MethodTooLong \u2014 write_into_namespace_impl 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":"rust/lance/src/dataset.rs"},"region":{"startLine":1004}}}],"partialFingerprints":{"codehealthFindingId/v1":"289fc7b844e34d864c203a1dcfa08a716290bbbea5d4c07e00a14870ea7b9405"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FilteredReadStream.plan_scan: MethodTooLong \u2014 plan_scan 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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"91755f530af365d0010dc26057223b244e7c4126ad50be4d1b7f2ac38d37dd24"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: distance/dot.rs: FileTooLong \u2014 514 significant 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 14 over it, 1.03\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":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9293e86f2f30967be51c635adef16921ec6e8da8124fa50b3d2af8464362e343"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/format.rs: FileTooLong \u2014 511 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 11 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":"rust/lance-encoding/src/format.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5868570124a6b3df3c2567ce85e91cd6c2ae49ea1aaab6873440328b3ae83ee1"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance_jni::transaction::inner_commit_to_uri: FunctionTooLong \u2014 lance_jni::transaction::inner_commit_to_uri 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":"java/lance-jni/src/transaction.rs"},"region":{"startLine":2224}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fc58e6d39c051aaa5209b14066c613f9794e15b3a32da69fec8e8ddbb47584e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CoreFieldDecoderStrategy.create_array_field_scheduler: MethodTooLong \u2014 create_array_field_scheduler 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":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"83b49ec1a399db99eef3bf638e1fdb20f743cb73e731d21d26b4d5e1276ac21c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CompactionOptions.apply_dataset_config: MethodTooLong \u2014 apply_dataset_config 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":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8bc394cabc84ee94eeab70ba995e25d9ab85e1ad0a3fd38916a45dcb66ffdcb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FileWriter: ClassTooLong \u2014 406 significant 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, 2 blocks, lines 79-652. The bar is 400 significant lines; this is 6 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":"rust/lance-file/src/versions/v1/writer/mod.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"24afcd0cd28ff6de3091c10eae3798a97aca7dd2858f537370efac89f0fcd5a5"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CompoundQueryExec: ClassTooLong \u2014 406 significant 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, 4 blocks, lines 682-1748. The bar is 400 significant lines; this is 6 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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"80ba8dfae095bd3b853fa4e1d33497505bb93d13ca003c30a99350caae14939b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: index/posting_list.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":"rust/lance-index/src/scalar/inverted/index/posting_list.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c21e1375468a1dd6cc418cd97c802c9dcf7bf3f9f57e9049b0540abe9eebcd77"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ProductQuantizationStorage.new_with_remapper: MethodTooLong \u2014 new_with_remapper runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/pq/storage.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f55ec98d6ca1d16157e7deacb32ad0aeb7eee8e92f16bc4c9303d1d0d779dbd"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DirectoryNamespace.create_table_version: MethodTooLong \u2014 create_table_version runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":4015}}}],"partialFingerprints":{"codehealthFindingId/v1":"e62565c1695207f04ef61fa409af85aee1923f7ddcd556713b1a10d9c05ba1c0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::vector::open_vector_index_v2: FunctionTooLong \u2014 lance::index::vector::open_vector_index_v2 runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":1902}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dc4f0eff27b19a47dbe69d999a166e23e7c45c9ab61c01cc7fd4f16dda23940"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: lance::index::vector::details::convert_v3_metadata_to_details: FunctionTooLong \u2014 lance::index::vector::details::convert_v3_metadata_to_details runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/details.rs"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8bab9d99fe8fbff3a75df1e4f4e7409f3663d6efe44e0a3997ddedfb94303d8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ipc/ScanOptions.java: FileTooLong \u2014 504 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: ScanOptions (25-1030). 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":"java/src/main/java/org/lance/ipc/ScanOptions.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2989b492c100c202ef65b5550e0cf386f7ac784e439a4a4669692e1df507049b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/optimize.rs: FileTooLong \u2014 503 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 3 over it, 1.01\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/optimize.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cbff50de783c6578ef84cfd0b86564dc3b57a149c0cffb3fdd10dbfc970a54a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: minhash_lsh/mod.rs: FileTooLong \u2014 503 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 3 over it, 1.01\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/minhash_lsh/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c0c59fe1539ef5a4eff6bd84f24eb5b3f8d30470d869d894e92a7c16a1d1091"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Manifest: ClassTooLong \u2014 402 significant 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, 5 blocks, lines 39-1124. The bar is 400 significant lines; this is 2 over it, 1.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":"rust/lance-table/src/format/manifest.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c83d1c8920647a210fd7705a90cb2e936d22fbe23595fe008e81224ab84cab0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dataset/builder.rs: FileTooLong \u2014 502 significant 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 94% of them inside a single declaration: DatasetBuilder (4 blocks, 37-942). The bar is 500 significant lines; this is 2 over it, 1.00\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":"rust/lance/src/dataset/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e8fee7d98f2578e1650e640b889c8bff8df672e2f216bc7bb44fc869e633228"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 20 shared lines): rust/lance/src/dataset/write/delete.rs:55-96 | rust/lance/src/dataset/write/merge_insert.rs:3037-3078 | rust/lance/src/dataset/write/merge_insert/exec.rs:69-110 | rust/lance/src/dataset/write/update.rs:696-737 \u2014 These 4 members are variants of one another: a block of 20 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":"rust/lance/src/dataset/write/delete.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"385d0bda0d47fd675b2bb284f6f71277c092001c4fefee09d033d3ea8a4def33"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (3 members, 11 shared lines): rust/lance-namespace-impls/src/rest.rs:859-881 | rust/lance-namespace-impls/src/rest.rs:1269-1289 | rust/lance-namespace-impls/src/rest.rs:1314-1344 \u2014 These 3 members are variants of one another: a block of 11 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":"rust/lance-namespace-impls/src/rest.rs"},"region":{"startLine":859}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e3486b017045e0ea0b9ed5370a80788b5a84fd5bc926c3ab2282c9fea07276b"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (88 shared lines): rust/lance/src/dataset/scanner.rs:5322-5478 | rust/lance/src/dataset/scanner.rs:5486-5638 \u2014 These two members are variants of one another: 88 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5322}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd462e4630518883606d31cd3845131724e8a8cb3cded7afa885e9c63d7f654c"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (55 shared lines): rust/lance-index/src/scalar/inverted/index/inverted_index.rs:253-314 | rust/lance-index/src/scalar/inverted/index/inverted_index.rs:322-383 \u2014 These two members are variants of one another: 55 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":"rust/lance-index/src/scalar/inverted/index/inverted_index.rs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"94ecc108f2776dcf8375da559e8f0e4dbb374c7e6c79230276e728eced64c106"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (35 shared lines): rust/lance-file/src/versions/v2_2/reader.rs:26-106 | rust/lance-file/src/versions/v2_3/reader.rs:26-89 \u2014 These two members are variants of one another: 35 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":"rust/lance-file/src/versions/v2_2/reader.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"62e8e43487a4f486c2c5f42ed85e1237c1a066676f7cc2c266a7fce4fa308ad4"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (30 shared lines): rust/lance-io/src/object_store/providers/oss.rs:106-151 | rust/lance-io/src/object_store/providers/tos.rs:112-157 \u2014 These two members are variants of one another: 30 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":"rust/lance-io/src/object_store/providers/oss.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee4894a6db5e1ffee0696e3167b1a5a9805099b21623d50c9e71f91e3c5301d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (30 shared lines): rust/lance/src/index/vector/ivf.rs:3790-3827 | rust/lance/src/index/vector/ivf.rs:3841-3886 \u2014 These two members are variants of one another: 30 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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":3790}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dbda6478bac55ac96cdb4a37f14153b7f32aa8a91ebf57f991f981d991b5ca9"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (28 shared lines): rust/lance-file/src/versions/v2_0/writer.rs:856-952 | rust/lance-file/src/writer/structural.rs:834-922 \u2014 These two members are variants of one another: 28 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":856}}}],"partialFingerprints":{"codehealthFindingId/v1":"f25762ce0eac0013699bcaba70328ddd1e892063330cd0f52fd7161e691c0645"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (26 corresponding lines): rust/lance-linalg/src/distance/cosine.rs:1137-1162 | rust/lance-linalg/src/distance/cosine.rs:551-580 \u2014 These two members are one piece of code written twice and then edited apart: 26 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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1137}}}],"partialFingerprints":{"codehealthFindingId/v1":"303beb04e4ffce9c50fa60a70954534b02647aacecdd1853221f9742b49eb243"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (39 corresponding lines): rust/lance-file/src/versions/v2_2/mod.rs:73-118 | rust/lance-file/src/versions/v2_3/mod.rs:81-126 \u2014 These two members are one piece of code written twice and then edited apart: 39 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":"rust/lance-file/src/versions/v2_2/mod.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"6267466e1fe1b94a902bee12916b4fba328c78ed1af91b8e1271df5b42d5296e"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (21 corresponding lines): rust/lance-linalg/src/simd/f32.rs:431-451 | rust/lance-linalg/src/simd/f32.rs:936-960 \u2014 These two members are one piece of code written twice and then edited apart: 21 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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"13abf3858bb46313cee6a1cd78ceb5052f38eadd724cbe31ae1bb18cb3ebc2a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (21 corresponding lines): rust/lance-linalg/src/simd/f64.rs:281-301 | rust/lance-linalg/src/simd/f64.rs:729-753 \u2014 These two members are one piece of code written twice and then edited apart: 21 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":"rust/lance-linalg/src/simd/f64.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ed05aa20677ccf993bb197dd5eeb96e772d91804f05f21eed12d14a2cb95cd0"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (18 corresponding lines): rust/lance-linalg/src/distance/cosine.rs:943-973 | rust/lance-linalg/src/distance/norm_l2.rs:262-281 \u2014 These two members are one piece of code written twice and then edited apart: 18 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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":943}}}],"partialFingerprints":{"codehealthFindingId/v1":"6831253cf0ed64505d81248661f3396caaac55d9bb4e08f4e6dbd9a98664f13e"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (27 corresponding lines): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs:89-120 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs:88-127 \u2014 These two members are one piece of code written twice and then edited apart: 27 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"b47294e42b3cb5f8947d4686d2aaac94555ceb5e35261697fba8c1ebc48a8a98"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (18 corresponding lines): rust/lance-linalg/src/distance/dot.rs:632-657 | rust/lance-linalg/src/distance/norm_l2.rs:285-304 \u2014 These two members are one piece of code written twice and then edited apart: 18 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":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"936a29ca8cbd16f6a102b053d48eba03549debd9ee502f0f58dbad7372ba1e93"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): rust/lance/src/index/scalar/bitmap.rs:19-76 | rust/lance/src/index/scalar/bloomfilter.rs:20-98 | rust/lance/src/index/scalar/fmindex.rs:30-122 | rust/lance/src/index/scalar/inverted.rs:935-1020 | rust/lance/src/index/scalar/label_list.rs:66-148 | rust/lance/src/index/scalar/minhash_lsh.rs:25-85 | rust/lance/src/index/scalar/rtree.rs:28-92 | rust/lance/src/index/scalar/zonemap.rs:20-86 \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":"rust/lance/src/index/scalar/bitmap.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c60cae467194f762ac9b404cd83f5245f98ffd649721208334e3bc906478ef7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (7 members, 50\u002B identical tokens): java/lance-jni/src/namespace.rs:353-424 | java/lance-jni/src/namespace.rs:435-483 | java/lance-jni/src/namespace.rs:494-566 | java/lance-jni/src/namespace.rs:577-656 | java/lance-jni/src/namespace.rs:670-748 | java/lance-jni/src/namespace.rs:759-829 | java/lance-jni/src/namespace.rs:844-938 \u2014 These 7 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 7 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 7 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/namespace.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab7acd484d8d9f3c6212a308e275119d641aee67fb9842d493f18ea33cb121f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (7 members, 50\u002B identical tokens): rust/lance-datafusion/src/udf/json.rs:281-303 | rust/lance-datafusion/src/udf/json.rs:447-468 | rust/lance-datafusion/src/udf/json.rs:509-534 | rust/lance-datafusion/src/udf/json.rs:562-590 | rust/lance-datafusion/src/udf/json.rs:618-646 | rust/lance-datafusion/src/udf/json.rs:674-702 | rust/lance-datafusion/src/udf/json.rs:730-758 \u2014 These 7 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 7 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 7 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/udf/json.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"34b207d0da838b99166dbbb19579fdb0895264f49f1979f180c6cba8f04875f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): rust/lance/src/io/exec/fts.rs:3856-3980 | rust/lance/src/io/exec/fts.rs:4303-4431 | rust/lance/src/io/exec/fts.rs:4647-4807 | rust/lance/src/io/exec/knn.rs:992-1066 | rust/lance/src/io/exec/rowids.rs:181-231 | rust/lance/src/io/exec/scalar_index.rs:557-636 \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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":3856}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a384189d15e2509609e9873cc255a0a79c5042141bf1504c786921d56e12294"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): rust/lance-linalg/src/distance/cosine.rs:1166-1185 | rust/lance-linalg/src/distance/cosine.rs:1257-1271 | rust/lance-linalg/src/distance/dot.rs:685-703 | rust/lance-linalg/src/distance/dot.rs:708-726 | rust/lance-linalg/src/distance/l2.rs:743-765 | rust/lance-linalg/src/distance/l2.rs:770-792 \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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1166}}}],"partialFingerprints":{"codehealthFindingId/v1":"87b7a993488535ed066f798710b03b78cbfe25ddd81c1d0d327359823ee05fa4"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): rust/lance-namespace-impls/src/dir/manifest.rs:2802-2922 | rust/lance-namespace-impls/src/dir/manifest.rs:2924-2948 | rust/lance-namespace-impls/src/dir/manifest.rs:2954-3160 | rust/lance-namespace-impls/src/dir/manifest.rs:3162-3213 | rust/lance-namespace-impls/src/dir/manifest.rs:3557-3630 | rust/lance-namespace-impls/src/dir/manifest.rs:3635-3674 \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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2802}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bd78b7bf31cdf3ad2c6ca2c5c7b99d52e4bd7db92be47a31fc0a9eb9130a9a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): rust/lance-index/src/vector/ivf.rs:122-143 | rust/lance-index/src/vector/ivf.rs:150-181 | rust/lance-index/src/vector/ivf.rs:190-232 | rust/lance-index/src/vector/ivf.rs:240-275 | rust/lance-index/src/vector/ivf.rs:283-324 \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":"rust/lance-index/src/vector/ivf.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"964bcf793dc80342079a42720d2c48411608fde630f0df0606b3bfac78bfbcc4"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): rust/lance-namespace-impls/src/dir/manifest.rs:2148-2216 | rust/lance-namespace-impls/src/dir/manifest.rs:2279-2307 | rust/lance-namespace-impls/src/dir/manifest.rs:2406-2472 | rust/lance-namespace-impls/src/dir/manifest.rs:2716-2800 | rust/lance-namespace-impls/src/dir/manifest.rs:3218-3273 \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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2148}}}],"partialFingerprints":{"codehealthFindingId/v1":"0739be1609f029edd29cfabcfc04980db660668018fdc80664aa229ffa71511f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): python/python/lance/dataset.py:1635-1768 | python/python/lance/dataset.py:1797-1835 | python/python/lance/dataset.py:2214-2248 | python/python/lance/fragment.py:707-724 | python/python/lance/fragment.py:745-760 \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":"python/python/lance/dataset.py"},"region":{"startLine":1635}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b7c21def669ee7d09f2291f197610c8a1006b6ddd2e85e8c94ebeb2f0e31200"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): java/lance-jni/src/mem_wal.rs:764-792 | java/lance-jni/src/mem_wal.rs:884-930 | python/src/mem_wal.rs:720-743 | python/src/mem_wal.rs:793-837 \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":"java/lance-jni/src/mem_wal.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"377f4fb13a7a3838638fff3954aae665ea0b36b1799a20cdd06c39112d96c039"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): rust/lance/src/dataset/mem_wal/scanner/fts_search.rs:1084-1282 | rust/lance/src/dataset/mem_wal/scanner/planner.rs:336-477 | rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs:673-797 | rust/lance/src/dataset/mem_wal/scanner/vector_search.rs:468-630 \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":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":1084}}}],"partialFingerprints":{"codehealthFindingId/v1":"42fb69a9ba2df14155b3b497c30d1188f92d2413010d064f4974a53d7f245c90"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): rust/lance/src/dataset/refs.rs:218-232 | rust/lance/src/dataset/refs.rs:253-266 | rust/lance/src/dataset/refs.rs:268-295 | rust/lance/src/dataset/refs.rs:301-322 \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":"rust/lance/src/dataset/refs.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"e50a456d76095de315ec343b4e10ca37deeaa21ecdcc7afdfcdc4fa205d1518b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): rust/lance-file/src/versions/v2_0/reader.rs:137-148 | rust/lance-file/src/versions/v2_1/reader.rs:180-191 | rust/lance-file/src/versions/v2_2/reader.rs:182-193 | rust/lance-file/src/versions/v2_3/reader.rs:220-231 \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":"rust/lance-file/src/versions/v2_0/reader.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"604d5993b2a39cf565095f1e8153ad0ca1fdc8b25a6fa4a552dd35d5ee72468e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): rust/lance-file/src/versions/v2_0/reader.rs:350-378 | rust/lance-file/src/versions/v2_1/reader.rs:215-241 | rust/lance-file/src/versions/v2_2/reader.rs:217-243 | rust/lance-file/src/versions/v2_3/reader.rs:255-281 \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":"rust/lance-file/src/versions/v2_0/reader.rs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4359730e18a4b53362c371ec7b3d51acf7516dccc12250af89cffe80f47b9a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): rust/lance-index/src/vector/bq/storage.rs:2059-2079 | rust/lance-index/src/vector/bq/storage.rs:2089-2115 | rust/lance-index/src/vector/storage.rs:186-214 | rust/lance-index/src/vector/storage.rs:226-247 \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":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":2059}}}],"partialFingerprints":{"codehealthFindingId/v1":"fadcfe854f1d8be6946682b7cd338d6bd1a1fdd11bad77f4b6fbc44f7942a79a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): rust/lance-linalg/src/distance/cosine.rs:1008-1045 | rust/lance-linalg/src/distance/dot.rs:731-764 | rust/lance-linalg/src/distance/l2.rs:797-835 | rust/lance-linalg/src/distance/norm_l2.rs:357-383 \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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1008}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2e9e32c3b2d7d759f5553b9add8dacf3a5e9977712e39ffd957828559dbb2c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): rust/lance-linalg/src/distance/cosine.rs:1189-1210 | rust/lance-linalg/src/distance/cosine.rs:1214-1231 | rust/lance-linalg/src/distance/dot.rs:662-680 | rust/lance-linalg/src/distance/l2.rs:716-738 \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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1189}}}],"partialFingerprints":{"codehealthFindingId/v1":"16012cc848e1d41ac23d8a929647ddc7af22db7ed8d03d57e6550b41e1dcbb20"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): rust/lance-linalg/src/simd/f32.rs:259-276 | rust/lance-linalg/src/simd/f32.rs:278-295 | rust/lance-linalg/src/simd/f64.rs:152-169 | rust/lance-linalg/src/simd/f64.rs:171-188 \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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"70eea6c163bcb384e3e640b8862a91206316d4c0628e502e78d84c29a8136d12"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): rust/lance-linalg/src/simd/f32.rs:743-762 | rust/lance-linalg/src/simd/f32.rs:765-784 | rust/lance-linalg/src/simd/f64.rs:588-608 | rust/lance-linalg/src/simd/f64.rs:611-631 \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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":743}}}],"partialFingerprints":{"codehealthFindingId/v1":"542c8b37aad86b239364f0e7fa9e6dadc8040e1ade351aad209a96b42a1a22ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): rust/lance-namespace-impls/src/credentials/azure.rs:392-433 | rust/lance-namespace-impls/src/credentials/azure.rs:435-491 | rust/lance-namespace-impls/src/credentials/azure.rs:497-550 | rust/lance-namespace-impls/src/credentials/gcp.rs:1097-1133 \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":"rust/lance-namespace-impls/src/credentials/azure.rs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"682971dc75565511eada074880576d102cbf9030aed3f1a3b108412a28a465e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): python/python/lance/dataset.py:4360-4596 | python/python/lance/dataset.py:4633-4741 | python/python/lance/dataset.py:5611-5677 | python/python/lance/fragment.py:1250-1448 \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":"python/python/lance/dataset.py"},"region":{"startLine":4360}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa18116fba1fbfc5fe38b39e0760b478be151980d568b1e9430a1476f165f71c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (60\u201363 lines \u00D7 2): rust/lance-index/src/vector/distributed/index_merger.rs:1216-1278 | rust/lance-index/src/vector/distributed/index_merger.rs:1377-1436 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":1216}}}],"partialFingerprints":{"codehealthFindingId/v1":"85994e8b0f73c20944e6f5d5f0ec4e796bd257911a17326abf7702a58f918694"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (50\u201355 lines \u00D7 2): rust/lance-index/src/vector/distributed/index_merger.rs:1050-1104 | rust/lance-index/src/vector/distributed/index_merger.rs:1473-1522 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e864eabf75c75b78a61686235ff0151a423487639a4683bb14b0a5393c4171c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (47 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/inverted_index.rs:492-538 | rust/lance-index/src/scalar/inverted/index/inverted_index.rs:604-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":"rust/lance-index/src/scalar/inverted/index/inverted_index.rs"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"078a91b12b415535042d8d37e86d396d67aca08c69762104c5374b80f7763ccd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (40\u201343 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs:364-403 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs:235-277 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 180 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"56f12efb3f59c8e342067713b568d166fc1e137d8d71416c13caf5731e5bfb11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39\u201341 lines \u00D7 2): rust/lance/src/dataset/fragment.rs:3695-3733 | rust/lance/src/dataset/fragment.rs:3888-3928 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":3695}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d64329b1b53387aed578f7e702484941166f884a5380279429ef9732dc2a825"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (41 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/inverted_index.rs:446-486 | rust/lance-index/src/scalar/inverted/index/inverted_index.rs:558-598 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/inverted_index.rs"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"51e5c799c8356b83b383f834302eca41248d9145e8629ed6bc62cf0f57a07f5c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (40 lines \u00D7 2): rust/lance/src/io/commit/conflict_resolver.rs:487-526 | rust/lance/src/io/commit/conflict_resolver.rs:735-774 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"337ff52ad6a27b373f3086a93317c47b407072561b03df89da73e7bc791d8b34"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39 lines \u00D7 2): rust/lance-file/src/versions/v2_1/reader.rs:33-71 | rust/lance-file/src/versions/v2_2/reader.rs:33-71 \u2014 \u0060rust/lance-file/src/versions/v2_1/reader.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/reader.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 10 separate duplicated blocks between them, totalling at least 158 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":"rust/lance-file/src/versions/v2_1/reader.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bdc09d76d175314c95f5f79ad1f49a291f722a082bafb85e4591dbf966fba79"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32\u201337 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs:329-360 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs:195-231 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 180 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"52687aa6cc1359c3a7ce6b75df48de438841c1d60ff099639f62a22bcbc40e08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive/dict.rs:297-333 | rust/lance-encoding/src/encodings/logical/primitive/dict.rs:353-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":"rust/lance-encoding/src/encodings/logical/primitive/dict.rs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"1647f168c35fd88eee7c6322e796c6d132a1d57b141e029e2a06f2b5818648eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 2): rust/lance-file/src/versions/v2_2/mod.rs:74-110 | rust/lance-file/src/versions/v2_3/mod.rs:82-118 \u2014 \u0060rust/lance-file/src/versions/v2_2/mod.rs\u0060 and \u0060rust/lance-file/src/versions/v2_3/mod.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 57 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":"rust/lance-file/src/versions/v2_2/mod.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"04f51ac43a521fab3b7c68f53734af746f313098d9d0e9bbbdc5cab6b536a941"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 2): rust/lance-index/src/vector/graph.rs:422-458 | rust/lance-index/src/vector/graph.rs:500-536 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/graph.rs"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"f94095290ccc41ccc818e7eb0a56cb3b219b19fd9a871fa808ed74bc012ab420"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 2): java/lance-jni/src/async_scanner.rs:272-306 | java/lance-jni/src/blocking_scanner.rs:621-655 \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":"java/lance-jni/src/async_scanner.rs"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ce699c2de4b2d1e8ba903d6cd546755b0c9c9d8c290689a9328a2d25c10da8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:1192-1226 | rust/lance/src/index/vector/ivf.rs:2391-2425 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":1192}}}],"partialFingerprints":{"codehealthFindingId/v1":"868bffa0b294b027ea154facc452ffe8d5e01d375860b73290ca6c76630b4832"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34\u201335 lines \u00D7 2): rust/lance-index/src/scalar/inverted/builder.rs:593-627 | rust/lance-index/src/scalar/inverted/builder.rs:667-700 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a8959c24534647181c21ac4ee2239922c4c032b268e444b1dc8e687009c8e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29\u201334 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:598-631 | rust/lance-file/src/writer/structural.rs:313-341 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba2158796beb4b2a281dca3440a6fbd1ab02de3ce670b9854d2cbe8b162c5249"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31\u201333 lines \u00D7 2): rust/lance/src/io/commit/conflict_resolver.rs:531-563 | rust/lance/src/io/commit/conflict_resolver.rs:779-809 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5252a704d188c0213595c089a133589a71959daedadeb2bcd3f5c01ea992cc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): rust/lance-file/src/reader/structural.rs:285-317 | rust/lance-file/src/versions/v2_0/reader.rs:245-277 \u2014 before extracting anything, compare \u0060rust/lance-file/src/reader/structural.rs\u0060 and \u0060rust/lance-file/src/versions/v2_0/reader.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 101 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":"rust/lance-file/src/reader/structural.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"445abeb07d96e4d9c92cf37f8a0c38dc82ec379d30a8565b96e9dc061d640b39"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/posting_builder.rs:488-520 | rust/lance-index/src/scalar/inverted/index/posting_builder.rs:773-805 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/posting_builder.rs"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ae0434de30c3da3489e40b14cc1935acc700d6b31ce27e909e4e6e67522e1a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): rust/lance-index/src/vector/distributed/index_merger.rs:1280-1312 | rust/lance-index/src/vector/distributed/index_merger.rs:1438-1470 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":1280}}}],"partialFingerprints":{"codehealthFindingId/v1":"a43466ec42db1d56285bf7f220d23278945e4f2d082dadc37a1b69e4ade08c7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 3): rust/lance-file/src/versions/v2_1/writer.rs:155-186 | rust/lance-file/src/versions/v2_2/writer.rs:155-186 | rust/lance-file/src/versions/v2_3/writer.rs:155-186 \u2014 \u0060rust/lance-file/src/versions/v2_1/writer.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/writer.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 62 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":"rust/lance-file/src/versions/v2_1/writer.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2d6abbe2d24f76673875032923411e38ae0f8383a8ed03d5ab52111053d630b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30\u201332 lines \u00D7 3): rust/lance-namespace-impls/src/dir/manifest.rs:3684-3715 | rust/lance-namespace-impls/src/dir/manifest.rs:3749-3778 | rust/lance-namespace-impls/src/dir/manifest.rs:3801-3830 \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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":3684}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e8433098960efa462bd5693f92e35f1a9c34ff8c30d1f5023c86406394fb1af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 2): rust/lance/src/index/vector/ivf/v2.rs:1281-1312 | rust/lance/src/index/vector/ivf/v2.rs:1365-1396 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf/v2.rs"},"region":{"startLine":1281}}}],"partialFingerprints":{"codehealthFindingId/v1":"df1a1ef5f19316d86379bcb50bde3d1b0d67484c60c3d9876073becdd7258bca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30\u201332 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:1127-1158 | rust/lance-namespace-impls/src/dir/manifest.rs:2678-2707 \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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdeef011bc53bddb40f7c6cb8c29819062e60ae74675573b8ef8374b7ba2440a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201330 lines \u00D7 2): rust/lance/src/index/frag_reuse.rs:936-956 | rust/lance/src/index/frag_reuse.rs:1468-1497 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/frag_reuse.rs"},"region":{"startLine":936}}}],"partialFingerprints":{"codehealthFindingId/v1":"40a4e20ae84cdd5bc1233f997d709874b8fa5ea1dddb9821bd41e06b03875841"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27\u201329 lines \u00D7 2): java/lance-jni/src/otel.rs:235-261 | python/src/otel.rs:293-321 \u2014 before extracting anything, compare \u0060java/lance-jni/src/otel.rs\u0060 and \u0060python/src/otel.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 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":"java/lance-jni/src/otel.rs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e60973bf093b1a6c72b0ed092f64b6f701fff4d665c59bd720cbabb0dd9bea5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28\u201329 lines \u00D7 2): rust/lance/src/index/create.rs:819-847 | rust/lance/src/index/create.rs:895-922 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/create.rs"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"48283d9c6291c352d8384af6bbf776c8d306dbc8c8192fd1bf7d96984d03c796"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27\u201329 lines \u00D7 2): rust/lance/src/io/exec/scan.rs:468-494 | rust/lance/src/io/exec/scan.rs:502-530 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/scan.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d5c982a894ddbc1b5e1aff61b7485bdfa7efef160ee11c34ed8be30b583e2d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201329 lines \u00D7 2): rust/lance-io/src/uring/current_thread_future.rs:38-58 | rust/lance-io/src/uring/current_thread_future.rs:70-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":"rust/lance-io/src/uring/current_thread_future.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"18c6043b9d1dba480bf65f7bb3bdfcbcea7f8e62fd2d530dabc9dff019e8c089"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 3): rust/lance-namespace-impls/src/dir.rs:3844-3871 | rust/lance-namespace-impls/src/dir.rs:3901-3928 | rust/lance-namespace-impls/src/dir.rs:3951-3978 \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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":3844}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f6248e83d62270348abb50c9308420a4649cdd8029fc127d60658a1c05b67d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): java/lance-jni/src/lib.rs:133-160 | python/src/lib.rs:225-252 \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":"java/lance-jni/src/lib.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"212c65c9f99b67f39b86053a859e6705db440ebf53e7ba8cf64f7fda1f0c29cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201328 lines \u00D7 2): rust/lance-index/src/scalar/inverted/builder.rs:2002-2027 | rust/lance-index/src/scalar/inverted/builder.rs:2080-2107 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":2002}}}],"partialFingerprints":{"codehealthFindingId/v1":"99d2ee3409df3d2a54e52e4373d1036012ad71a220a1bc7dbc5506ecb3587d10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): rust/lance-encoding/src/encodings/physical/fsst.rs:233-259 | rust/lance-encoding/src/encodings/physical/fsst.rs:264-290 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/fsst.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"86e9308e853faa0ff07e40d5e85804adf6eaa9645679e2e6d337405fc2da84a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): rust/lance-file/src/versions/v1/writer/statistics.rs:344-370 | rust/lance-file/src/versions/v1/writer/statistics.rs:418-444 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/writer/statistics.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e53b9d16013df1a32a0e788db8740d64e3988ba26ce889396245bc3ecc5e38b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201326 lines \u00D7 2): rust/lance/src/dataset/write/merge_insert/exec/write.rs:111-136 | rust/lance/src/dataset/write/merge_insert/exec/write.rs:143-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":"rust/lance/src/dataset/write/merge_insert/exec/write.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4eee65a7770e69a86f15a7efa05109b4902ea623722f19218f5e360609d9569"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201326 lines \u00D7 2): rust/lance/src/io/commit/conflict_resolver.rs:928-953 | rust/lance/src/io/commit/conflict_resolver.rs:1176-1192 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":928}}}],"partialFingerprints":{"codehealthFindingId/v1":"4233a1630d360df8c27219f5b092c9c074455faa68a532e6d881f38660b8b438"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201326 lines \u00D7 2): rust/lance/src/index/vector/ivf/io.rs:214-239 | rust/lance/src/index/vector/ivf/io.rs:322-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":"rust/lance/src/index/vector/ivf/io.rs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa4b280626a4ab72eb122f93cc7fee4550419affc5fd224e5d23d52034a8b70c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand.rs:4221-4246 | rust/lance-index/src/scalar/inverted/wand.rs:4332-4357 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":4221}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed2e70b060c34f358f4bee704ba78c57c24ecbaf6f2246d17b82b1fcc800f53a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): java/lance-jni/src/blocking_dataset.rs:2420-2444 | java/lance-jni/src/blocking_dataset.rs:3440-3464 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":2420}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ed93c58d47fde320cbb7fb0ed48a2f7fc8bdb3f4fc182e8a02e988773d859d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs:90-114 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs:98-122 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 180 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"014615d02c11c9951c8330a6ed012801f2f3791eb7a26b1ade0e825a4d0495b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201325 lines \u00D7 2): rust/lance/src/dataset/mem_wal/write.rs:472-490 | rust/lance/src/dataset/mem_wal/write.rs:496-520 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/write.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"00df581f2c036f4a4dc2345d1ecc2407425f6fe430fe41dcc56a97ebdc5de9ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201325 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:5369-5392 | rust/lance/src/dataset/scanner.rs:5534-5558 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5369}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f884355dba87667e0a115fe90746ce1a5aec2f9509113caa7a206003924b528"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201325 lines \u00D7 2): rust/lance-encoding/src/array_encoding/strategy.rs:137-161 | rust/lance-encoding/src/encoder/structural.rs:43-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":"rust/lance-encoding/src/array_encoding/strategy.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9454e4b6e0d25417039229effbf5cc10341a033955903fcd0d8e18f31ba2bb4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): rust/lance-encoding/src/encodings/physical/fsst.rs:61-85 | rust/lance-encoding/src/encodings/physical/fsst.rs:94-118 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/fsst.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"873987a1e220b6d63e5f7430fee9ad5fbe2b23a474210d9496e425b26c37dae6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): rust/lance-file/src/reader/structural.rs:30-54 | rust/lance-file/src/versions/v2_0/reader.rs:31-55 \u2014 before extracting anything, compare \u0060rust/lance-file/src/reader/structural.rs\u0060 and \u0060rust/lance-file/src/versions/v2_0/reader.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 101 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":"rust/lance-file/src/reader/structural.rs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"e607e0baa4d86daa174e9068d09f0967432852ee2ec829741a8d611c2e02c36c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): rust/lance-index/src/scalar/bloomfilter.rs:519-543 | rust/lance-index/src/scalar/zonemap.rs:754-778 \u2014 before extracting anything, compare \u0060rust/lance-index/src/scalar/bloomfilter.rs\u0060 and \u0060rust/lance-index/src/scalar/zonemap.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 61 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":"rust/lance-index/src/scalar/bloomfilter.rs"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"84e12b22561f2d842f7be2395a5859a0667475cc13e286677a75c328366910ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand.rs:3126-3150 | rust/lance-index/src/scalar/inverted/wand.rs:3420-3444 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":3126}}}],"partialFingerprints":{"codehealthFindingId/v1":"86276892ae9a92fe0daa27bf958ef027611d0e1e5982fa0ebc9b143ecfab4722"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201325 lines \u00D7 2): rust/lance-index/src/scalar/inverted.rs:123-146 | rust/lance-index/src/scalar/inverted/index/search.rs:397-421 \u2014 before extracting anything, compare \u0060rust/lance-index/src/scalar/inverted.rs\u0060 and \u0060rust/lance-index/src/scalar/inverted/index/search.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 47 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":"rust/lance-index/src/scalar/inverted.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"933eec907495c7eb5fb99883fa55af5d0003d44deade85cc52cf6377f3b83f88"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): rust/lance-table/src/rowids.rs:98-122 | rust/lance-table/src/rowids.rs:139-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":"rust/lance-table/src/rowids.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"8215c4855f5d787e4f3b9a33773805610742efaffba13db23bb5e32a588415b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201324 lines \u00D7 3): rust/lance-namespace-impls/src/credentials/aws.rs:552-575 | rust/lance-namespace-impls/src/credentials/azure.rs:835-857 | rust/lance-namespace-impls/src/credentials/gcp.rs:888-910 \u2014 before extracting anything, compare \u0060rust/lance-namespace-impls/src/credentials/aws.rs\u0060 and \u0060rust/lance-namespace-impls/src/credentials/gcp.rs\u0060 as WHOLE FILES: this scan already matched 3 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":"rust/lance-namespace-impls/src/credentials/aws.rs"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"801fcead7fbbfe6a26cf51e88f01f416eb5990d668d3d6b80c14881e589c3155"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 3): rust/lance-namespace-impls/src/rest.rs:624-647 | rust/lance-namespace-impls/src/rest.rs:661-684 | rust/lance-namespace-impls/src/rest.rs:729-752 \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":"rust/lance-namespace-impls/src/rest.rs"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0eb9f3f9e20622df3b32ed5feb1c19392f4203cad75461bcc548b1c4f1e43c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): java/lance-jni/src/transaction.rs:1343-1366 | java/lance-jni/src/transaction.rs:2245-2268 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/transaction.rs"},"region":{"startLine":1343}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fc1746383c7d2ad3abf6561bd80b61e3190df3730ab477350f6ae2a003d5435"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): java/lance-jni/src/lib.rs:107-130 | python/src/lib.rs:199-222 \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":"java/lance-jni/src/lib.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d27ce649a5cd14c198d70a929903e6203021dec942c2a4683b56f555f0d4993"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/planner.rs:363-386 | rust/lance/src/dataset/mem_wal/scanner/vector_search.rs:509-532 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/scanner/planner.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/scanner/vector_search.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 89 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":"rust/lance/src/dataset/mem_wal/scanner/planner.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e97ae0a8bd5bc581c8a5372c9118995207acf491ab79d1965828c92663bd326"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:404-427 | rust/lance-linalg/src/simd/i32.rs:244-267 \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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c4b2b559d41c3eeb8b6f27b54151cad96791685d0a301dea71c51255920ced"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:2165-2188 | rust/lance-namespace-impls/src/dir.rs:2191-2214 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":2165}}}],"partialFingerprints":{"codehealthFindingId/v1":"2809a0f8c6d8a597c0f0ebb1a83e9650b0ce328f2b97ec2d83ac930805a43a39"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 3): rust/lance-index/src/scalar/inverted/index/posting_builder.rs:482-504 | rust/lance-index/src/scalar/inverted/index/posting_builder.rs:706-728 | rust/lance-index/src/scalar/inverted/index/posting_builder.rs:767-789 \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":"rust/lance-index/src/scalar/inverted/index/posting_builder.rs"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"61e251ed06dc8e0824bb9b3d93500bc430902c78dabf7fc81c3c24d77a31402d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201323 lines \u00D7 2): java/lance-jni/src/blocking_dataset.rs:795-817 | java/lance-jni/src/fragment.rs:359-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 both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":795}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9373a1d38b522f036895557eeb82b7dc9b858be171aedef40ec2a41003853f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201323 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/flush.rs:307-326 | rust/lance/src/dataset/mem_wal/memtable/flush.rs:607-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":"rust/lance/src/dataset/mem_wal/memtable/flush.rs"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff9eb699ec10fde1d1cb5c7b30a1b5f24742b0d1401193831314a739f230eb29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:7326-7348 | rust/lance/src/dataset/scanner.rs:7387-7409 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":7326}}}],"partialFingerprints":{"codehealthFindingId/v1":"8daf255bd77abe228bba9a770cf5769b1ff3b60e72063d022c139c34b78b62e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): rust/lance/src/io/commit.rs:1792-1814 | rust/lance/src/io/commit.rs:1862-1884 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit.rs"},"region":{"startLine":1792}}}],"partialFingerprints":{"codehealthFindingId/v1":"5808419e39cb188b87b1cb269a849232382ccc879114455d90b12cefb7e692f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): rust/lance-io/src/uring/current_thread.rs:280-302 | rust/lance-io/src/uring/reader.rs:131-153 \u2014 before extracting anything, compare \u0060rust/lance-io/src/uring/current_thread.rs\u0060 and \u0060rust/lance-io/src/uring/reader.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 82 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":"rust/lance-io/src/uring/current_thread.rs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbed050ba8a7baa310ef9566bcc65eda7d891bf8928a569f860fc365dde67b20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:2103-2125 | rust/lance-namespace-impls/src/dir.rs:3541-3563 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":2103}}}],"partialFingerprints":{"codehealthFindingId/v1":"42dfc15a46a64a2d94d7e3dde98841f8cb68c94f893e6242d9f33c74724d40f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201323 lines \u00D7 2): rust/lance-table/src/io/commit/external_manifest.rs:80-102 | rust/lance-table/src/io/commit/external_manifest.rs:685-704 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/io/commit/external_manifest.rs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"f48bfdf51b029595652c868492cdbdf9c90ade612eba19216642043a35c7114d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 3): rust/lance-file/src/versions/v2_1/compression.rs:62-83 | rust/lance-file/src/versions/v2_2/compression.rs:54-75 | rust/lance-file/src/versions/v2_3/compression.rs:54-75 \u2014 \u0060rust/lance-file/src/versions/v2_2/compression.rs\u0060 and \u0060rust/lance-file/src/versions/v2_3/compression.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 61 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":"rust/lance-file/src/versions/v2_1/compression.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb52ecf404ec3afb9a628be943f880c7a65aa0ca0f603df7c216ac9b5a8835a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 3): rust/lance-file/src/versions/v2_1/reader.rs:110-131 | rust/lance-file/src/versions/v2_2/reader.rs:116-137 | rust/lance-file/src/versions/v2_3/reader.rs:156-177 \u2014 \u0060rust/lance-file/src/versions/v2_1/reader.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/reader.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 10 separate duplicated blocks between them, totalling at least 158 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":"rust/lance-file/src/versions/v2_1/reader.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aeea7250620e039f9ea1c481a7d0636aa3cb148a436a8c3e8d29a62a7159cfd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201322 lines \u00D7 2): java/lance-jni/src/otel.rs:264-280 | python/src/otel.rs:375-396 \u2014 before extracting anything, compare \u0060java/lance-jni/src/otel.rs\u0060 and \u0060python/src/otel.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 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":"java/lance-jni/src/otel.rs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"0205d235c8931f0847cd9144d7522ec42f92359c3b2998b66ce67df09cda09c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201322 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:5328-5346 | rust/lance/src/dataset/scanner.rs:5496-5517 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5328}}}],"partialFingerprints":{"codehealthFindingId/v1":"45758f466f99c57f156178d282651d709b88d927424b5a877f2ed9af011970fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201322 lines \u00D7 2): rust/lance/src/index/scalar/inverted.rs:546-567 | rust/lance/src/index/scalar/inverted.rs:607-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":"rust/lance/src/index/scalar/inverted.rs"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"9724f39620465aa3588f8fa634a3452bcac3d111324b646fe76c20aa32b75574"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:345-366 | rust/lance/src/io/exec/fts.rs:416-437 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"52562d6877d0b2fb71d1998761da6f2e8a484c473085ea170c74f3322aae2aa7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): rust/lance-encoding/src/encodings/physical/fsst.rs:331-352 | rust/lance-encoding/src/encodings/physical/fsst.rs:355-376 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/fsst.rs"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0736336a8e01ab8b30b8e0a1e37fcf45582342f34bf7f3605b7e461e222ab12"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): rust/lance-index/src/vector/graph.rs:399-420 | rust/lance-index/src/vector/graph.rs:478-499 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/graph.rs"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"8673bf070664cd0bac0a3f8ffb0182732c741c7d6bea3c3eff83be4c6b239af4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): rust/lance-io/src/uring/current_thread.rs:308-329 | rust/lance-io/src/uring/reader.rs:159-180 \u2014 before extracting anything, compare \u0060rust/lance-io/src/uring/current_thread.rs\u0060 and \u0060rust/lance-io/src/uring/reader.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 82 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":"rust/lance-io/src/uring/current_thread.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"89113339e2752cab8ce52b64d9c43432fd34b2fc72e94db180f6c04590db9cdb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 3): java/lance-jni/src/optimize.rs:99-119 | java/lance-jni/src/optimize.rs:198-218 | java/lance-jni/src/optimize.rs:312-332 \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":"java/lance-jni/src/optimize.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d2af1794e1b81a456bbe021b6544a0ba25e14fafa8adb8e7a3323e102e3a93a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs:432-452 | rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs:493-513 \u2014 before extracting anything, compare \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs\u0060 and \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 132 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":"rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4b8158ebb96468d8c1ef560376649b722ef0e9138d1425686da2ef968cacac2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs:465-485 | rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs:526-546 \u2014 before extracting anything, compare \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs\u0060 and \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 132 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":"rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"75895f39991432315e5028078df92b2b4e28b9c652ebfff0bfad7662c2b5a02a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs:516-536 | rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs:610-630 \u2014 before extracting anything, compare \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs\u0060 and \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 132 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":"rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b495f18d0d3fd7e7bfd0bc1f4ef82bfd6da9c180804b2b45c0c9e16b8300600"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs:549-569 | rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs:577-597 \u2014 before extracting anything, compare \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs\u0060 and \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 132 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":"rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"94b955efae01b680b5e2164e9e20b23e30fb2ccc99be428c20e7796e11e86e71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_scan.rs:88-108 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/scan.rs:122-142 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_scan.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/scan.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 47 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_scan.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"82b468161f48ec8669c2787f66de2d3c0e86e8a885a24016950b13a651c7b4b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201321 lines \u00D7 2): rust/lance/src/dataset.rs:1056-1076 | rust/lance/src/dataset.rs:1125-1142 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset.rs"},"region":{"startLine":1056}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c73605550a583b043a77388cbe6a863eb1cb401d327a50914f6bf59fb7180a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/inverted_index.rs:263-283 | rust/lance-index/src/scalar/inverted/index/inverted_index.rs:332-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":"rust/lance-index/src/scalar/inverted/index/inverted_index.rs"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cd9183d340c8be0fc47120f1f71114856ecc7e446d1960eb14dddef4c5576d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): rust/lance-io/src/object_store/providers/oss.rs:68-88 | rust/lance-io/src/object_store/providers/tos.rs:74-94 \u2014 before extracting anything, compare \u0060rust/lance-io/src/object_store/providers/oss.rs\u0060 and \u0060rust/lance-io/src/object_store/providers/tos.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 62 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":"rust/lance-io/src/object_store/providers/oss.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"1db2d5bfd6aee2e9996174e787ca89e3609cdba8b8cd84f612d3b2647ef1da71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201320 lines \u00D7 2): java/lance-jni/src/namespace.rs:234-250 | java/lance-jni/src/namespace.rs:288-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":"java/lance-jni/src/namespace.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bde1667172c7de3a325fa4f37063bf6e7fd21c3bb99c0c1d54b1859f4065496"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): python/src/dataset.rs:1502-1521 | python/src/fragment.rs:280-298 \u2014 before extracting anything, compare \u0060python/src/dataset.rs\u0060 and \u0060python/src/fragment.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 46 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":"python/src/dataset.rs"},"region":{"startLine":1502}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f0004bdbcccfeaa6d973d0f34d1dacf6d43ee114962612393c65b93b7ebea1d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:2866-2885 | rust/lance/src/index/vector/ivf.rs:2922-2941 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":2866}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8adff9717b4ee796a78016cc2a2f4ba3ca7bd1050aec1c9286e821fa0c7adb1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): rust/lance-encoding/src/decoder.rs:1649-1668 | rust/lance-encoding/src/decoder.rs:2114-2133 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":1649}}}],"partialFingerprints":{"codehealthFindingId/v1":"25c5b47646c5d9fc2e302fae5ed65693d6026714f1e83363b4564b0f8515cdde"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive.rs:6645-6664 | rust/lance-encoding/src/encodings/logical/primitive.rs:6667-6686 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6645}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d7da4e83c9846c3fdc5bcbf66399a6118a26a8b38369e4b2e116b8a9d60abc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:258-277 | rust/lance-file/src/writer/structural.rs:226-245 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"8669255a30296a8db3a21c30a3cbf898011d10a707b599e1ace089fc8e85b24a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand.rs:1374-1393 | rust/lance-index/src/scalar/inverted/wand.rs:1432-1451 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":1374}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0fb70fff9c6ae4eb5a0cfaef4b5b225f6848f161e92d52c41b631638279d139"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): rust/lance-index/src/vector/flat/storage.rs:87-106 | rust/lance-index/src/vector/flat/storage.rs:267-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":"rust/lance-index/src/vector/flat/storage.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee85b63d71d4cfb4ef91f48189ce4bd5c790c37651ef401ca7436e2863ff1df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): rust/lance-io/src/object_store/providers/azure.rs:255-274 | rust/lance-io/src/object_store/providers/gcp.rs:299-318 \u2014 before extracting anything, compare \u0060rust/lance-io/src/object_store/providers/azure.rs\u0060 and \u0060rust/lance-io/src/object_store/providers/gcp.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 57 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":"rust/lance-io/src/object_store/providers/azure.rs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e1a71c5c459e4f27028f21acde2a7a76b4db360e138b0b715e8e7da4979d844"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201320 lines \u00D7 2): rust/lance-namespace-impls/src/dir/manifest.rs:2482-2499 | rust/lance-namespace-impls/src/dir/manifest.rs:2630-2649 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2482}}}],"partialFingerprints":{"codehealthFindingId/v1":"a00485946678427f2b08f06677b407f66b4a1e46874069487094c18f5a9d281f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201320 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:2067-2086 | rust/lance-namespace-impls/src/dir.rs:3524-3538 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":2067}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc78b89851ff45da31cc1d5399a280f41b872be10b96282067a1a7e783c15f7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): rust/lance-file/src/versions/v2_1/writer.rs:206-224 | rust/lance-file/src/versions/v2_2/writer.rs:206-224 | rust/lance-file/src/versions/v2_3/writer.rs:206-224 \u2014 \u0060rust/lance-file/src/versions/v2_1/writer.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/writer.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 62 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":"rust/lance-file/src/versions/v2_1/writer.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"98380750928c7a374ead6350e82730cfa912bdb17368bd1e5b9cd27d5d352ddc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): rust/lance-index/src/vector/ivf.rs:158-176 | rust/lance-index/src/vector/ivf.rs:198-216 | rust/lance-index/src/vector/ivf.rs:248-266 \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":"rust/lance-index/src/vector/ivf.rs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac8541c1c11605377e6254293980fc0a6be8a546acb915bf06753a6b7244b55"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/flush.rs:260-278 | rust/lance/src/dataset/mem_wal/memtable/flush.rs:492-510 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/memtable/flush.rs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca3ea73394d579f1964d065e5f23f00a8f145010682f21b09c3b0c63b5b09ad1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:5449-5466 | rust/lance/src/dataset/scanner.rs:5608-5626 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5449}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdb27e4436721262bc5aa8d6144263ba166fba149285f8439d231a3d1247876c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): rust/lance/src/dataset/write/merge_insert/exec/write.rs:937-955 | rust/lance/src/dataset/write/update.rs:397-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":"rust/lance/src/dataset/write/merge_insert/exec/write.rs"},"region":{"startLine":937}}}],"partialFingerprints":{"codehealthFindingId/v1":"902b32c37154621934083fa718dfa39f5cd8b3374492f2fd3f7fc5eda2544cb4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): rust/lance/src/index/vector.rs:1299-1317 | rust/lance/src/index/vector.rs:1354-1372 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":1299}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dcfa1953e1443e45759678fc4cb3eefdad66ab4ad535dd6b5c8a48564fd71a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): rust/lance/src/index/vector.rs:1944-1962 | rust/lance/src/index/vector.rs:1983-2001 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":1944}}}],"partialFingerprints":{"codehealthFindingId/v1":"69bde080b15b7d0e5d3acf7a81722a444fc760ba0f5803a7ffa5ddd0585ac1ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:2940-2958 | rust/lance/src/io/exec/fts.rs:5118-5135 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2940}}}],"partialFingerprints":{"codehealthFindingId/v1":"6011c2e1f348803c04a3c55c5268813453fa9c7a2956ca33b1f63a92a8cf0aa2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): rust/lance-file/src/reader/structural.rs:124-142 | rust/lance-file/src/versions/v2_0/reader.rs:104-122 \u2014 before extracting anything, compare \u0060rust/lance-file/src/reader/structural.rs\u0060 and \u0060rust/lance-file/src/versions/v2_0/reader.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 101 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":"rust/lance-file/src/reader/structural.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"84c2a4d7332f1ae87a6475d4ba4d204e2415dfae5a00e43c5ba47884e05ca27d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:328-346 | rust/lance-file/src/writer/structural.rs:415-432 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcf594d9689862fd7b8003e1d54e08b7afdf648853352eda10d8431382fc58d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): rust/lance-file/src/versions/v2_2/compression.rs:110-128 | rust/lance-file/src/versions/v2_3/compression.rs:109-127 \u2014 \u0060rust/lance-file/src/versions/v2_2/compression.rs\u0060 and \u0060rust/lance-file/src/versions/v2_3/compression.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 61 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":"rust/lance-file/src/versions/v2_2/compression.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7c4f09147c6b8e4264718440e5b5d6693cf2f7e3bd68fb84856f1ca8258b969"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/inverted_index.rs:285-303 | rust/lance-index/src/scalar/inverted/index/inverted_index.rs:354-372 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/inverted_index.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"6272ccb9b1495dfd635efe16b59a912e887b7663e559cac8cdf92bc8a6d7d1e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/posting_builder.rs:743-761 | rust/lance-index/src/scalar/inverted/index/posting_builder.rs:806-823 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/posting_builder.rs"},"region":{"startLine":743}}}],"partialFingerprints":{"codehealthFindingId/v1":"8763ad2c756560af1dc0320bf102985f451e823007c94526cf1ea5524f6d0f63"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): rust/lance-index/src/vector/bq/storage.rs:2062-2079 | rust/lance-index/src/vector/storage.rs:229-247 \u2014 before extracting anything, compare \u0060rust/lance-index/src/vector/bq/storage.rs\u0060 and \u0060rust/lance-index/src/vector/storage.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 46 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":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":2062}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb58b27185280858f09915755d554dd2d70ace9efb220ee3b8a922c20af48248"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:4491-4509 | rust/lance-namespace-impls/src/dir.rs:4531-4549 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":4491}}}],"partialFingerprints":{"codehealthFindingId/v1":"369c21c843c8d498c9f9ed1c7228d37d4801d3443a9884cbb8336bd0a7436bb3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): rust/lance/src/io/commit/conflict_resolver.rs:216-233 | rust/lance/src/io/commit/conflict_resolver.rs:262-279 | rust/lance/src/io/commit/conflict_resolver.rs:283-300 | rust/lance/src/io/commit/conflict_resolver.rs:303-320 \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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a72648f2790ebffd65951e022966378091f907ede1830615114b718a47d8697"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): java/lance-jni/src/fragment.rs:485-502 | java/lance-jni/src/fragment.rs:545-561 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/fragment.rs"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc08ff858ba6564a025985c14c941f81b4f7ec9fab3e13474bc9ffe8a6455814"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): rust/compression/fsst/src/fsst.rs:963-980 | rust/compression/fsst/src/fsst.rs:993-1010 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/compression/fsst/src/fsst.rs"},"region":{"startLine":963}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb087133f631ed69cf0543d1d58607051715b3397d2a7454144324c9421b437e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): rust/lance/src/dataset/cleanup.rs:1031-1047 | rust/lance/src/dataset/cleanup.rs:1102-1119 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":1031}}}],"partialFingerprints":{"codehealthFindingId/v1":"18a4f7335f80aef0abb0d31b11dbd70d99f8aa370ddcd39c0ef9db658a7fa62a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs:654-671 | rust/lance/src/dataset/mem_wal/scanner/builder.rs:451-468 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/scanner/builder.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. 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"7acbfae546bde135ca93bbedf0d0efadc5e81d19124a0afbcd4ced74054b6274"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): rust/lance/src/index/vector.rs:1595-1612 | rust/lance/src/index/vector.rs:1635-1652 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":1595}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9f28cd8c292bada1ac58715668a0e17e47a67dd85966e5022e77d380596e450"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): rust/lance-encoding/src/decoder.rs:1637-1654 | rust/lance-encoding/src/decoder.rs:1884-1901 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":1637}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aee8810664fa217f9a52892d14047225ed20e48ff78842a19f31a26e3203d2b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): rust/lance-file/src/versions/v2_1/reader.rs:75-92 | rust/lance-file/src/versions/v2_2/reader.rs:75-92 \u2014 \u0060rust/lance-file/src/versions/v2_1/reader.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/reader.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 10 separate duplicated blocks between them, totalling at least 158 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":"rust/lance-file/src/versions/v2_1/reader.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d71fc30254971677f890ed10c298d9b71ba848fee47d9068d22bdd8e2cd0562"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/doc_set.rs:485-502 | rust/lance-index/src/scalar/inverted/index/doc_set.rs:523-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":"rust/lance-index/src/scalar/inverted/index/doc_set.rs"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"1618446ad9702d4ba6e977a4eff260f0285dd098aaddb9697e9ae4a63294bf04"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand.rs:4185-4202 | rust/lance-index/src/scalar/inverted/wand.rs:4303-4320 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":4185}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b173a6c4c180aa055c7190d65952ee1d9e8152cd3793368eec8c1777d78e6e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand_maxscore.rs:505-522 | rust/lance-index/src/scalar/inverted/wand_maxscore.rs:607-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":"rust/lance-index/src/scalar/inverted/wand_maxscore.rs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eeac5bfa84dc66d987494b374ecc89023e936f19373fb323427a8b620c69b25"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): rust/lance-table/src/io/commit/dynamodb.rs:271-287 | rust/lance-table/src/io/commit/dynamodb.rs:304-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":"rust/lance-table/src/io/commit/dynamodb.rs"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"01325a37e58d620206005f56c0af96beefa998de80eaa9b8255caaa30ac2733b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): java/lance-jni/src/blocking_dataset.rs:2551-2567 | java/lance-jni/src/blocking_dataset.rs:2603-2619 | java/lance-jni/src/blocking_dataset.rs:2661-2677 \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":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":2551}}}],"partialFingerprints":{"codehealthFindingId/v1":"d11034a853a1ee22d36d3460f0af18c2eba46c6a49c001f65756926b9abb1238"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs:164-180 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/btree.rs:117-133 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs:132-148 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/btree.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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"52331c70a54cf4b816b4610abc22084542339cadb9afca64ff5d9b1f163d5044"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201317 lines \u00D7 3): rust/lance/src/dataset/mem_wal/scanner/fts_search.rs:1119-1130 | rust/lance/src/dataset/mem_wal/scanner/planner.rs:363-379 | rust/lance/src/dataset/mem_wal/scanner/vector_search.rs:509-525 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/scanner/fts_search.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/scanner/planner.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 38 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":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"42d61a3c22d7a791723a89c60534b0d0bca6697eedf37dd1bb05c693ab5afb73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): java/lance-jni/src/blocking_dataset.rs:444-459 | java/lance-jni/src/transaction.rs:2338-2354 \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":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"47cc0480a9961e2b30ef5170760574e902413427b974db6c00ff5a90b738a258"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): java/lance-jni/src/schema.rs:257-273 | java/lance-jni/src/schema.rs:315-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":"java/lance-jni/src/schema.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1eb82401c07d9c43007af83578673fdca8f1925e0d97109a5211109117929f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 2): python/src/indices.rs:423-437 | python/src/indices.rs:593-609 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/indices.rs"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0b326f191fb177157bafd41f99990b8866848257ce0d0efdc357d29ab68b6eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/btree.rs:92-108 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs:109-125 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/btree.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/btree.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3e200ce8c9cc08171739ced45ec02b8abfbb3807c632058522fac7b6df520b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_scan.rs:113-129 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/scan.rs:147-163 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_scan.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/scan.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 47 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_scan.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbd0d0c0872fb036e4f87b7836512d84a0cca256c9505e5f09783b95edcc0a9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:7346-7362 | rust/lance/src/dataset/scanner.rs:7412-7428 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":7346}}}],"partialFingerprints":{"codehealthFindingId/v1":"7686923b2893ecced1f5c84273ca3a56ca94691a53e35235e33104049cb3e3e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): rust/lance/src/index/vector/ivf/v2.rs:460-476 | rust/lance/src/index/vector/ivf/v2.rs:1796-1812 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf/v2.rs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ba2c2d7279eadc0576c033aea045bfe1e87347d809c20c8f8bd1e50742928f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:2679-2695 | rust/lance/src/io/exec/fts.rs:2743-2759 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2679}}}],"partialFingerprints":{"codehealthFindingId/v1":"4544a2e925a7e79d3cb0b014301bd851b334390617f9a88cdef9acc1a2373f61"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:4897-4913 | rust/lance/src/io/exec/fts.rs:4953-4969 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":4897}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc916f44526e0f82f985bfce84a25843e825a19c5d13cec82287bfb7c1a589ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): rust/lance-core/src/datatypes/field.rs:1237-1253 | rust/lance-encoding/src/encoder/structural.rs:233-249 \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":"rust/lance-core/src/datatypes/field.rs"},"region":{"startLine":1237}}}],"partialFingerprints":{"codehealthFindingId/v1":"30498fb987d8280842a6c1468ca3ad7c9cdb8dfc79a9ccb5aea7a6f1883e7e92"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201317 lines \u00D7 2): rust/lance-index/src/scalar/zonemap.rs:1224-1240 | rust/lance-index/src/scalar/zonemap.rs:1719-1732 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/zonemap.rs"},"region":{"startLine":1224}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b29072b568e9c0b3dda5604780eaacd55be6084970750afefc0d403ee293804"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): rust/lance-index/src/vector/hnsw/builder.rs:890-906 | rust/lance-index/src/vector/hnsw/online.rs:351-367 \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":"rust/lance-index/src/vector/hnsw/builder.rs"},"region":{"startLine":890}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aabaa0212053f0c39d062e568e4643272184a94ad818b1c3ef69f30a3435543"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 3): rust/lance/src/index/vector/ivf.rs:2719-2733 | rust/lance/src/index/vector/ivf.rs:2866-2881 | rust/lance/src/index/vector/ivf.rs:2922-2937 \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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":2719}}}],"partialFingerprints":{"codehealthFindingId/v1":"21dcaebabd6f8d635d5e76d9bf210adf9ce5a32349a703541f5c3d4477764f43"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 3): rust/lance-encoding/src/array_encoding/physical/fsst.rs:162-175 | rust/lance-encoding/src/encodings/physical/fsst.rs:55-70 | rust/lance-encoding/src/encodings/physical/fsst.rs:88-103 \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":"rust/lance-encoding/src/array_encoding/physical/fsst.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"dba11b89012919221d60f1336cff8cd905b89aeffe4bb97c40153976d67a7aaa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): rust/lance-index/src/scalar/inverted.rs:155-170 | rust/lance-index/src/scalar/inverted/index/partition.rs:943-958 | rust/lance-index/src/scalar/inverted/index/search.rs:428-443 \u2014 before extracting anything, compare \u0060rust/lance-index/src/scalar/inverted.rs\u0060 and \u0060rust/lance-index/src/scalar/inverted/index/search.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 47 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":"rust/lance-index/src/scalar/inverted.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"f44b7d531c8347a2462cfe602576350ee97f0b73a73c19631bdf0432510f3fbe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 3): rust/lance-io/src/object_store/providers/aws.rs:241-256 | rust/lance-io/src/object_store/providers/azure.rs:284-298 | rust/lance-io/src/object_store/providers/gcp.rs:328-342 \u2014 before extracting anything, compare \u0060rust/lance-io/src/object_store/providers/aws.rs\u0060 and \u0060rust/lance-io/src/object_store/providers/gcp.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":"rust/lance-io/src/object_store/providers/aws.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"1205c2827da05636836924a4c77d71471f579a60a94eabf6f3b0350fe7adc608"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance/src/datafusion/dataframe.rs:164-179 | rust/lance/src/dataset/udtf.rs:103-118 \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":"rust/lance/src/datafusion/dataframe.rs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"c78fa36c86eb4e7c4adb656125befca0b518452385ed364b1524b4667ee9ebfc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance/src/dataset/builder.rs:325-340 | rust/lance/src/dataset/builder.rs:355-370 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/builder.rs"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8c9a0441e695766833cba5b39c9bb86a87c8eea3bfbd2a28d83eb2f0f6780d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201316 lines \u00D7 2): rust/lance/src/dataset/hash_joiner.rs:132-147 | rust/lance/src/dataset/hash_joiner.rs:221-233 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/hash_joiner.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f58c296fe6b71a5d5a6d4df7da5aa33cb6d41bcfd34828affc6fd04fd9ff455"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance/src/dataset/mem_wal/index/fts.rs:2175-2190 | rust/lance/src/dataset/mem_wal/index/fts.rs:2245-2260 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":2175}}}],"partialFingerprints":{"codehealthFindingId/v1":"38bb71ffd7f74261af91320f4c5358398791e244e69d5a786e96115319ea44ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance/src/index/scalar/inverted.rs:479-494 | rust/lance/src/index/scalar/inverted.rs:500-515 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/scalar/inverted.rs"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"9648b86414d13d91a7dcb8389923c468fbc55a96aee079b077e231aa259e0d30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance/src/index/vector/utils.rs:731-746 | rust/lance/src/index/vector/utils.rs:916-931 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/utils.rs"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7af84bc8ba0ea25f6c2f7e766455a79979d2caa688ce9e8e6db77485698de84"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance/src/index/vector.rs:877-892 | rust/lance/src/index/vector.rs:898-913 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"f872a84d38cf61fa7acb7a95dcf95229ccadd1fde41e100925284d616c1860a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance/src/index/vector.rs:1002-1017 | rust/lance/src/index/vector.rs:1020-1035 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":1002}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bae61c70e857101baef507448be30191a724bb632322245cace104ea39a7d75"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:2962-2977 | rust/lance/src/io/exec/fts.rs:5138-5153 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2962}}}],"partialFingerprints":{"codehealthFindingId/v1":"590fdb6f21d8fb19b1cc285bebf7d99b404faa07534d75b7205c1adc3173b096"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-arrow/src/json.rs:635-650 | rust/lance-arrow/src/json.rs:665-680 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-arrow/src/json.rs"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cd3b3affe1c0c27e35f531473880df8c3392b000c77c9af4e24645969297692"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): rust/lance-datafusion/src/planner.rs:622-637 | rust/lance-datafusion/src/planner.rs:639-653 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/planner.rs"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"1997b970fac270f941e21556534eeba6f9441a4748fb10042bfc2385f69cda0c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-encoding/src/compression.rs:1338-1353 | rust/lance-encoding/src/compression.rs:1366-1381 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/compression.rs"},"region":{"startLine":1338}}}],"partialFingerprints":{"codehealthFindingId/v1":"29b3ef1ca3c8028cf521460b2417ad9941d645983442edc03ce560fcba558c02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive.rs:1881-1896 | rust/lance-encoding/src/encodings/logical/primitive/constant.rs:324-339 \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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":1881}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a0b1878bcb84ffb36b481407ade5bfbe62d5ba0db518f753a7cc156361d85bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive/sparse.rs:831-846 | rust/lance-encoding/src/encodings/logical/primitive/sparse.rs:873-888 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":831}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0d144b88ea0015aa737ad4ee776f91cbc48c24c9e563444deda10c481f53f53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/struct.rs:512-527 | rust/lance-encoding/src/encodings/logical/struct.rs:591-606 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/struct.rs"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"834a170f3613bf30085a3f9cab88789e9ce7ec44bd43d7fc58788078318efc42"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-file/src/versions/v1/writer/mod.rs:522-537 | rust/lance-file/src/versions/v1/writer/mod.rs:571-586 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/writer/mod.rs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fa42f6eb6d991a546912a6048db66e75613609ea6aa21534deecbebc9cace9f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-index/src/scalar/bitmap.rs:436-451 | rust/lance-index/src/scalar/bitmap.rs:481-496 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/bitmap.rs"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"354b3a1a926544fbeb1489f34ceee27119c8a56e0149a98d3a334d9e3babbf22"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-index/src/scalar/expression.rs:1232-1247 | rust/lance-index/src/scalar/expression.rs:1249-1264 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/expression.rs"},"region":{"startLine":1232}}}],"partialFingerprints":{"codehealthFindingId/v1":"614525139617a8b13184aa2e0cc793f441733d6685c1651f96f51eefba52a253"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/partition.rs:1071-1086 | rust/lance-index/src/scalar/inverted/index/partition.rs:1199-1214 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/partition.rs"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"25af5dfe1e052cd8eb3ee96f7081a9e46bf87db582c3e1a73b763c415c6f6fea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-index/src/vector/bq/storage.rs:1081-1096 | rust/lance-index/src/vector/bq/storage.rs:1149-1164 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":1081}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bfc7b6fae5d797860093b3c7bcaee21c05ca4fa0bb69387df18c596499f86cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-index/src/vector/flat/storage.rs:172-187 | rust/lance-index/src/vector/flat/storage.rs:348-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":"rust/lance-index/src/vector/flat/storage.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"60335dfe1735f9132ea91151b8422c53a46322d1fa91b0c1ceee414d5297919e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-io/src/scheduler.rs:200-215 | rust/lance-io/src/scheduler/lite.rs:336-351 \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":"rust/lance-io/src/scheduler.rs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ca0157d20ec89c89d3fef26a2f399b501b50ce7907182f9553583a3f23a1959"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-io/src/uring/current_thread.rs:414-429 | rust/lance-io/src/uring/reader.rs:304-319 \u2014 before extracting anything, compare \u0060rust/lance-io/src/uring/current_thread.rs\u0060 and \u0060rust/lance-io/src/uring/reader.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 82 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":"rust/lance-io/src/uring/current_thread.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f8e5ea65412be28f15c2f5a46a7d88a2afcd99d0cbc504636544c73a9936e4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-linalg/src/simd/dist_table.rs:891-906 | rust/lance-linalg/src/simd/dist_table.rs:1098-1113 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":891}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeb0977eb7ecd1919ef1d4a302b827d94bea665877afde304dd77f2c1fc55326"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:702-717 | rust/lance-linalg/src/simd/f64.rs:547-562 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/simd/f32.rs\u0060 and \u0060rust/lance-linalg/src/simd/f64.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 68 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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"583a2e9984a935de7529302ac26fe9a959bd52f2ca4ad01b06f607324fdef8a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-table/src/rowids/index.rs:632-647 | rust/lance-table/src/rowids/index.rs:692-707 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids/index.rs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bd60aa57ac49ce4e5564d8d241fc89ed5420ebaea4fad33da37922e5a2c3c60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201315 lines \u00D7 5): rust/lance-index/src/vector/distributed/index_merger.rs:1053-1067 | rust/lance-index/src/vector/distributed/index_merger.rs:1112-1124 | rust/lance-index/src/vector/distributed/index_merger.rs:1219-1233 | rust/lance-index/src/vector/distributed/index_merger.rs:1380-1392 | rust/lance-index/src/vector/distributed/index_merger.rs:1476-1488 \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":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":1053}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d80cc0959dacae9e50d1af17309bc089e6c79bc1a234801ccc3b0a1521e1942"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): rust/lance/src/index/vector.rs:1666-1680 | rust/lance/src/index/vector.rs:1684-1698 | rust/lance/src/index/vector.rs:1702-1716 | rust/lance/src/index/vector.rs:1720-1734 \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":"rust/lance/src/index/vector.rs"},"region":{"startLine":1666}}}],"partialFingerprints":{"codehealthFindingId/v1":"667e9951d36e49787195af6267b8e5d78d1291a976a82a340b8945cfcbfb0ef9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): rust/lance/src/index/vector.rs:1559-1573 | rust/lance/src/index/vector.rs:1577-1591 | rust/lance/src/index/vector.rs:1617-1631 \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":"rust/lance/src/index/vector.rs"},"region":{"startLine":1559}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cc1b32ac2140717c8d3b1d311b43d307069f3bc691cedd9e80c805067ff7fc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): rust/lance-datafusion/src/expr.rs:389-403 | rust/lance-datafusion/src/expr.rs:521-535 | rust/lance-datafusion/src/expr.rs:537-551 \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":"rust/lance-datafusion/src/expr.rs"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"51e51a96ad8e94e00676ce97a4f440ea5c20ffee02aa25543df1f8972eac0d6e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 3): rust/lance-encoding/src/encodings/logical/primitive/dict.rs:257-271 | rust/lance-encoding/src/encodings/logical/primitive/dict.rs:335-348 | rust/lance-encoding/src/encodings/logical/primitive/dict.rs:391-404 \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":"rust/lance-encoding/src/encodings/logical/primitive/dict.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"c436ab7aa08166caced1f7f1a46931d3a4b18af15caec8b0db480ab0c1c079ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201315 lines \u00D7 2): java/lance-jni/src/blocking_dataset.rs:2896-2910 | java/lance-jni/src/blocking_dataset.rs:2941-2951 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":2896}}}],"partialFingerprints":{"codehealthFindingId/v1":"042c4faa6b5283c94af301e71414cb9ceba74b76e5582eac4dbe036d171f30e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): java/lance-jni/src/mem_wal.rs:907-921 | python/src/mem_wal.rs:816-830 \u2014 before extracting anything, compare \u0060java/lance-jni/src/mem_wal.rs\u0060 and \u0060python/src/mem_wal.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 51 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":"java/lance-jni/src/mem_wal.rs"},"region":{"startLine":907}}}],"partialFingerprints":{"codehealthFindingId/v1":"06b813144d2ff8464efdb6c8263f05359bc41bc2a372dbe8b04c8273ddcd882d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201315 lines \u00D7 2): python/src/file.rs:341-355 | python/src/file.rs:932-939 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/file.rs"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"53e34c3f4baf455bd55ab69aafecc6d6e15625517b386b9622977f0e1bb5299f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance/src/dataset/blob.rs:272-286 | rust/lance/src/dataset/blob.rs:291-305 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"97328a07040cc2ad2aed080009bfb9436ef6f3dd819e4912d3720fc4c6ff350d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201315 lines \u00D7 2): rust/lance/src/dataset/fragment.rs:1980-1994 | rust/lance/src/dataset/fragment/session.rs:61-71 \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":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":1980}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3ccce1d366867216ee60c9d86f3de89cc425049a629ce6caa292384c277ec26"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance/src/dataset/fragment.rs:2539-2553 | rust/lance/src/dataset/write/merge_insert.rs:2070-2084 \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":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":2539}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a5ba140c28c2988754fc387bbf8097d9b12476321a1b74ee6bad3805376d7cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs:109-123 | rust/lance/src/io/exec/pushdown_scan.rs:137-151 \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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"445e1cffa36d2d2694adf73e26199500ecc77b76c2785946d33efae1d3c12451"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/planner.rs:429-443 | rust/lance/src/dataset/mem_wal/scanner/vector_search.rs:592-606 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/scanner/planner.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/scanner/vector_search.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 89 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":"rust/lance/src/dataset/mem_wal/scanner/planner.rs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5b03d08199e5c70071f53870fc06f351d17b9e6784667ea57b566acb456ca58"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): rust/lance/src/dataset/mem_wal/write.rs:2795-2809 | rust/lance/src/dataset/mem_wal/write.rs:2921-2934 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/write.rs"},"region":{"startLine":2795}}}],"partialFingerprints":{"codehealthFindingId/v1":"07217eefb7cd6f0a3586749c1206470af558fcf578eb567665539f179130d252"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance/src/index/vector/ivf/v2.rs:1232-1246 | rust/lance/src/index/vector/ivf/v2.rs:1258-1272 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf/v2.rs"},"region":{"startLine":1232}}}],"partialFingerprints":{"codehealthFindingId/v1":"1808440837bebc064e04e65e95043a413a504fc7b88ac67a5d6f775131d65020"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance/src/io/commit/conflict_resolver.rs:1195-1209 | rust/lance/src/io/commit/conflict_resolver.rs:1708-1722 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":1195}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed8c5e891bf48fd35088ee31886cea6b5dcb4c523208f067f9add70df17c38e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance/src/io/exec/filtered_read.rs:3252-3266 | rust/lance/src/io/exec/filtered_read.rs:3279-3293 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":3252}}}],"partialFingerprints":{"codehealthFindingId/v1":"9374e1bddabe1c8719309fddbdd2b4bd0466fcd7e16d182b8d304ed22a31d3c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:2922-2936 | rust/lance/src/io/exec/fts.rs:5102-5115 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2922}}}],"partialFingerprints":{"codehealthFindingId/v1":"62bae34ded551260f4e555c0698d1332204b801c3f568b7cc4fe7dcb5b35454e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:4142-4156 | rust/lance/src/io/exec/fts.rs:4198-4212 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":4142}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4fb7d5c00e4f09b6fcc74c861efa25513025240bc9802d03a63d6b00ad2904f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): rust/lance/src/index/vector/ivf/io.rs:480-493 | rust/lance/src/index/vector/ivf/io.rs:504-518 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf/io.rs"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"34c6ea5a98996c613edaf9736333fa87fa8799c79d01f8fc7da3024935ccc00b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance-encoding/src/encodings/physical/rle.rs:764-778 | rust/lance-encoding/src/encodings/physical/rle.rs:845-859 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/rle.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"c86c9b29b87784dcc0154badba8b7ab2f0e8ddb07caf2d9b5495c8c1226026da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance-file/src/reader.rs:2355-2369 | rust/lance-file/src/reader.rs:2403-2417 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/reader.rs"},"region":{"startLine":2355}}}],"partialFingerprints":{"codehealthFindingId/v1":"892a85e0ca033245fc7a2f28dd7d870f03c2400139cab0f40fa48760d3364aea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance-index/src/vector/bq/storage.rs:2101-2115 | rust/lance-index/src/vector/storage.rs:200-214 \u2014 before extracting anything, compare \u0060rust/lance-index/src/vector/bq/storage.rs\u0060 and \u0060rust/lance-index/src/vector/storage.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 46 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":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":2101}}}],"partialFingerprints":{"codehealthFindingId/v1":"27280bdfe2fda63711a2868a68f52bf155df84e2414c50cb1e136e0ea0e4668d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201315 lines \u00D7 2): rust/lance-index/src/vector/pq/storage.rs:556-570 | rust/lance-index/src/vector/pq/storage.rs:590-601 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/pq/storage.rs"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"af1dc6bf6488c38db1491397473a972db5f891979761d5c0ba4939d56572a016"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance-io/src/object_store.rs:870-884 | rust/lance-io/src/object_store.rs:935-949 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/object_store.rs"},"region":{"startLine":870}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a6e66c99b76e9be0785cfd297b13bec7aad17736fd6356962b28fb486c867c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance-io/src/uring/current_thread.rs:395-409 | rust/lance-io/src/uring/reader.rs:285-299 \u2014 before extracting anything, compare \u0060rust/lance-io/src/uring/current_thread.rs\u0060 and \u0060rust/lance-io/src/uring/reader.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 82 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":"rust/lance-io/src/uring/current_thread.rs"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbad9b80e7abf7dfecb33946d97e3498e3b931c9558482ea978d9fb237132ada"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance-linalg/src/distance/cosine_u8.rs:93-107 | rust/lance-linalg/src/distance/dot_u8.rs:57-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":"rust/lance-linalg/src/distance/cosine_u8.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"1be5298d732542fc2626d2594407f85f9b96e2df4dce2a9c333faca3e76d35cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): rust/lance-namespace-impls/src/credentials/azure.rs:800-814 | rust/lance-namespace-impls/src/credentials/azure.rs:866-879 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/credentials/azure.rs"},"region":{"startLine":800}}}],"partialFingerprints":{"codehealthFindingId/v1":"77c9cdee3b894f2b8b743b7bb252990d114594f0533f1be24b633aed6c078d76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): rust/lance/src/dataset/scanner.rs:6607-6620 | rust/lance/src/dataset/scanner.rs:7710-7723 | rust/lance/src/dataset/scanner.rs:7770-7783 | rust/lance/src/dataset/scanner.rs:7793-7806 \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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":6607}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a88f0f38f399e97a95eb84ee203d3fc201bc5c174acb728b3e4d2c10fdb848b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): rust/lance-index/src/vector/ivf.rs:128-141 | rust/lance-index/src/vector/ivf.rs:156-169 | rust/lance-index/src/vector/ivf.rs:196-209 | rust/lance-index/src/vector/ivf.rs:246-259 \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":"rust/lance-index/src/vector/ivf.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"65f61713f4cb3db9291ad8e0aaba4697fd2f10c95823fb4f5e7831a996a2ee98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 4): rust/lance-index/src/vector/ivf.rs:123-134 | rust/lance-index/src/vector/ivf.rs:191-202 | rust/lance-index/src/vector/ivf.rs:241-252 | rust/lance-index/src/vector/ivf.rs:284-297 \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":"rust/lance-index/src/vector/ivf.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ddf0ef1030c0e4217d86f06b03a8b8709c3b81e6348bd3038313c29e47f69b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 3): rust/compression/fsst/src/fsst.rs:963-976 | rust/compression/fsst/src/fsst.rs:993-1006 | rust/compression/fsst/src/fsst.rs:1023-1034 \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":"rust/compression/fsst/src/fsst.rs"},"region":{"startLine":963}}}],"partialFingerprints":{"codehealthFindingId/v1":"81b85da167086df35b562c6ee1965f5ae7117559720f2f44db0498e094bac32b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): rust/lance/src/dataset/write/delete.rs:58-71 | rust/lance/src/dataset/write/merge_insert.rs:3040-3053 | rust/lance/src/dataset/write/merge_insert/exec.rs:72-85 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/write/delete.rs\u0060 and \u0060rust/lance/src/dataset/write/merge_insert.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":"rust/lance/src/dataset/write/delete.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"655c8481c0083b93e451b514ba4eddc0cdc3dde494914c69704459354831c757"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): rust/lance/src/dataset/write/delete.rs:77-90 | rust/lance/src/dataset/write/merge_insert.rs:3059-3072 | rust/lance/src/dataset/write/merge_insert/exec.rs:91-104 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/write/delete.rs\u0060 and \u0060rust/lance/src/dataset/write/merge_insert.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":"rust/lance/src/dataset/write/delete.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"15449474fb2f6a1fdad5e0ec481a48c7e35a6c580b825fccec05b8e730d2ade7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): rust/lance-file/src/versions/v1/writer/statistics.rs:266-279 | rust/lance-file/src/versions/v1/writer/statistics.rs:343-356 | rust/lance-file/src/versions/v1/writer/statistics.rs:417-430 \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":"rust/lance-file/src/versions/v1/writer/statistics.rs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"8683dcd7f4cbdb651479e2dd0664a945c22e46d53989b57e7bc10f2c00d9aea5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): rust/lance-file/src/versions/v2_1/reader.rs:219-232 | rust/lance-file/src/versions/v2_2/reader.rs:221-234 | rust/lance-file/src/versions/v2_3/reader.rs:259-272 \u2014 \u0060rust/lance-file/src/versions/v2_1/reader.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/reader.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 10 separate duplicated blocks between them, totalling at least 158 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":"rust/lance-file/src/versions/v2_1/reader.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c0bab7deab5dc5d7571dc24130f5d6fd442c7d94d4390fdee2f79d119b81a5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): rust/lance-namespace-impls/src/dir/manifest.rs:2956-2969 | rust/lance-namespace-impls/src/dir/manifest.rs:3164-3177 | rust/lance-namespace-impls/src/dir/manifest.rs:3637-3650 \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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2956}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ad407db4c73f4229730a42b6db5036d19667089ca288698859f2200aacab535"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): java/lance-jni/src/otel.rs:88-101 | python/src/otel.rs:135-148 \u2014 before extracting anything, compare \u0060java/lance-jni/src/otel.rs\u0060 and \u0060python/src/otel.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 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":"java/lance-jni/src/otel.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"83ac3b29d37572f78a32ee2ba93147a2f3c057528f19c597754c63639c184268"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): python/src/dataset.rs:1287-1300 | python/src/fragment.rs:243-256 \u2014 before extracting anything, compare \u0060python/src/dataset.rs\u0060 and \u0060python/src/fragment.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 46 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":"python/src/dataset.rs"},"region":{"startLine":1287}}}],"partialFingerprints":{"codehealthFindingId/v1":"990df3ffc9e0e0398fff428d1b5cb4693479ca610aa86b18736560fa6dcf87a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): python/src/dataset.rs:5574-5587 | python/src/dataset.rs:5599-5612 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":5574}}}],"partialFingerprints":{"codehealthFindingId/v1":"4feb53eb006fe67b5175784015498e76a3185f2e607bb424cbb9d7cf13ec6142"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/compression/fsst/src/fsst.rs:84-97 | rust/compression/fsst/src/fsst.rs:102-115 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/compression/fsst/src/fsst.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"998423d07bca5233ac2d125290c23ff810d668441930c6969d1984829937aad2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance/src/bin/fm_contains_bench.rs:218-231 | rust/lance/src/bin/fm_index_tool.rs:70-83 \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":"rust/lance/src/bin/fm_contains_bench.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"462a1ea332b91f1597d9175224e421cf02c95432a2458727292a0c29071da7fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance/src/dataset/mem_wal/hnsw/graph.rs:854-867 | rust/lance/src/dataset/mem_wal/hnsw/graph.rs:943-956 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/hnsw/graph.rs"},"region":{"startLine":854}}}],"partialFingerprints":{"codehealthFindingId/v1":"4afa015683d7c468dd957a3ba968fc47546a36137ccb4b4e04d42e9105af6ade"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance/src/dataset/mem_wal/index/btree.rs:355-368 | rust/lance/src/dataset/mem_wal/index/btree.rs:551-564 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/index/btree.rs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8495f4762bb33cd6191dd38ec6bb7b3ba505b2208a4d77886f0406cf6074284"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): rust/lance/src/dataset/mem_wal/index/fts.rs:1825-1836 | rust/lance/src/io/exec/fts.rs:2294-2307 \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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":1825}}}],"partialFingerprints":{"codehealthFindingId/v1":"50254fcbcab43e34c0bd3f0b4169436800842789c478413041a845c77bd8ea06"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/collector.rs:292-305 | rust/lance/src/dataset/mem_wal/scanner/collector.rs:333-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":"rust/lance/src/dataset/mem_wal/scanner/collector.rs"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"4752c8f25c1969b3a7c789db822bafbce7aceb09dd3556265758af7d33eb7705"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance/src/dataset/mem_wal/wal.rs:1240-1253 | rust/lance/src/dataset/mem_wal/wal.rs:1330-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":"rust/lance/src/dataset/mem_wal/wal.rs"},"region":{"startLine":1240}}}],"partialFingerprints":{"codehealthFindingId/v1":"d74575d5e6d2929190fdc550dea1df276cb93b5db68165407668a99e651cbaa1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance/src/dataset/mem_wal/wal.rs:1663-1676 | rust/lance/src/dataset/mem_wal/wal.rs:1691-1704 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/wal.rs"},"region":{"startLine":1663}}}],"partialFingerprints":{"codehealthFindingId/v1":"190b434222b595f0d409ded14b45b08254ab938650c43d9650c3abac2ff1c3ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:5353-5366 | rust/lance/src/dataset/scanner.rs:5519-5532 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5353}}}],"partialFingerprints":{"codehealthFindingId/v1":"593e29fc5a1acb38b5ed55aa32aa2646b815f687b956400016817ebec7396c01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:5721-5733 | rust/lance/src/dataset/scanner.rs:6085-6098 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5721}}}],"partialFingerprints":{"codehealthFindingId/v1":"98c1da1d59da2b6e5e0bda42379ce85650477f1394b3a87f3cbaf8b485bcfe40"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance/src/dataset/write/merge_insert/exec/write.rs:825-838 | rust/lance/src/dataset/write/merge_insert/logical_plan.rs:142-155 \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":"rust/lance/src/dataset/write/merge_insert/exec/write.rs"},"region":{"startLine":825}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e829cd57e13252c0c5fca11d61a60b3f7efafa53339d171de3dcfcfe20ede0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201314 lines \u00D7 2): rust/lance/src/index/append.rs:459-472 | rust/lance/src/index/append.rs:1298-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":"rust/lance/src/index/append.rs"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"8347c5b77834c3865a502b7a1adfdfa03e13da1b4a7caf2027b0963a4dcc2f32"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:1056-1069 | rust/lance/src/index/vector/ivf.rs:1144-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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":1056}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c03e35357cf679f6b072b788bb9678b7dc736fdeaad143b4a6e50f3b9811680"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): rust/lance/src/index/vector.rs:1929-1941 | rust/lance/src/index/vector.rs:1965-1978 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":1929}}}],"partialFingerprints":{"codehealthFindingId/v1":"f267e80a66c626b4847e936c2c100025dc97123252e9b732dd4d33c1fda4af29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:2986-2999 | rust/lance/src/io/exec/fts.rs:5162-5174 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2986}}}],"partialFingerprints":{"codehealthFindingId/v1":"36bb4e207af0da7ddd6f13e125cee117ad9595a24533cc981a116a2eaef8ebd2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:5323-5336 | rust/lance/src/io/exec/fts.rs:5590-5603 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":5323}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9ea274b6e3fcc5ad2bffab76024a4dbe565d81165a46037f42d757533ce16e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-core/src/utils/row_addr_remap.rs:508-521 | rust/lance-core/src/utils/row_addr_remap.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":"rust/lance-core/src/utils/row_addr_remap.rs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5df32f21b79b5c236b1a7180529f63c49d3fe380fbcfdecd82b6ba7cf99120e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive/chunk_index.rs:262-275 | rust/lance-encoding/src/encodings/logical/primitive/chunk_index.rs:307-320 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive/chunk_index.rs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1b34e5bcd448bac064377d8d351b2378bf88a37c152fd22f62ed73db44beb79"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive/sparse.rs:335-348 | rust/lance-encoding/src/encodings/logical/primitive/sparse.rs:4167-4180 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8e228a43d4d8422dade8e2eb8d9b5420e112bd2868f6542d571895c44b13f82"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): rust/lance-encoding/src/encodings/physical/bitpacking.rs:345-356 | rust/lance-encoding/src/encodings/physical/bitpacking.rs:368-381 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/bitpacking.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f8c8ce3047c9c85239155b0b1cd85410cc0d8b1a4b116bef74b0ebd3709dbe7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-encoding/src/encodings/physical/packed.rs:729-742 | rust/lance-encoding/src/encodings/physical/packed.rs:768-781 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/packed.rs"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd8c1c4b6aef305ef50411fea65ca3169395981426d716bdb21ba69a1ed36e1e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-file/src/concat.rs:463-476 | rust/lance-file/src/concat.rs:481-494 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/concat.rs"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"c75bea359b12e722a75ee47d2171658f85566e614de659238c74bba0bd79de09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-file/src/reader.rs:1121-1134 | rust/lance-file/src/reader.rs:1561-1574 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/reader.rs"},"region":{"startLine":1121}}}],"partialFingerprints":{"codehealthFindingId/v1":"66593fc239fd533cb5c71415b6aa6800f564af2a9d8d35e8f933ffaa140f9660"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/partition.rs:845-858 | rust/lance-index/src/scalar/inverted/index/partition.rs:883-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":"rust/lance-index/src/scalar/inverted/index/partition.rs"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"292550600d8f145077b150fb0ee776c67c1f93718e5678adc0dd48abfdf547fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/partition.rs:1160-1173 | rust/lance-index/src/scalar/inverted/index/partition.rs:1224-1237 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/partition.rs"},"region":{"startLine":1160}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a84d9db898d9c52dc7fb65f0ec5053520a9eb1b5b083299a116dfd845eb7c98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand_maxscore.rs:585-598 | rust/lance-index/src/scalar/inverted/wand_maxscore.rs:632-645 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand_maxscore.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5f81d07069640424187e87c3cb649def50118c70de4900a12ed1c1c6482bc26"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-index/src/vector/distributed/index_merger.rs:1577-1590 | rust/lance-index/src/vector/distributed/index_merger.rs:1607-1620 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":1577}}}],"partialFingerprints":{"codehealthFindingId/v1":"8406f28c3b4ec9014625d9a6cc4bce83d5fd3f6a404536f4db9d940b04540043"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-io/src/object_store/throttle.rs:835-848 | rust/lance-io/src/object_store/throttle.rs:855-868 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/object_store/throttle.rs"},"region":{"startLine":835}}}],"partialFingerprints":{"codehealthFindingId/v1":"e117b18c30df48d38996900c7213a0727a71b323777ee3b3f2a767b1adc08300"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-linalg/src/distance/cosine_u8.rs:120-133 | rust/lance-linalg/src/distance/cosine_u8.rs:171-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":"rust/lance-linalg/src/distance/cosine_u8.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e9c6da073dcb3ddd438b07f1b5985f52078bd8fd6554a775d4c8bc64bc2e1a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201314 lines \u00D7 2): rust/lance-linalg/src/simd/dist_table.rs:588-598 | rust/lance-linalg/src/simd/dist_table.rs:687-700 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"6379d5e19e2054d2897c7671dfadf92ce3fb1c62ffd671a296f42d51deaca064"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-linalg/src/simd/f64.rs:231-244 | rust/lance-linalg/src/simd/f64.rs:676-689 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f64.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"de450bcd57236cefda2fd3e981388758f7e864d43a2fd4d788c50a9995a15c69"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-linalg/src/simd/i32.rs:121-134 | rust/lance-linalg/src/simd/i32.rs:141-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":"rust/lance-linalg/src/simd/i32.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0283331058b46671fbb946fc0191e278362847cbdee596b7aa3b89c4ea9452c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201314 lines \u00D7 2): rust/lance-namespace-impls/src/dir/manifest.rs:2123-2136 | rust/lance-namespace-impls/src/dir/manifest.rs:3393-3403 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2123}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb2ff952e1fae3de638dc268cadd397eea151d4cfa6d714010c716b1fad539a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:2089-2102 | rust/lance-namespace-impls/src/dir.rs:3668-3681 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":2089}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec74eb08a3dfbe853b6b243109b8da09a21f5451f9eff33987f716435aea3a20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): java/lance-jni/src/namespace.rs:412-424 | java/lance-jni/src/namespace.rs:736-748 | java/lance-jni/src/namespace.rs:926-938 \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":"java/lance-jni/src/namespace.rs"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f2037a8c51440df9eb7cb3164e4448c0c1a5aa7a8282960691f750093716b3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201313 lines \u00D7 3): python/src/file.rs:339-351 | python/src/file.rs:502-511 | python/src/file.rs:930-939 \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":"python/src/file.rs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2137a41494cb22e2efc95b0ee3a1f44e56ef58c3cf376addae5395ace06229c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): rust/lance/src/index/vector/ivf.rs:3183-3195 | rust/lance/src/index/vector/ivf.rs:4589-4601 | rust/lance/src/index/vector/ivf.rs:4812-4824 \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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":3183}}}],"partialFingerprints":{"codehealthFindingId/v1":"4274456761ed23b54665ef798f1054b5b797bf7e36c506501898d08b707fed59"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): rust/lance-encoding/src/decoder.rs:1646-1658 | rust/lance-encoding/src/decoder.rs:1893-1905 | rust/lance-encoding/src/decoder.rs:2111-2123 \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":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":1646}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8459baa992b2d09b45b95a6d1ba2091d069357773c7a0a840afb30b27bae54e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): rust/lance-file/src/versions/v2_1/compression.rs:95-107 | rust/lance-file/src/versions/v2_2/compression.rs:89-101 | rust/lance-file/src/versions/v2_3/compression.rs:88-100 \u2014 \u0060rust/lance-file/src/versions/v2_2/compression.rs\u0060 and \u0060rust/lance-file/src/versions/v2_3/compression.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 61 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":"rust/lance-file/src/versions/v2_1/compression.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6e590677b3be7cf2ed5ea817c8b6b80f0cea0a31d7d639e901a90daec7a2731"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 3): rust/lance-namespace-impls/src/credentials/gcp.rs:859-869 | rust/lance-namespace-impls/src/credentials/gcp.rs:919-930 | rust/lance-namespace-impls/src/credentials/gcp.rs:981-993 \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":"rust/lance-namespace-impls/src/credentials/gcp.rs"},"region":{"startLine":859}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcc4d40f65e648dd1b5b6ef7fe7d44b75170bcba342454c5a060bdd20320f4a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): java/lance-jni/src/namespace.rs:1914-1926 | java/lance-jni/src/namespace.rs:2865-2877 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/namespace.rs"},"region":{"startLine":1914}}}],"partialFingerprints":{"codehealthFindingId/v1":"1467a67b37d3def815e80cdc6448dbcf19b93180e6467fe4a83aae4bc1b056e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): java/lance-jni/src/namespace.rs:3547-3559 | java/lance-jni/src/namespace.rs:3676-3688 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/namespace.rs"},"region":{"startLine":3547}}}],"partialFingerprints":{"codehealthFindingId/v1":"62f9b571eebd9c10cbece77899cd56866e67d1f7ace011e89063d9bbba576549"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs:1071-1083 | rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs:1135-1145 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"27630203ebeb2029a07509fe205aaec1c825404e324a933230010afd50ff8070"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/fts_search.rs:1153-1165 | rust/lance/src/dataset/mem_wal/scanner/vector_search.rs:543-555 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/scanner/fts_search.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/scanner/vector_search.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 57 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":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":1153}}}],"partialFingerprints":{"codehealthFindingId/v1":"16f94073a3d5453754a2501f714c640452718c9ff7f2e0fda4f48439bf666b62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201313 lines \u00D7 2): rust/lance/src/dataset/optimize.rs:719-731 | rust/lance/src/dataset/optimize/binary_copy.rs:174-183 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"384ad51af64092e29344596953a586a8fb8c4287f8389d2a4b16582ec203fcb4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:5431-5443 | rust/lance/src/dataset/scanner.rs:5590-5602 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5431}}}],"partialFingerprints":{"codehealthFindingId/v1":"22c5db2046c1f119c732ea135c2c697943db92c624bf14593702665207e636f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance/src/dataset/write/merge_insert/exec/delete.rs:138-150 | rust/lance/src/dataset/write/merge_insert/exec/write.rs:538-550 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/write/merge_insert/exec/delete.rs\u0060 and \u0060rust/lance/src/dataset/write/merge_insert/exec/write.rs\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"rust/lance/src/dataset/write/merge_insert/exec/delete.rs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffa1deaef6f3997c66509b84e9cf606d44ca226c2eb0893a4ffcfe4bb2f0386b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance/src/dataset/write/merge_insert.rs:2851-2863 | rust/lance/src/dataset/write/merge_insert.rs:3003-3015 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":2851}}}],"partialFingerprints":{"codehealthFindingId/v1":"878d018dddcd8a76190b3452d65ae9aa5a807a0a67a525f14a398c4217657225"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-index/src/vector.rs:308-320 | rust/lance/src/index/vector/ivf/v2.rs:2329-2341 \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":"rust/lance-index/src/vector.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4b14a85232f10305895e4ba016ea91c3415b035b4fa67055d83ceab4cd75250"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:3802-3814 | rust/lance/src/index/vector/ivf.rs:3858-3872 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":3802}}}],"partialFingerprints":{"codehealthFindingId/v1":"65fe7d27544af61c97091ec1fa77ced209f8f3a43855a8e806ef5f99b5bbe159"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:4214-4226 | rust/lance/src/index/vector/ivf.rs:4244-4256 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":4214}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dbc79a9b7e0bde2ea2fc324c8a698bf1b0b1092794ceac41b0262c6f03bb79d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance/src/index/vector.rs:1231-1243 | rust/lance/src/index/vector.rs:1249-1261 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":1231}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5d0ac03ed0a0b4dd8ff77aba3c5024121e8feb80c523a794bcc71a0d8a3c395"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance/src/index/vector.rs:1386-1398 | rust/lance/src/index/vector.rs:1404-1416 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":1386}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5c0ad3429ed6817b3dfd83cc9ef6d404af2b95d2c9e422c9cd148d16e37c1fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance/src/index/vector.rs:1436-1448 | rust/lance/src/index/vector.rs:1466-1478 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":1436}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f77cbb40b8511ba37ff0fe0d47695cea4ba426f4e6d4114c2bd8289ebbc9f27"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:1723-1735 | rust/lance/src/io/exec/fts.rs:2111-2123 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":1723}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e649cf8f93d98ecece2608891027b6b254265c841f98e31b45bb5f87cfe3924"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:4419-4431 | rust/lance/src/io/exec/fts.rs:4795-4807 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":4419}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f271a9b9862a508edf412a66031893231483ab535e63ffc8e383f5e735ccd9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-encoding/src/array_encoding/logical/list.rs:1127-1139 | rust/lance-encoding/src/array_encoding/logical/list.rs:1157-1169 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/logical/list.rs"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff2d88d697ba59b07ed08a24aef7b8e1e4d5ba19a0afe5f646ad083095a2d236"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): rust/lance-encoding/src/compression.rs:181-193 | rust/lance-encoding/src/compression.rs:289-299 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/compression.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"07ba953271c6bb91f9246e4246007f15cf01fe2dd11f8ee9c4a4ea1bc141c7ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive.rs:6210-6222 | rust/lance-encoding/src/encodings/logical/primitive.rs:6299-6311 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6210}}}],"partialFingerprints":{"codehealthFindingId/v1":"911771451400fd4df0eea7bae4c39883bb23b5bd8b2cb70d6e7354edefbfdb9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): rust/lance-encoding/src/encodings/physical/binary.rs:398-409 | rust/lance-encoding/src/encodings/physical/binary.rs:428-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":"rust/lance-encoding/src/encodings/physical/binary.rs"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"d00aa9c665bc4a2909736d6f8954be06aebed0af415138a0e7b5c7ed264ff015"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-file/src/reader.rs:1268-1280 | rust/lance-file/src/reader.rs:1347-1359 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/reader.rs"},"region":{"startLine":1268}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c4966dff725ec095700159ffe2e678970cdd670059b31372a827523375943d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-file/src/reader.rs:1428-1440 | rust/lance-file/src/reader.rs:1827-1839 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/reader.rs"},"region":{"startLine":1428}}}],"partialFingerprints":{"codehealthFindingId/v1":"7081c7dfdd92a92218a936b691ae04ac86c9e1ef7d76d45e2a623f2a93be2741"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-index/src/scalar/inverted/compound.rs:181-193 | rust/lance-index/src/scalar/inverted/wand.rs:6352-6364 \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":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c3ca987dfce16ee6541658c896392c66b0c3bbde8dea2e76098dffb1263224c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand.rs:1671-1683 | rust/lance-index/src/scalar/inverted/wand_maxscore.rs:230-241 \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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":1671}}}],"partialFingerprints":{"codehealthFindingId/v1":"950529b9aafdb52fd8fec0adbcfa276f70a5c81728ed2c5a6654d686f8cfef02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-index/src/vector/distributed/index_merger.rs:304-316 | rust/lance-index/src/vector/distributed/index_merger.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":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"f55ddf6580e0e4f3481153551536322c7ddfa5e605211e8f432021b2649ed363"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-index/src/vector/distributed/index_merger.rs:1329-1341 | rust/lance-index/src/vector/distributed/index_merger.rs:1362-1374 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":1329}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3abe93574cf4fa658f847813c797c7efe0b8073fa5fc928ee87c49a6849d46e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-index/src/vector/pq/distance.rs:34-46 | rust/lance-index/src/vector/pq/distance.rs:98-110 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/pq/distance.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"17a8629dfc461fd063337ee1626240993d6f1f9d2513e7209eef1006352dd6cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-linalg/src/simd/dist_table.rs:806-818 | rust/lance-linalg/src/simd/dist_table.rs:994-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":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"73288fd5fb66ddb701d348c3ca39e7c54156d5d4251896942a481f03781c6321"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:225-237 | rust/lance-linalg/src/simd/f64.rs:118-130 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/simd/f32.rs\u0060 and \u0060rust/lance-linalg/src/simd/f64.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 68 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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dcbf0fd8f6bfc7ead581269b8a1a4bca654c716ba4b9b045f909265a8fe6401"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-namespace-impls/src/dir/manifest.rs:2804-2816 | rust/lance-namespace-impls/src/dir/manifest.rs:2926-2938 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2804}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cf481e02db19cee43c35ca9acb50bf089accd00c7208e08592056f3b53dec85"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 6): rust/lance-namespace-impls/src/dir/manifest.rs:2803-2814 | rust/lance-namespace-impls/src/dir/manifest.rs:2925-2936 | rust/lance-namespace-impls/src/dir/manifest.rs:2955-2966 | rust/lance-namespace-impls/src/dir/manifest.rs:3163-3174 | rust/lance-namespace-impls/src/dir/manifest.rs:3558-3569 | rust/lance-namespace-impls/src/dir/manifest.rs:3636-3647 \u2014 all 6 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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2803}}}],"partialFingerprints":{"codehealthFindingId/v1":"d986ab3773bf43c951569e76025e4329aaa3e1709c9ef832229f342f4f6d0176"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 5): rust/lance-index/src/vector/ivf.rs:127-138 | rust/lance-index/src/vector/ivf.rs:155-166 | rust/lance-index/src/vector/ivf.rs:195-206 | rust/lance-index/src/vector/ivf.rs:245-256 | rust/lance-index/src/vector/ivf.rs:288-297 \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":"rust/lance-index/src/vector/ivf.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"20419ab300c774e5f451be9822f70af3e83b6f93199e4594b04e3976f919dec8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): rust/lance/src/dataset/mem_wal/scanner/builder.rs:614-625 | rust/lance/src/dataset/mem_wal/scanner/builder.rs:679-690 | rust/lance/src/dataset/mem_wal/scanner/builder.rs:725-736 | rust/lance/src/dataset/mem_wal/scanner/builder.rs:752-763 \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":"rust/lance/src/dataset/mem_wal/scanner/builder.rs"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdf4171134654142743b94890bb38a3b1fdf46f160b4c81b7076691e1275721c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): rust/lance-namespace/src/schema.rs:110-121 | rust/lance-namespace/src/schema.rs:128-139 | rust/lance-namespace/src/schema.rs:146-157 | rust/lance-namespace/src/schema.rs:190-201 \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":"rust/lance-namespace/src/schema.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"d51dbdaaacd50e4bfac8ef95f604f7b5745624368788991d7c1b715d8a1660cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 3): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs:387-397 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/fts.rs:512-523 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs:260-271 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 180 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"9058a9b57825097f2697c3b7d9274e71def37b464f7bb4fa7b9f89d422aae4f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): rust/lance/src/dataset/mem_wal/scanner/fts_search.rs:1215-1226 | rust/lance/src/dataset/mem_wal/scanner/planner.rs:428-439 | rust/lance/src/dataset/mem_wal/scanner/vector_search.rs:591-602 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/scanner/fts_search.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/scanner/planner.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 38 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":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":1215}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff97acf2e7022502799a644a60500d22fcc0a092e6507cbf2b4df8beb4072ba4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): rust/lance-datafusion/src/udf/json.rs:635-646 | rust/lance-datafusion/src/udf/json.rs:691-702 | rust/lance-datafusion/src/udf/json.rs:747-758 \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":"rust/lance-datafusion/src/udf/json.rs"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"6927ab3ae396953e4fc507c2042ab5eedc199c35af2e887aa472effa61c7d847"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): rust/lance-file/src/versions/v2_1/mod.rs:79-90 | rust/lance-file/src/versions/v2_2/mod.rs:82-93 | rust/lance-file/src/versions/v2_3/mod.rs:90-101 \u2014 \u0060rust/lance-file/src/versions/v2_2/mod.rs\u0060 and \u0060rust/lance-file/src/versions/v2_3/mod.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 57 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":"rust/lance-file/src/versions/v2_1/mod.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8936644c8ca2f368c7d3f2f0e29a39a77af568b8c7816af5cbf2476abce9ccf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): rust/lance-file/src/versions/v2_1/reader.rs:27-38 | rust/lance-file/src/versions/v2_2/reader.rs:27-38 | rust/lance-file/src/versions/v2_3/reader.rs:27-38 \u2014 \u0060rust/lance-file/src/versions/v2_1/reader.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/reader.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 10 separate duplicated blocks between them, totalling at least 158 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":"rust/lance-file/src/versions/v2_1/reader.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"168cb5e924c4c45fd6d76135528f0a0f33805ebcb83cb57de9de2e68852f1d5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): rust/lance-file/src/versions/v2_1/reader.rs:165-176 | rust/lance-file/src/versions/v2_2/reader.rs:167-178 | rust/lance-file/src/versions/v2_3/reader.rs:205-216 \u2014 \u0060rust/lance-file/src/versions/v2_1/reader.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/reader.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 10 separate duplicated blocks between them, totalling at least 158 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":"rust/lance-file/src/versions/v2_1/reader.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cd1154c202593ef7ce6c15d3b776b3aa3e6d13f2c4018247ddf2ccd4007542e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): rust/lance-index/src/scalar/inverted/tokenizer.rs:347-358 | rust/lance-index/src/scalar/inverted/tokenizer.rs:368-379 | rust/lance-index/src/scalar/inverted/tokenizer.rs:383-394 \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":"rust/lance-index/src/scalar/inverted/tokenizer.rs"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f5e97c57e421fdbf202075a510d1b02dc92048003b83df159a6129025b0aa47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): rust/lance-index/src/vector/distributed/index_merger.rs:267-278 | rust/lance-index/src/vector/distributed/index_merger.rs:306-317 | rust/lance-index/src/vector/distributed/index_merger.rs:347-358 \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":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4172aecf0276c400d49c0c111ba50889d4ed44f8786cc19db4eb65c2c8de9bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 2): java/lance-jni/src/mem_wal.rs:896-905 | python/src/mem_wal.rs:800-811 \u2014 before extracting anything, compare \u0060java/lance-jni/src/mem_wal.rs\u0060 and \u0060python/src/mem_wal.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 51 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":"java/lance-jni/src/mem_wal.rs"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"47d2ac2b288032bb63da19c880663dd43dcf48cba202883c9ce681c0f9eab552"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): python/src/dataset.rs:1480-1491 | python/src/fragment.rs:308-318 \u2014 before extracting anything, compare \u0060python/src/dataset.rs\u0060 and \u0060python/src/fragment.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 46 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":"python/src/dataset.rs"},"region":{"startLine":1480}}}],"partialFingerprints":{"codehealthFindingId/v1":"60eb4147fc75e6088ef9ca0d6e082c71e27f38116b5dca5bebd35ef36937da59"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 2): python/src/dataset.rs:2200-2211 | python/src/dataset.rs:2234-2243 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":2200}}}],"partialFingerprints":{"codehealthFindingId/v1":"669645fd3e3674cb1987e01d5d89b8f0836ca3b5ec48bb5901e79cce40a9b2d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-file/src/concat.rs:443-454 | rust/lance/src/dataset/blob.rs:245-256 \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":"rust/lance-file/src/concat.rs"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"09392384b6361178e2933b314acf52b08ce4241af97b40f1fac497c4bef5ad88"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance/src/dataset/blob.rs:4268-4279 | rust/lance/src/dataset/optimize.rs:1905-1916 \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":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":4268}}}],"partialFingerprints":{"codehealthFindingId/v1":"70c986e5a57d61867672661cd60263105d75184ff85909ad2b4ade13c48e73ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): rust/lance/src/dataset.rs:1081-1091 | rust/lance/src/dataset/builder.rs:143-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":"rust/lance/src/dataset.rs"},"region":{"startLine":1081}}}],"partialFingerprints":{"codehealthFindingId/v1":"738c6c228dd1715e99dbb1f09b342eaca72acb7b80f1818050baa8e4dfca3dbf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): rust/lance/src/dataset/hash_joiner.rs:153-164 | rust/lance/src/dataset/hash_joiner.rs:240-250 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/hash_joiner.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"43f57ea28caefd14c84372f162067b3f79b94767d61405ad491fd677a02b6306"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance/src/dataset/mem_wal/index/fts.rs:3321-3332 | rust/lance/src/dataset/mem_wal/index/fts.rs:4697-4708 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":3321}}}],"partialFingerprints":{"codehealthFindingId/v1":"e84780e18d9d2bf06a5d8c2dce080ac0bd9f42914c003e4a8cdb6f3aab958ebe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/batch_store.rs:339-350 | rust/lance/src/dataset/mem_wal/memtable/batch_store.rs:404-415 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/memtable/batch_store.rs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"841dc9e7100a7c8fefbee1aad58b9695da076bf994ebf6bc2592dd0eb9494f84"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 2): rust/lance/src/dataset/write/merge_insert/exec/delete.rs:157-166 | rust/lance/src/dataset/write/merge_insert/exec/write.rs:742-753 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/write/merge_insert/exec/delete.rs\u0060 and \u0060rust/lance/src/dataset/write/merge_insert/exec/write.rs\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"rust/lance/src/dataset/write/merge_insert/exec/delete.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"91dfc6fa4a41cf4f6e8ee30291936f79cfee12700eea4df44a7c968425641e84"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:1174-1185 | rust/lance/src/index/vector/ivf.rs:2369-2380 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c212b023a975babbb58918be459628c54e99d64e4ea74f177edb3de66cd82cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance/src/io/commit/conflict_resolver.rs:1559-1570 | rust/lance/src/io/commit/conflict_resolver.rs:2044-2055 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":1559}}}],"partialFingerprints":{"codehealthFindingId/v1":"853fbbe066bbf1780723241f933fdc2e99dda481070e31434a800599774dafdb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): rust/lance/src/index/scalar/btree.rs:107-117 | rust/lance/src/index/scalar/ngram.rs:51-62 \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":"rust/lance/src/index/scalar/btree.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3ebaa3e456fea59ea0831cd9ac50943980a497cddac3d1359b5c7399f9d967e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance/src/index/vector/ivf/partition_serde.rs:280-291 | rust/lance/src/index/vector/ivf/partition_serde.rs:324-335 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf/partition_serde.rs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"87b84c06ac0916b913cd71098a49e238f38cf6ab179a4e16534b982529e40bb0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance/src/index/vector/ivf/builder.rs:62-73 | rust/lance/src/index/vector/ivf/builder.rs:265-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":"rust/lance/src/index/vector/ivf/builder.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c0a4399cf96fc362875a17908e88e87eed3f7f8540b5982f22d7e2ff54824ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive/blob.rs:194-205 | rust/lance-encoding/src/encodings/logical/primitive/blob.rs:534-545 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive/blob.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"8023560e6af96fa858bb7f10b650073d552ad2b7adccfe11c547661108781d01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-file/src/reader/structural.rs:231-242 | rust/lance-file/src/versions/v2_0/reader.rs:189-200 \u2014 before extracting anything, compare \u0060rust/lance-file/src/reader/structural.rs\u0060 and \u0060rust/lance-file/src/versions/v2_0/reader.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 101 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":"rust/lance-file/src/reader/structural.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"b02f1a66319ecbf1740736381d260466d5a39b2187e67fa97f1a9c73abb1f018"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:79-90 | rust/lance-file/src/writer/structural.rs:62-73 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b61f0ec89f5f12fd21759737489612fb7c132d158784eba8f26568509d22eee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:97-108 | rust/lance-file/src/writer/structural.rs:80-91 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c76e47c621e37bdcddba9fa727b87c8f13fc3311227601d6c99e6607571b89"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:912-923 | rust/lance-file/src/writer/structural.rs:886-897 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"6abe921b32d4490236f4c33dfe7dc235aa119a0f1474a4e7ae29984ef210c41d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-file/src/versions/v2_2/reader.rs:91-102 | rust/lance-file/src/versions/v2_3/reader.rs:74-85 \u2014 \u0060rust/lance-file/src/versions/v2_2/reader.rs\u0060 and \u0060rust/lance-file/src/versions/v2_3/reader.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 8 separate duplicated blocks between them, totalling at least 105 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":"rust/lance-file/src/versions/v2_2/reader.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"b06a48289e21fea4f216275e4117e55c805059e5c9edc412bb736d5821962454"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/token_set.rs:109-120 | rust/lance-index/src/scalar/inverted/index/token_set.rs:143-155 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/token_set.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbf65546a8acb4718b7a5ab1ba473191a7c8b50dbbd30e1c4072cdfc6782cf9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand.rs:1352-1363 | rust/lance-index/src/scalar/inverted/wand.rs:1398-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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":1352}}}],"partialFingerprints":{"codehealthFindingId/v1":"896939057b9ff16c9c5da292c2307a0b785ad54fefa66aa2e0186235f49df30b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): rust/lance-index/src/scalar/json.rs:137-147 | rust/lance-index/src/scalar/json.rs:174-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":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"17bcf6e7061340662da4ce2078f2daacf26d03a89e875c000300deb9cebe651e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-index/src/scalar/lance_format.rs:341-352 | rust/lance-index/src/scalar/lance_format.rs:465-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":"rust/lance-index/src/scalar/lance_format.rs"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3fb4583d159b6ed707b9eb9baf59bb8b5f0858449fe5f828341eee8fd214f32"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-index/src/vector/bq/storage.rs:707-718 | rust/lance-index/src/vector/bq/storage.rs:746-757 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":707}}}],"partialFingerprints":{"codehealthFindingId/v1":"42bcfdc4ae194424e2048fed2d71876a5b2f690bf2c2e3aaa362108efea430dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-index/src/vector/flat/index.rs:153-164 | rust/lance-index/src/vector/flat/index.rs:298-309 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/flat/index.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a3e726b4cf83a988bcf34cf4887d65bfee2dd3460f56dfd93fdc4774a277186"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201312 lines \u00D7 2): rust/lance-index/src/vector/hnsw/builder.rs:351-362 | rust/lance-index/src/vector/hnsw/builder.rs:535-541 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/hnsw/builder.rs"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e92fb66fe52ce69c87c3b6364d02e2a5ffc31f780269824e9c024f592af1c92"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-index/src/vector/hnsw/builder.rs:655-666 | rust/lance-index/src/vector/hnsw/builder.rs:669-680 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/hnsw/builder.rs"},"region":{"startLine":655}}}],"partialFingerprints":{"codehealthFindingId/v1":"a92ef5729ca804fd269b4f090181a7b2b7e4e4777e88950689b81a3ac39c43b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/search.rs:886-897 | rust/lance-index/src/scalar/inverted/index/search.rs:1176-1187 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/search.rs"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc734a3d363d7e3b3bebe43045e29acd930cb83900057bfc7a5ed31b8420811"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-io/src/object_store/providers/azure.rs:190-201 | rust/lance-io/src/object_store/providers/gcp.rs:278-289 \u2014 before extracting anything, compare \u0060rust/lance-io/src/object_store/providers/azure.rs\u0060 and \u0060rust/lance-io/src/object_store/providers/gcp.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 57 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":"rust/lance-io/src/object_store/providers/azure.rs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"edf5ae2d011ebdc5b0cb2b24181ead14f4932c074a33ebeb71fb45954118f826"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201312 lines \u00D7 2): rust/lance-io/src/object_store/providers.rs:252-259 | rust/lance-io/src/object_store/providers.rs:280-291 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/object_store/providers.rs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"ece79d608d35ffc2cfb2142d0c8860752a7e189b70b0267fced6fea3a2c5165d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-io/src/object_store.rs:1298-1309 | rust/lance-io/src/object_store.rs:1428-1439 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/object_store.rs"},"region":{"startLine":1298}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc3534503d11155de722c3b502e72e85be63e6b0b70a9a60ac0cc145a1a0c2c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-linalg/src/kernels.rs:333-344 | rust/lance-linalg/src/kernels.rs:347-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":"rust/lance-linalg/src/kernels.rs"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f5a48876d0c0e597829da968965f647129bbf9e5803c32a33b689e72a9b07c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:304-315 | rust/lance-linalg/src/simd/f32.rs:793-804 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e05325814b2a17b58587e572615906e89aa692f4f3e6efbb0742f2eea225838"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-namespace-impls/src/dir/manifest.rs:2480-2491 | rust/lance-namespace-impls/src/dir/manifest.rs:2516-2527 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2480}}}],"partialFingerprints":{"codehealthFindingId/v1":"10b7b0ea427ec966c6970651cfdbc6ddca3a42764da6befd5debd414d7ae7e97"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-namespace-impls/src/dir/manifest.rs:2732-2743 | rust/lance-namespace-impls/src/dir/manifest.rs:3234-3245 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2732}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcbb2a311df4da9e01e8051d85759bca89cf6ef96ac7a83f69caaad7ce4b4c7f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-namespace-impls/src/dir/manifest.rs:2745-2756 | rust/lance-namespace-impls/src/dir/manifest.rs:3247-3258 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2745}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e58baae2b9d1319f9f1a8d0c27561237708b239063ddcf65c23b02044167d33"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:1033-1043 | rust/lance-namespace-impls/src/dir.rs:1071-1082 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":1033}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b1eec1919587ca77585dd1c2046c89d03e670f950eba219ddeceecad95baf51"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-table/src/format/key_existence.rs:347-358 | rust/lance-table/src/format/key_existence.rs:361-372 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/format/key_existence.rs"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ced2c137fd610e32ac581801b499f98ce315b580abe8bdb2dc661c8aa993299"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 6): rust/lance-namespace-impls/src/rest.rs:799-809 | rust/lance-namespace-impls/src/rest.rs:864-874 | rust/lance-namespace-impls/src/rest.rs:1272-1282 | rust/lance-namespace-impls/src/rest.rs:1319-1329 | rust/lance-namespace-impls/src/rest.rs:1535-1545 | rust/lance-namespace-impls/src/rest.rs:1622-1632 \u2014 all 6 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":"rust/lance-namespace-impls/src/rest.rs"},"region":{"startLine":799}}}],"partialFingerprints":{"codehealthFindingId/v1":"a47defd23ef16fd5d960891982c003db2141e42b280455e6b57a7fa235f09c5c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): rust/lance-file/src/versions/v2_0/reader.rs:138-148 | rust/lance-file/src/versions/v2_1/reader.rs:181-191 | rust/lance-file/src/versions/v2_2/reader.rs:183-193 | rust/lance-file/src/versions/v2_3/reader.rs:221-231 \u2014 \u0060rust/lance-file/src/versions/v2_1/reader.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/reader.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 10 separate duplicated blocks between them, totalling at least 158 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":"rust/lance-file/src/versions/v2_0/reader.rs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5b1145780a69919c4094d0b707e7508038653edbd64a022a69da710e36b7115"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): rust/lance-file/src/versions/v2_0/reader.rs:361-371 | rust/lance-file/src/versions/v2_1/reader.rs:224-234 | rust/lance-file/src/versions/v2_2/reader.rs:226-236 | rust/lance-file/src/versions/v2_3/reader.rs:264-274 \u2014 \u0060rust/lance-file/src/versions/v2_1/reader.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/reader.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 10 separate duplicated blocks between them, totalling at least 158 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":"rust/lance-file/src/versions/v2_0/reader.rs"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9d7d4f96f791b3bf6d75b1ef941af0b2c6e4b0ad1f48400d2286845d83af4d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs:96-106 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/fts.rs:147-157 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs:104-114 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 180 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cf7eddeef6e5b0a89a6058d0f810652fd7dab61395f497577e6c481e828c117"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 3): rust/lance/src/index/scalar/bitmap.rs:61-70 | rust/lance/src/index/scalar/inverted.rs:1004-1014 | rust/lance/src/index/scalar/label_list.rs:132-142 \u2014 before extracting anything, compare \u0060rust/lance/src/index/scalar/bitmap.rs\u0060 and \u0060rust/lance/src/index/scalar/inverted.rs\u0060 as WHOLE FILES: this scan already matched 4 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":"rust/lance/src/index/scalar/bitmap.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dd624c5113967cab5877818bb3a4d9636258f2f8da5cd63e9b6f7f693ab19cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): rust/lance/src/index/scalar/bloomfilter.rs:26-36 | rust/lance/src/index/scalar/minhash_lsh.rs:31-41 | rust/lance/src/index/scalar/rtree.rs:34-44 \u2014 before extracting anything, compare \u0060rust/lance/src/index/scalar/bloomfilter.rs\u0060 and \u0060rust/lance/src/index/scalar/minhash_lsh.rs\u0060 as WHOLE FILES: this scan already matched 4 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":"rust/lance/src/index/scalar/bloomfilter.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa7aa70701e62a5ccc7a0516e570d235736b69124d8c9a3f47c83cb2b85c369c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201311 lines \u00D7 3): rust/lance/src/index/scalar/bloomfilter.rs:85-94 | rust/lance/src/index/scalar/minhash_lsh.rs:74-81 | rust/lance/src/index/scalar/rtree.rs:78-88 \u2014 before extracting anything, compare \u0060rust/lance/src/index/scalar/bloomfilter.rs\u0060 and \u0060rust/lance/src/index/scalar/minhash_lsh.rs\u0060 as WHOLE FILES: this scan already matched 4 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":"rust/lance/src/index/scalar/bloomfilter.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bfa7164007e04a802619a2e3a48b8e977eaae5c5340179bc8b3ac6837eaaf67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): rust/lance-file/src/versions/v2_1/reader.rs:46-56 | rust/lance-file/src/versions/v2_2/reader.rs:46-56 | rust/lance-file/src/versions/v2_3/reader.rs:46-56 \u2014 \u0060rust/lance-file/src/versions/v2_1/reader.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/reader.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 10 separate duplicated blocks between them, totalling at least 158 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":"rust/lance-file/src/versions/v2_1/reader.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa6576baad5299e91e9b440c41be1aad4d883469b4439901168abfa7ae21b17d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): rust/lance-namespace-impls/src/dir/manifest.rs:2482-2492 | rust/lance-namespace-impls/src/dir/manifest.rs:2518-2528 | rust/lance-namespace-impls/src/dir/manifest.rs:2629-2641 \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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2482}}}],"partialFingerprints":{"codehealthFindingId/v1":"8707964dff4a8bcf75828ba4828f966d4fff6c35b79249823c5f0192fc88c470"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): java/lance-jni/src/blocking_dataset.rs:783-792 | rust/lance/src/dataset.rs:1040-1050 \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":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e8a20476e0327e899379758dfcb11c64599dab5b2b00d960e78ea47fc159c3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): python/src/dataset.rs:2539-2549 | python/src/dataset.rs:4713-4723 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":2539}}}],"partialFingerprints":{"codehealthFindingId/v1":"07ad8498ebb19ee813dc377f64c8bb65eea7496ea447cbf21184b7da88d9e1df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): python/src/mem_wal.rs:520-530 | python/src/mem_wal.rs:677-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":"python/src/mem_wal.rs"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"519cc9487a435d76317106d0ed4b955b454ddf7f1ba355fd146f898c6993d0b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/dataset/fragment/write.rs:151-161 | rust/lance/src/dataset/fragment/write.rs:254-264 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/fragment/write.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e3dbc7771b69b4bf077b13c7a5418a8ad32118887abb146977146ae70d477a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/dataset/mem_wal/hnsw/graph.rs:460-470 | rust/lance/src/dataset/mem_wal/hnsw/graph.rs:497-507 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/hnsw/graph.rs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9f8c82cb6932a60cbd43783b1dc4c5ccc976a190074e6e1fd39544a1c8b8fcd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/builder.rs:339-349 | rust/lance/src/dataset/mem_wal/scanner/collector.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":"rust/lance/src/dataset/mem_wal/scanner/builder.rs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"8da04fc800ab6bcdba1e43acd322e11f1e85349603ac1577e00da180e79d17f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs:333-343 | rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs:471-481 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"e20f1caa4c009a0c10f4a05b72ce402a3324823cb038abdc33beccac93e18960"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:3675-3685 | rust/lance/src/dataset/scanner.rs:7974-7982 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":3675}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ec22941090df518ce8b4c40d9853c4476c3197a94e21362018ee86df59247a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:4623-4633 | rust/lance/src/dataset/scanner.rs:4637-4647 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":4623}}}],"partialFingerprints":{"codehealthFindingId/v1":"b08e6f1ed99cee45df4159f3bbcdd49610b60590bbcb00fae4ddd18227e8008e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/dataset/write/merge_insert/exec/delete.rs:357-367 | rust/lance/src/dataset/write/merge_insert/exec/write.rs:1138-1148 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/write/merge_insert/exec/delete.rs\u0060 and \u0060rust/lance/src/dataset/write/merge_insert/exec/write.rs\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"rust/lance/src/dataset/write/merge_insert/exec/delete.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea5522873854796f3562068bf924fa9c506f3526fa31bac40930b23c3147a8a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/dataset/write.rs:2215-2225 | rust/lance/src/dataset/write.rs:2259-2269 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write.rs"},"region":{"startLine":2215}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5bbbd987b7f46c10c5b41ea36a9c53acf25174a30fdbf320402c5704dec93fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/index/vector/hamming.rs:482-492 | rust/lance/src/index/vector/hamming.rs:504-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":"rust/lance/src/index/vector/hamming.rs"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5e57e4570006eb51c188af6099af22e2d44dd0c6bb66342ba297e8330fa71ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:809-819 | rust/lance/src/index/vector/ivf.rs:850-860 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":809}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dc020b8b815c9f2e3657eaab8b8bd593f7b0bddd18d2cd7cf6b3d0f0d43aff0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:837-847 | rust/lance/src/index/vector/ivf.rs:962-972 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e47098ed810830cb5f8482c941dcdeb040a78850ffd2fabf1dba9c464981e18"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/index.rs:1945-1955 | rust/lance/src/index.rs:1981-1991 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index.rs"},"region":{"startLine":1945}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f5c059414282c0a2120ef7e21a3073964b5e3655dfb44bf35a24610932ac44b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:3105-3115 | rust/lance/src/io/exec/fts.rs:5260-5268 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":3105}}}],"partialFingerprints":{"codehealthFindingId/v1":"864c991b19fd0886daebf16f405622b6fe64868c682d9129b4c78a044b290906"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:5434-5444 | rust/lance/src/io/exec/fts.rs:5777-5786 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":5434}}}],"partialFingerprints":{"codehealthFindingId/v1":"292da053097cd0a22626fa08d407fb7820fe32f87d6b95ce3f8d43911201afe2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/io/exec/pushdown_scan.rs:242-252 | rust/lance/src/io/exec/scan.rs:643-653 \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":"rust/lance/src/io/exec/pushdown_scan.rs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd530ad8d04c5023549d048fdcb25497efb378608224d98bd0124a1147937a27"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): rust/lance-core/src/datatypes/schema.rs:231-240 | rust/lance-core/src/datatypes/schema.rs:548-558 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/datatypes/schema.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"852bdbca7075e5de7be14d64f45c2706bd81d12e3d277bc3cb9cdb71508be0d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/fixed_size_list.rs:439-449 | rust/lance-encoding/src/encodings/logical/fixed_size_list.rs:494-504 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/fixed_size_list.rs"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"d71f25d3fb9be9b5c6ca0c79494cf641f1268e1bfba6b08c0ec722beef69c217"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive/sparse.rs:57-67 | rust/lance-encoding/src/encodings/logical/primitive/sparse.rs:351-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":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c00ec6dc25ed17b2fdfdac5ec20ecefe989fe88e9415bee768ed7606dcad6fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-encoding/src/encodings/physical/binary.rs:220-230 | rust/lance-encoding/src/encodings/physical/binary.rs:233-243 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/binary.rs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"07852a2f001387f1c94e3b3d876be7a4ed31fc9fa780b3f0a4fc5bb7787086e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-encoding/src/repdef.rs:2184-2194 | rust/lance-encoding/src/repdef.rs:2205-2215 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":2184}}}],"partialFingerprints":{"codehealthFindingId/v1":"110420ceb593170469892800af1a953dd09e735cbd670b96f6ae8e0215a78062"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-file/src/reader.rs:1224-1234 | rust/lance-file/src/reader.rs:1309-1319 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/reader.rs"},"region":{"startLine":1224}}}],"partialFingerprints":{"codehealthFindingId/v1":"da07cd6da5fe2276f4513f0fcea3b1769e390d2cbccccfe6974ae648bed5ccf1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): rust/lance-file/src/reader.rs:2026-2035 | rust/lance-file/src/reader.rs:2233-2243 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/reader.rs"},"region":{"startLine":2026}}}],"partialFingerprints":{"codehealthFindingId/v1":"213a0268ca8af9f963e2920db98c77bdd1eef9f2112601a4985ff5771fb86f43"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): rust/lance-file/src/versions/v1/writer/statistics.rs:249-257 | rust/lance-file/src/versions/v1/writer/statistics.rs:324-334 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/writer/statistics.rs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"65078773acc8755e91988240a3c06c6b14fadd6c2b08a0d7ad671b476e108cd1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:111-121 | rust/lance-file/src/writer/structural.rs:94-104 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb470dbca902dfd2f4f1bad83ba68d6bd6aeacde243d09cf00b90a14cf791c38"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:468-479 | rust/lance-file/src/writer/structural.rs:618-628 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9e9007e5da8b1874332db293f3366e07f3be7dfcc94082295f7c75be66bffd9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:487-497 | rust/lance-file/src/writer/structural.rs:634-644 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3d07ac6cc95c41e8a97406de8b3fa2c804355f96b52a6291af91f5bef7037f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-index/src/scalar/bloomfilter.rs:577-587 | rust/lance-index/src/scalar/zonemap.rs:813-823 \u2014 before extracting anything, compare \u0060rust/lance-index/src/scalar/bloomfilter.rs\u0060 and \u0060rust/lance-index/src/scalar/zonemap.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 61 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":"rust/lance-index/src/scalar/bloomfilter.rs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"3635332ac617135116e0ae0b6d57f063bdfab3d38ef12e52108aabafa34a6a50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/flat_search.rs:253-263 | rust/lance-index/src/scalar/inverted/index/flat_search.rs:564-574 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/flat_search.rs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"1780e1d1567d32635230414e8e011651f96ae4b100172f1679702a7b273c61d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/token_set.rs:54-64 | rust/lance-index/src/scalar/inverted/index/token_set.rs:311-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":"rust/lance-index/src/scalar/inverted/index/token_set.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4443b9cb2855581aa5e126a1fb2bf9795a3212674ac9786d8e3e5cc684582fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand_maxscore.rs:657-667 | rust/lance-index/src/scalar/inverted/wand_maxscore.rs:705-715 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand_maxscore.rs"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cc98d75cfbd8de2d6ae2b5b183d41f16360a3e0d8e0fe35a388a083fe32c2c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): rust/lance-index/src/scalar/rtree.rs:398-408 | rust/lance-index/src/scalar/rtree.rs:439-447 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/rtree.rs"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"37977e1f81140474a51ec56f82a531107c8a05e155bd8d37a648229b4973d7c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-index/src/vector/bq/builder.rs:572-582 | rust/lance-index/src/vector/bq/builder.rs:647-657 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/builder.rs"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d7ddaf304bbab00f94a7114d2aeaa882b4275f8972cf188e3bd06947f4f9ae3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-index/src/vector/hnsw/builder.rs:425-435 | rust/lance-index/src/vector/hnsw/builder.rs:596-606 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/hnsw/builder.rs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f974b456c4689bdafd72a850ddb0a61eaf38c7c3b124b588a2f5adf78d504b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): rust/lance-index/src/vector/ivf/shuffler.rs:576-585 | rust/lance-index/src/vector/ivf/shuffler.rs:610-620 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/ivf/shuffler.rs"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcadf9f65951e8bfc7c3edc6c24fe430c9406a7f1e317db7e0ae78797a4e97db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-io/src/object_store/providers/oss.rs:52-62 | rust/lance-io/src/object_store/providers/tos.rs:59-69 \u2014 before extracting anything, compare \u0060rust/lance-io/src/object_store/providers/oss.rs\u0060 and \u0060rust/lance-io/src/object_store/providers/tos.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 62 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":"rust/lance-io/src/object_store/providers/oss.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"716fbba63e74d22d929738333756dd34fd3ccab56c1a55d10319b2e9c2fdd697"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-linalg/src/distance/l2.rs:668-678 | rust/lance-linalg/src/distance/l2.rs:825-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":"rust/lance-linalg/src/distance/l2.rs"},"region":{"startLine":668}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d1657889c39b93dcb7d229475601451a443873a2d5350326458a70a917d74d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-linalg/src/distance/l2.rs:755-765 | rust/lance-linalg/src/distance/l2.rs:782-792 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/l2.rs"},"region":{"startLine":755}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8cbf956ed890d2a832d943b056abc9aca650c3a3dd5fa1903797ab6644b73f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): rust/lance-linalg/src/simd/dist_table.rs:663-673 | rust/lance-linalg/src/simd/dist_table.rs:683-692 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":663}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aa45400b33a0df9ef4f839e5bd6b8f1fa7405dd0b4a2c43fb13c6e342b0f5c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 10): rust/lance/src/index/vector/ivf.rs:818-826 | rust/lance/src/index/vector/ivf.rs:837-846 | rust/lance/src/index/vector/ivf.rs:859-868 | rust/lance/src/index/vector/ivf.rs:880-889 | rust/lance/src/index/vector/ivf.rs:901-910 | rust/lance/src/index/vector/ivf.rs:921-930 | rust/lance/src/index/vector/ivf.rs:943-951 | rust/lance/src/index/vector/ivf.rs:962-971 | rust/lance/src/index/vector/ivf.rs:984-993 | rust/lance/src/index/vector/ivf.rs:1005-1014 \u2014 all 10 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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":818}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b17755612b2775b472cf69a6b6d2f01d25ed46b67ea8c21204f487ae75e9865"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 8): rust/lance/src/index/scalar/bitmap.rs:20-29 | rust/lance/src/index/scalar/bloomfilter.rs:21-30 | rust/lance/src/index/scalar/fmindex.rs:31-40 | rust/lance/src/index/scalar/inverted.rs:936-945 | rust/lance/src/index/scalar/label_list.rs:67-76 | rust/lance/src/index/scalar/minhash_lsh.rs:26-35 | rust/lance/src/index/scalar/rtree.rs:29-38 | rust/lance/src/index/scalar/zonemap.rs:21-30 \u2014 before extracting anything, compare \u0060rust/lance/src/index/scalar/bitmap.rs\u0060 and \u0060rust/lance/src/index/scalar/inverted.rs\u0060 as WHOLE FILES: this scan already matched 4 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":"rust/lance/src/index/scalar/bitmap.rs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"f316257362b8fdb0426008289a06837dc219e0c205a29e1b93ebccb920a3f871"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 5): rust/lance/src/index/scalar/bitmap.rs:62-71 | rust/lance/src/index/scalar/fmindex.rs:108-117 | rust/lance/src/index/scalar/inverted.rs:1006-1015 | rust/lance/src/index/scalar/label_list.rs:134-143 | rust/lance/src/index/scalar/zonemap.rs:72-81 \u2014 before extracting anything, compare \u0060rust/lance/src/index/scalar/bitmap.rs\u0060 and \u0060rust/lance/src/index/scalar/inverted.rs\u0060 as WHOLE FILES: this scan already matched 4 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":"rust/lance/src/index/scalar/bitmap.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"01afe48dd478efaaba761f5f2c6b28c9e4f3ded74c9c34c45973351b30386ce5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 4): rust/lance/src/dataset/refs.rs:219-228 | rust/lance/src/dataset/refs.rs:254-263 | rust/lance/src/dataset/refs.rs:269-277 | rust/lance/src/dataset/refs.rs:302-310 \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":"rust/lance/src/dataset/refs.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b7c82c4b5b08268e6acbd91eabd626bbf757f23c78ef3716000783c5f266f0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): rust/lance/src/dataset/write/delete.rs:56-65 | rust/lance/src/dataset/write/merge_insert.rs:3038-3047 | rust/lance/src/dataset/write/merge_insert/exec.rs:70-79 | rust/lance/src/dataset/write/update.rs:697-706 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/write/delete.rs\u0060 and \u0060rust/lance/src/dataset/write/merge_insert.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":"rust/lance/src/dataset/write/delete.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"266a03248e12297ca10ed333510eaca89eb9ab9f2fe43c351873a64265a0af62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): rust/lance/src/dataset/write/delete.rs:87-96 | rust/lance/src/dataset/write/merge_insert.rs:3069-3078 | rust/lance/src/dataset/write/merge_insert/exec.rs:101-110 | rust/lance/src/dataset/write/update.rs:728-737 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/write/delete.rs\u0060 and \u0060rust/lance/src/dataset/write/merge_insert.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":"rust/lance/src/dataset/write/delete.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"588662616fb59eae852f40e13705a18d1e295fb9f12b5b554a61e8661c1722f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): rust/lance/src/io/exec/fts.rs:2938-2947 | rust/lance/src/io/exec/fts.rs:2960-2969 | rust/lance/src/io/exec/fts.rs:5116-5125 | rust/lance/src/io/exec/fts.rs:5136-5145 \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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2938}}}],"partialFingerprints":{"codehealthFindingId/v1":"d142629454a296dea222e4789b580abfaa3f94c21968b2f6c48686700ac6808e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): rust/lance/src/dataset/scanner.rs:5684-5693 | rust/lance/src/dataset/scanner.rs:7332-7342 | rust/lance/src/dataset/scanner.rs:7393-7403 \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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5684}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e0a1f8c96fee59c77aa355b4e0238ad56211e58d25c34828e37827aa146b974"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): rust/lance-encoding/src/decoder.rs:886-898 | rust/lance-encoding/src/decoder.rs:903-915 | rust/lance-encoding/src/decoder.rs:927-936 \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":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d1058d89302c082db2469c23a62b8b0dc33b4b0f0a94624788c1d918a6bcde6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): rust/lance-file/src/reader.rs:1316-1325 | rust/lance-file/src/reader.rs:1356-1365 | rust/lance-file/src/reader.rs:1396-1405 \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":"rust/lance-file/src/reader.rs"},"region":{"startLine":1316}}}],"partialFingerprints":{"codehealthFindingId/v1":"068ca2fdd474aac4c7f6544ba4bdc305e7c2dfb518c5ba0051ba82dceddcc51b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u201310 lines \u00D7 4): rust/lance-linalg/src/distance/cosine.rs:1015-1018 | rust/lance-linalg/src/distance/dot.rs:732-741 | rust/lance-linalg/src/distance/l2.rs:798-807 | rust/lance-linalg/src/distance/norm_l2.rs:358-367 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/cosine.rs\u0060 and \u0060rust/lance-linalg/src/distance/dot.rs\u0060 as WHOLE FILES: this scan already matched 7 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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"79e95f74c935c165780435ee2f11c074817a4decd1cf3f5e332cb44e32796143"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): java/lance-jni/src/file_writer.rs:202-210 | java/lance-jni/src/fragment.rs:172-181 \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":"java/lance-jni/src/file_writer.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ab030365cd8ed3e7d33ace2ca26e9989556b32daa7b209c14abc85739518b7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): java/lance-jni/src/mem_wal.rs:767-776 | java/lance-jni/src/mem_wal.rs:890-899 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/mem_wal.rs"},"region":{"startLine":767}}}],"partialFingerprints":{"codehealthFindingId/v1":"659526be4b55672c7b47827d1125284e31d784cf5208cc8052f9c9c77cded8ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): java/lance-jni/src/otel.rs:307-316 | java/lance-jni/src/utils.rs:603-612 \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":"java/lance-jni/src/otel.rs"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"56679cfccf9153eb3dc4b2f70e1130ac563b04c9991e13851dedd13a214a87cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): python/src/dataset.rs:5523-5532 | python/src/dataset.rs:5545-5554 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":5523}}}],"partialFingerprints":{"codehealthFindingId/v1":"231d07d65e8d9b0447e1b16dd0911936a360a0738fcf68503e27f8c0af976b01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): python/src/fts.rs:112-121 | python/src/fts.rs:139-148 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/fts.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"b28944a130f5a204310d0037a5aaefb461a3176758a9635ad5aa78c4715f6d2e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): python/src/mem_wal.rs:259-268 | python/src/mem_wal.rs:284-293 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/mem_wal.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d153f442b74af90b73120dfcdffd786b0fce89ec5b7f041fd4ee51f22f5342f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): python/src/mem_wal.rs:721-730 | python/src/mem_wal.rs:794-803 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/mem_wal.rs"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"881c8e02476013702fcb31a2f274c31d7b44e2aab5219a3e1da3bacc204537ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/arrow-scalar/src/serde.rs:210-219 | rust/arrow-scalar/src/serde.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":"rust/arrow-scalar/src/serde.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d2f6ca8654e70da65048a6e9509dc3fa1902b14ea4a67421b6ece0be646679c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs:410-419 | rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs:471-480 \u2014 before extracting anything, compare \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs\u0060 and \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 132 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":"rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"34a3955137e91401426cc1c2ba739693d1706fc86038779e7b7c229e1ab9a684"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs:494-503 | rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs:555-564 \u2014 before extracting anything, compare \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs\u0060 and \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 132 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":"rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"938db19b7a791e3edb6ef3dd48b4332594f96af79dc3ffd1d9c178eaef29a827"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs:590-599 | rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs:651-660 \u2014 before extracting anything, compare \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs\u0060 and \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 132 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":"rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb948a5e8262b796cd5e3a88309c61e252948cbb062f9498865b936eb092483e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs:608-617 | rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs:669-678 \u2014 before extracting anything, compare \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs\u0060 and \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 132 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":"rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs"},"region":{"startLine":608}}}],"partialFingerprints":{"codehealthFindingId/v1":"75c1efc375304f6cb78e472880a6736ebd7a1f9fa3ac054e0da2f7cc1639ee7f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): rust/compression/fsst/src/fsst.rs:1030-1039 | rust/compression/fsst/src/fsst.rs:1042-1050 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/compression/fsst/src/fsst.rs"},"region":{"startLine":1030}}}],"partialFingerprints":{"codehealthFindingId/v1":"747b0bfd20dc3d59bb9e3352f16f4c731fd049c741852bd765e4be074e887e54"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance/src/datafusion/dataframe.rs:151-160 | rust/lance/src/dataset/udtf.rs:86-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":"rust/lance/src/datafusion/dataframe.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c8cfa531181edf1c4df6c061ae192762bdc74d5c005b2f64dc34e17740bab91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): rust/lance/src/dataset.rs:3773-3782 | rust/lance/src/dataset/fragment.rs:2342-2350 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset.rs\u0060 and \u0060rust/lance/src/dataset/fragment.rs\u0060 as WHOLE FILES: this scan already matched 3 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. 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":"rust/lance/src/dataset.rs"},"region":{"startLine":3773}}}],"partialFingerprints":{"codehealthFindingId/v1":"45d068e3cf35d1e08b7662b7e856b2d22423a028dbe504294c2cf8183c9096c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-core/src/levenshtein.rs:37-46 | rust/lance/src/dataset/mem_wal/index/fts.rs:588-597 \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":"rust/lance-core/src/levenshtein.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"99d45b6a2a5a07dee6d2d119a01bf0ebd60a7c462d946b212e4689080ebaa43d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance/src/dataset/mem_wal/index/hnsw.rs:256-265 | rust/lance/src/dataset/mem_wal/index/hnsw.rs:303-313 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/index/hnsw.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6bf7bd04dc1601a342cb9d2ab08324b7dbd1d3822cf5026a40c29ac826d9bc8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs:313-322 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs:182-191 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 180 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dcada01cd232f5532369cf3ff8e3db8371f3a8345db131b29c8f7c2e90cd285"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/builder.rs:883-892 | rust/lance/src/dataset/mem_wal/scanner/exec/pk_block_filter.rs:219-228 \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":"rust/lance/src/dataset/mem_wal/scanner/builder.rs"},"region":{"startLine":883}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c982d8c819ee6a2324c29e70c41994caf3abefd8cc18fb9534fd17fb39bf3ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/fts_search.rs:1362-1370 | rust/lance/src/dataset/mem_wal/scanner/projection.rs:194-203 \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":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":1362}}}],"partialFingerprints":{"codehealthFindingId/v1":"66ad5dbaa940c3107ae9e0f28959062335b2f39b85e8a59e7ecb538cc6219908"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-table/src/system_index/frag_reuse.rs:495-504 | rust/lance/src/dataset/optimize/remapping.rs:253-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":"rust/lance-table/src/system_index/frag_reuse.rs"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b26043928226b72ec31b78462b9a65a0c955e7c17b501ece2c227dcb5e22b96"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): rust/lance/src/dataset/refs.rs:431-440 | rust/lance/src/dataset/refs.rs:533-541 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/refs.rs"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdff2ea2b0877f9d77f92a24b54914584e83f7debe48a5d8572b22af66387b81"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:5695-5704 | rust/lance/src/dataset/scanner.rs:7405-7414 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5695}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1bed14d6c2d2bc91a57794b56c5d12a4116281dac917c2333d99ce88fa09aac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance/src/dataset.rs:3462-3471 | rust/lance/src/dataset.rs:3505-3514 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset.rs"},"region":{"startLine":3462}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c28adb3c86f481abb1c0e009e30fb6b3a87216478d2f6769dad24868455e2b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance/src/index/vector/pq.rs:111-120 | rust/lance/src/index/vector/pq.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":"rust/lance/src/index/vector/pq.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"658304e28ebc246bb984e596d2b0095d797375b09730df298dad3ea21f5bcd69"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance/src/index/vector/ivf/partition_serde.rs:294-303 | rust/lance/src/index/vector/ivf/partition_serde.rs:338-347 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf/partition_serde.rs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"febcb8a0f43a026faac821a094a7f46e9ad891dc3778f4329dfba3b617755c17"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-arrow/src/json.rs:506-515 | rust/lance-arrow/src/json.rs:524-533 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-arrow/src/json.rs"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"f94d0efa459210e46ae855073e0b1275b38e3854dcf573f205b30dad52a2aaf4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-datafusion/src/planner.rs:818-827 | rust/lance-datafusion/src/planner.rs:831-840 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/planner.rs"},"region":{"startLine":818}}}],"partialFingerprints":{"codehealthFindingId/v1":"2314db497b7d1dd993d914f284b5e5cca32a1f2d4f9de599ec6b182bc49f4382"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-encoding/src/array_encoding/logical/struct.rs:305-314 | rust/lance-encoding/src/encodings/logical/struct.rs:222-231 \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":"rust/lance-encoding/src/array_encoding/logical/struct.rs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"affb41d1d59c2bcd60a2c21b2890578451893775e6c7f68f431dd536f1a4c71e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-encoding/src/array_encoding/strategy.rs:340-349 | rust/lance-encoding/src/array_encoding/strategy.rs:352-361 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/strategy.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"766f6b8a144cd3511b9a854ce186ba42a79b7e8c1e3f463ce5f82340663c54f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): rust/lance-encoding/src/decoder.rs:1308-1315 | rust/lance-encoding/src/decoder.rs:1368-1377 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":1308}}}],"partialFingerprints":{"codehealthFindingId/v1":"51971bf4d162492733dfa740a31e5bc6c92bca81a76398d98c83bacf276b39c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-encoding/src/decoder.rs:1610-1619 | rust/lance-encoding/src/decoder.rs:2061-2070 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":1610}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aaefd0a63ae591d4254f7472eaa70402e26953f4bef3f5f6e74c0d6ae6ee74a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/list.rs:55-64 | rust/lance-encoding/src/encodings/logical/list.rs:67-75 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/list.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8742e2af6675e072bacc39ea46e7678ea76dbd43bf2b05114edb5b54987bfed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive.rs:5833-5842 | rust/lance-encoding/src/encodings/logical/primitive/sparse/writer.rs:474-481 \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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":5833}}}],"partialFingerprints":{"codehealthFindingId/v1":"99afe8c1f186987643c799d459efd613cf206dcfd05f31a9645d212c21fb7fd8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive/sparse.rs:3544-3553 | rust/lance-encoding/src/encodings/logical/primitive/sparse.rs:3581-3590 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":3544}}}],"partialFingerprints":{"codehealthFindingId/v1":"707ad1d68824a5c99aada933479e1dea4951736aeb6f77eacc53be6d5be90f1d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): rust/lance-encoding/src/statistics.rs:253-261 | rust/lance-encoding/src/statistics.rs:266-275 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/statistics.rs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"37964956b3215293aad00b5667036487f834dae8235bcf07df8f2a236097fbf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-file/src/versions/v1/writer/statistics.rs:67-76 | rust/lance-file/src/versions/v1/writer/statistics.rs:119-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":"rust/lance-file/src/versions/v1/writer/statistics.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7085db7b817870a8cce6c81d4db6428cb51531c0b2a93f2b740bbce107a5c8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:481-490 | rust/lance-file/src/versions/v2_0/writer.rs:572-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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"decdfca7dabc8e62a32a8961eb5d0ca4d8bad3f8a4fd7763b24c639b817336fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-index/src/scalar/expression.rs:1533-1542 | rust/lance-index/src/scalar/expression.rs:1555-1564 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/expression.rs"},"region":{"startLine":1533}}}],"partialFingerprints":{"codehealthFindingId/v1":"e265335f23040dee607a770001381a1551a72166dcb07a34a3b975b10fa16aea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-index/src/scalar/fmindex.rs:571-580 | rust/lance-index/src/scalar/fmindex.rs:600-609 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/fmindex.rs"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d3d4fe8d106215a96ce21dc3a2552f954996f3559275a449db9f7c25ddb6455"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-index/src/scalar/inverted/cross_column.rs:1615-1624 | rust/lance-index/src/scalar/inverted/cross_column.rs:1632-1641 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/cross_column.rs"},"region":{"startLine":1615}}}],"partialFingerprints":{"codehealthFindingId/v1":"a26a65f2d930bd06e012970de7b90c3526023827e78f369cbbecc4bab7168067"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-index/src/scalar/inverted/documents.rs:1828-1837 | rust/lance-index/src/scalar/inverted/documents.rs:1889-1898 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/documents.rs"},"region":{"startLine":1828}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ef294e541a8db85facff7af3b0f8c38ffc5cf63511af43f6b5086abeb5ac3cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/posting_builder.rs:582-592 | rust/lance-index/src/scalar/inverted/index/posting_builder.rs:600-609 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/posting_builder.rs"},"region":{"startLine":582}}}],"partialFingerprints":{"codehealthFindingId/v1":"865c873973b83a0c94d51a214b241ef767b57c7f014d57883ffc8d9b43dfcd3a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand.rs:1255-1264 | rust/lance-index/src/scalar/inverted/wand.rs:1314-1323 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":1255}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6c461b412bb7f2cbab74841905a4b021eab07c94c633c4b6219224cb7d142c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-index/src/scalar/inverted.rs:598-607 | rust/lance-index/src/scalar/inverted.rs:622-631 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted.rs"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c132246432a3303370b2ec618ca1663aa4ca01ac0bc0f0a6cf55badd6ca91bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): rust/lance-index/src/scalar/json.rs:561-568 | rust/lance-index/src/scalar/json.rs:687-696 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"abb8ef3059b7a9603e4d954af594e0b1ee21cfd3f827898bd4d885d763b51c84"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-index/src/scalar/label_list.rs:467-476 | rust/lance-index/src/scalar/label_list.rs:490-499 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/label_list.rs"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f51fcfe2e5182f8dcaa301adff7129178bb7f64385faf999dcd599744dd329a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-index/src/vector/bq/pairwise.rs:744-753 | rust/lance-index/src/vector/bq/pairwise.rs:820-829 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/pairwise.rs"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc23d905edfd0c706d9726a1cc7f940855a1a947f4001589919c2ad7c7014beb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-index/src/vector/hnsw/index.rs:231-240 | rust/lance-index/src/vector/hnsw/index.rs:262-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":"rust/lance-index/src/vector/hnsw/index.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"002c8e968fc0305255cc5f055d045d59eba4b0b0d8eae56fe1213c0070aa3f58"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-index/src/vector/kmeans.rs:1051-1060 | rust/lance-index/src/vector/kmeans.rs:1259-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":"rust/lance-index/src/vector/kmeans.rs"},"region":{"startLine":1051}}}],"partialFingerprints":{"codehealthFindingId/v1":"b132dc360dadd2af2ecba74936363ab99eacdce38aa641082289a289b7c529ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (2\u201310 lines \u00D7 5): rust/lance-linalg/src/distance/cosine.rs:567-576 | rust/lance-linalg/src/distance/cosine.rs:1152-1159 | rust/lance-linalg/src/distance/cosine.rs:1247-1249 | rust/lance-linalg/src/distance/cosine.rs:1300-1301 | rust/lance-linalg/src/distance/cosine.rs:1302-1304 \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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"16b80d278d2cfadf121714116b326776e05de5c44b03841ace4c80de80765b13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-linalg/src/distance/cosine.rs:964-973 | rust/lance-linalg/src/distance/cosine.rs:1036-1045 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":964}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bf5e39d7e20aff9781ef478b8987f8454b64597a0e5ca5401734d587e2252ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-linalg/src/distance/hamming.rs:614-623 | rust/lance-linalg/src/distance/hamming.rs:693-702 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/hamming.rs"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2772d332e82b7052cc0af2a93452725bad7f826f85a653dbc3942800ad7568d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-linalg/src/distance/hamming.rs:788-797 | rust/lance-linalg/src/distance/hamming.rs:844-853 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/hamming.rs"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"55ead3fb1f9c2fb351455826b41248a0313515011125f2c1181d551fb6ae55f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:264-273 | rust/lance-linalg/src/simd/f32.rs:283-292 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"b937d949904124d1886342a3b85a27842aec102f4c21d85c4c212a0bc5370ae1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:753-762 | rust/lance-linalg/src/simd/f64.rs:599-608 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/simd/f32.rs\u0060 and \u0060rust/lance-linalg/src/simd/f64.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 68 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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":753}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e027ee7473fe82e6755284585dca29381acdc9ae8732513c0596cefdf670b75"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-linalg/src/simd/f64.rs:157-166 | rust/lance-linalg/src/simd/f64.rs:176-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":"rust/lance-linalg/src/simd/f64.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"8596396076fd24f7ad3f225693f64dec282c40e17a0992bcc1ae93055d3e4596"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-linalg/src/simd/f64.rs:594-603 | rust/lance-linalg/src/simd/f64.rs:617-626 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f64.rs"},"region":{"startLine":594}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c95d5514b11a95c47c5f651ff65408463948c2e13709209d8f922b30a06188f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-linalg/src/simd/u8.rs:183-192 | rust/lance-linalg/src/simd/u8.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":"rust/lance-linalg/src/simd/u8.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"1328e82671ebc1cb41ee893e91daec5108341291c8d971743c3909bbafb2cd97"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): rust/lance-namespace-impls/src/credentials/gcp.rs:602-611 | rust/lance-namespace-impls/src/credentials/gcp.rs:729-737 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/credentials/gcp.rs"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"68c3b7f2888f37651288e6f17dab82ae82a493024505832d86a59b216e1af0b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-namespace-impls/src/dir/manifest.rs:1124-1133 | rust/lance-namespace-impls/src/dir/manifest.rs:1224-1233 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":1124}}}],"partialFingerprints":{"codehealthFindingId/v1":"2daf6810f8d012c01f7d6c72bf7c8108f79ee30d4f192bfd2d7b98463ad34e9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201310 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:3971-3980 | rust/lance-namespace-impls/src/dir/manifest.rs:3826-3832 \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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":3971}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c2cb23f36c214be563bbf4c18c4c70e66f436d23939687bb60f797274de6774"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-namespace-impls/src/rest.rs:658-667 | rust/lance-namespace-impls/src/rest.rs:695-704 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/rest.rs"},"region":{"startLine":658}}}],"partialFingerprints":{"codehealthFindingId/v1":"476f75b5ee9f58e89aac034f5e7b6499bbe8a3e8cd12c7f12614fba01e10f838"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-table/src/transaction/manifest_build.rs:770-779 | rust/lance-table/src/transaction/manifest_build.rs:1010-1019 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/manifest_build.rs"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"823bbaf2f5fbf52f17c0a8ac1285ad8541eff9d6d930785b8240f90225c25ac5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 7): java/lance-jni/src/namespace.rs:357-365 | java/lance-jni/src/namespace.rs:438-446 | java/lance-jni/src/namespace.rs:497-505 | java/lance-jni/src/namespace.rs:580-588 | java/lance-jni/src/namespace.rs:674-682 | java/lance-jni/src/namespace.rs:762-770 | java/lance-jni/src/namespace.rs:848-856 \u2014 all 7 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":"java/lance-jni/src/namespace.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e64799e60594d770835efe0a45e50a226f5ece8e825da0c3bae109601b37058"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): rust/lance/src/dataset/mem_wal/scanner/fts_search.rs:1121-1129 | rust/lance/src/dataset/mem_wal/scanner/planner.rs:365-373 | rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs:701-709 | rust/lance/src/dataset/mem_wal/scanner/vector_search.rs:511-519 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/scanner/fts_search.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/scanner/planner.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 38 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":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":1121}}}],"partialFingerprints":{"codehealthFindingId/v1":"873af203c20e44dc89fc500b8bcdead304345ccd7ce3bc097959c199a1df07b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): rust/lance/src/index/vector/ivf.rs:1097-1105 | rust/lance/src/index/vector/ivf.rs:2227-2235 | rust/lance/src/index/vector/ivf.rs:2295-2303 \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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":1097}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bfaa3ef1930dc79ba1dd669f9f4ac6c181e68bc23d76c23b818388e451c315a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): rust/lance-datagen/src/generator.rs:145-153 | rust/lance-datagen/src/generator.rs:168-176 | rust/lance-datagen/src/generator.rs:191-199 \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":"rust/lance-datagen/src/generator.rs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcc5c5625840728a76701915601c856475b163918ab4124e5071724ca34a806c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): rust/lance-io/src/object_store/providers/oss.rs:143-151 | rust/lance-io/src/object_store/providers/tencent.rs:99-107 | rust/lance-io/src/object_store/providers/tos.rs:149-157 \u2014 before extracting anything, compare \u0060rust/lance-io/src/object_store/providers/oss.rs\u0060 and \u0060rust/lance-io/src/object_store/providers/tos.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 62 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":"rust/lance-io/src/object_store/providers/oss.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ec665964ae9167b445d4596032f7f9d0b0040e0d710e6990e1744840fa92743"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): rust/lance-linalg/src/distance/dot.rs:640-648 | rust/lance-linalg/src/distance/l2.rs:691-699 | rust/lance-linalg/src/distance/norm_l2.rs:292-300 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/dot.rs\u0060 and \u0060rust/lance-linalg/src/distance/l2.rs\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 86 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":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"8004fd61a79195b882a649bbe02d1e0ac1dc39689a3d329b8fda3676a066da7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20139 lines \u00D7 4): rust/lance-linalg/src/distance/cosine.rs:1026-1029 | rust/lance-linalg/src/distance/dot.rs:743-751 | rust/lance-linalg/src/distance/l2.rs:810-818 | rust/lance-linalg/src/distance/norm_l2.rs:368-376 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/cosine.rs\u0060 and \u0060rust/lance-linalg/src/distance/dot.rs\u0060 as WHOLE FILES: this scan already matched 7 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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1026}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc6903b264e8840f8567c6268c4c7f603845711f798da69c738452e1acbc6252"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): java/lance-jni/src/namespace.rs:3464-3472 | java/lance-jni/src/namespace.rs:3593-3601 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/namespace.rs"},"region":{"startLine":3464}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ded9895f36bfe60fdc7d63fffea20fa3e13163617f0f57c86a6abccb158818d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): java/lance-jni/src/otel.rs:161-169 | python/src/otel.rs:214-222 \u2014 before extracting anything, compare \u0060java/lance-jni/src/otel.rs\u0060 and \u0060python/src/otel.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 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":"java/lance-jni/src/otel.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fdf593700379ea3d4041f24e3151e364d13425026bb2a8d12c8a81238125621"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): python/src/dataset.rs:524-532 | python/src/dataset.rs:550-558 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"a14f9ec18e590821fa66da1bb2ac8bd518b0164763dfc9d3778278e8513d0fbd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): python/src/dataset.rs:2215-2223 | python/src/dataset.rs:2247-2255 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":2215}}}],"partialFingerprints":{"codehealthFindingId/v1":"82716597f520083c8ec923c331f6ec35239068260a05c25ba4fd06b218791406"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): rust/lance/src/dataset/fragment.rs:1165-1173 | rust/lance/src/dataset/fragment.rs:1278-1285 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":1165}}}],"partialFingerprints":{"codehealthFindingId/v1":"af06e8b2b9667e60458ee3d2c57abbd3ce4d119ecc401b1bbbaa228da7b681b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance/src/dataset/fragment.rs:3644-3652 | rust/lance/src/dataset/fragment.rs:3846-3854 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":3644}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfaab02d64bf81e60f653e16053cb8a1d303ddad6acea4f4e5540a7895d50cf3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/planner.rs:337-348 | rust/lance/src/dataset/mem_wal/scanner/vector_search.rs:469-477 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/scanner/planner.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/scanner/vector_search.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 89 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":"rust/lance/src/dataset/mem_wal/scanner/planner.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"19fc381e242a5388ce452d778d16df44b58756ce7d78fa288ca8942edbd0597b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance/src/dataset/write/commit.rs:397-405 | rust/lance/src/dataset/write/insert.rs:420-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":"rust/lance/src/dataset/write/commit.rs"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"002aa79b0005057ac96018d5e283c2c43079539e80ce1765b35bb44e24ad4d44"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance/src/dataset/write.rs:2406-2414 | rust/lance/src/dataset/write.rs:2424-2432 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write.rs"},"region":{"startLine":2406}}}],"partialFingerprints":{"codehealthFindingId/v1":"b89a08806225c76cca19735f1f1360d6e70dde0f036878670dc3370e1d449348"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance/src/index/scalar/inverted.rs:199-207 | rust/lance/src/index/scalar/inverted.rs:210-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":"rust/lance/src/index/scalar/inverted.rs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a3fe0c543745e071ecbc32ddca72ab00904183cc5040ac53ff50b74f8af6ede"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): rust/lance/src/index/vector/hamming.rs:499-506 | rust/lance/src/index/vector/hamming.rs:615-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":"rust/lance/src/index/vector/hamming.rs"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"0952f70c110ae1c61ca80f009ee6f8ccbe03a238d69ee8bee358b8e367632bf7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-index/src/vector/hnsw/index.rs:285-293 | rust/lance/src/index/vector/ivf/v2.rs:2857-2865 \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":"rust/lance-index/src/vector/hnsw/index.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"4850f931ba985d9a20620ac5096ea70dd8c719f0247e79a36ab9a887b7d3829b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance/src/index.rs:166-174 | rust/lance/src/index/scalar/ngram.rs:95-103 \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":"rust/lance/src/index.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"9812aa61d33b5216f9a19bd4906701c72f9890e0dff1549b09818da50799c934"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:2188-2196 | rust/lance/src/io/exec/fts.rs:2274-2282 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2188}}}],"partialFingerprints":{"codehealthFindingId/v1":"e341b411bc153d872928b4aa2c3d5d23a94cdf84881ffc3861ed869ffa3a4bb9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance/src/index/scalar/bitmap.rs:49-57 | rust/lance/src/index/scalar/label_list.rs:120-128 \u2014 before extracting anything, compare \u0060rust/lance/src/index/scalar/bitmap.rs\u0060 and \u0060rust/lance/src/index/scalar/label_list.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 58 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":"rust/lance/src/index/scalar/bitmap.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"739ded9bb40dd15a2421550c588a401f17509ff8fc8bb072a8b288862d05309f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20139 lines \u00D7 2): rust/lance/src/index/vector/ivf/io.rs:243-248 | rust/lance/src/index/vector/ivf/io.rs:372-380 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf/io.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc4dc18153bb10e08a24c7ec1e2118d50c40bec6cb436f53a1fc044b8e7d0152"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): rust/lance-datafusion/src/udf/json.rs:284-291 | rust/lance-datafusion/src/udf/json.rs:565-573 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/udf/json.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e2586b03eeb6d53149b1c210c7ba808b01f3629c4611393f56d73f2d5151835"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-datafusion/src/udf/json.rs:450-458 | rust/lance-datafusion/src/udf/json.rs:733-741 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/udf/json.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf91424013424b7c8693e7316295cc272394b79388d03f9e9ab14340a038e625"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-encoding/src/array_encoding/logical/struct.rs:209-217 | rust/lance-encoding/src/encodings/logical/struct.rs:146-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":"rust/lance-encoding/src/array_encoding/logical/struct.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"3af4a0c13dbac7f95a4469a9f3be3ed6aeed26cbd256893ec20ee74df7ff4699"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-encoding/src/encodings/physical/packed.rs:825-833 | rust/lance-encoding/src/encodings/physical/packed.rs:843-851 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/packed.rs"},"region":{"startLine":825}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b56bf9287539393de555814109f80ba9cd31ddb2640b13be8b3584f1275f837"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:133-141 | rust/lance-file/src/writer/structural.rs:116-124 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c4b9f56eec95528c3a880be04c19619989cede0a899a72a4f7a5842d8d36ab2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:879-887 | rust/lance-file/src/writer/structural.rs:855-863 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":879}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2686e234f5c28c898095804d8b0d241b3d98a368bab3295cfc4827011b62216"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-file/src/versions/v1/mod.rs:108-116 | rust/lance-file/src/versions/v2_0/mod.rs:74-82 \u2014 \u0060rust/lance-file/src/versions/v1/mod.rs\u0060 and \u0060rust/lance-file/src/versions/v2_0/mod.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 34 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":"rust/lance-file/src/versions/v1/mod.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"402df61d422c7d4deb849879432488e54ba819e02d864da71f4a7ffe67d50d82"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): rust/lance-index/src/scalar/bitmap.rs:548-555 | rust/lance-index/src/scalar/bitmap.rs:593-601 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/bitmap.rs"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a4f4bd03936a9d2426c789c5a5d2af20794991bc562566714337df8b31b9b5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-index/src/scalar/fmindex.rs:854-862 | rust/lance-index/src/scalar/fmindex.rs:877-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":"rust/lance-index/src/scalar/fmindex.rs"},"region":{"startLine":854}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddae90dbbfe9eb4ae1ccbdc698cc56126f8096fff21dcc2f8dbf4b456877d8d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): rust/lance-index/src/scalar/inverted/builder.rs:1589-1596 | rust/lance-index/src/scalar/inverted/builder.rs:1653-1661 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":1589}}}],"partialFingerprints":{"codehealthFindingId/v1":"d683e6226e04395ee14cd1de513902491d3e64fb3faf73353dd06d37a6bd0390"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): rust/lance-index/src/scalar/inverted/builder.rs:1757-1765 | rust/lance-index/src/scalar/inverted/builder.rs:1770-1777 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":1757}}}],"partialFingerprints":{"codehealthFindingId/v1":"130ea930b4b416d4de5d8a905c63697ff04816e304ff257c9a33d722e9f8b5dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/doc_set.rs:723-731 | rust/lance-index/src/scalar/inverted/index/doc_set.rs:736-744 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/doc_set.rs"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f493a8f68cb68223422385114a89bac803656dc264c42c48d1a5f95447e490d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/inverted_index.rs:254-262 | rust/lance-index/src/scalar/inverted/index/inverted_index.rs:323-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":"rust/lance-index/src/scalar/inverted/index/inverted_index.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"96e5ce5411f23dfb9ef38f4868e4fdf96d656584ce5faf5f8882331d5b0f8842"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand.rs:1708-1716 | rust/lance-index/src/scalar/inverted/wand_maxscore.rs:253-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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":1708}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7ababb0b5c87709ce6d1cab7e48b2ce841a718bd223f83f939fbcc86e90875e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand.rs:3997-4005 | rust/lance-index/src/scalar/inverted/wand.rs:4035-4043 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":3997}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d3d13f8fc1452cd13e7c9fa2abecd7b6fbd27a7fbdf8db81f09259581dc11ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand.rs:4212-4220 | rust/lance-index/src/scalar/inverted/wand.rs:4260-4268 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":4212}}}],"partialFingerprints":{"codehealthFindingId/v1":"e830011dacb891a11ee04c9f008e0855ce9862c5212490b3575141ddff5c3750"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand.rs:4301-4309 | rust/lance-index/src/scalar/inverted/wand.rs:4331-4338 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":4301}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c7b488347782f32febb6a30050e764eff58b1b551b0db40ec4cfe54f3afd31e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-index/src/scalar.rs:394-402 | rust/lance-index/src/scalar.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":"rust/lance-index/src/scalar.rs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"319fef5ae9ee8df4129001d86bc39f942b21825aece12d0bac51471281962ab3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 2): rust/lance-index/src/vector/bq/dist_table_quant.rs:63-71 | rust/lance-index/src/vector/bq/dist_table_quant.rs:102-108 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/dist_table_quant.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"730b6462d5f131f6cf2f73b633cd6a5ff71e970ce650c4ed9f0845e9f3c6109d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-index/src/vector/bq/storage.rs:2543-2551 | rust/lance-index/src/vector/bq/storage.rs:2697-2705 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":2543}}}],"partialFingerprints":{"codehealthFindingId/v1":"037198abad2b2da82b7d5971a7a8e8b26037e4eb2b0b10ad105801528ca691cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-index/src/vector/distributed/index_merger.rs:116-124 | rust/lance-index/src/vector/distributed/index_merger.rs:134-142 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9cf0b92cb6dac53538434e7da4eaf15e4ba2301b80c4abe436d48c16806a9eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-index/src/vector/distributed/index_merger.rs:1597-1605 | rust/lance-index/src/vector/distributed/index_merger.rs:1646-1654 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":1597}}}],"partialFingerprints":{"codehealthFindingId/v1":"d444488e87e3d24641e2e9f7033d9dfebce4e2c5ded4524c1c54262339c733e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-io/src/lib.rs:231-239 | rust/lance-io/src/lib.rs:286-294 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/lib.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba886c4c6008db1ab4ef576f3ac07e8cd3a356dc2570dad44aed783803a3db58"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20139 lines \u00D7 3): rust/lance-linalg/src/distance/cosine.rs:558-566 | rust/lance-linalg/src/distance/cosine.rs:1143-1151 | rust/lance-linalg/src/distance/cosine.rs:1240-1242 \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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e092c4f0a460c829ceb226c0e86cacb94cc05a53f76a121edc07873e23c50a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-linalg/src/simd/dist_table.rs:740-748 | rust/lance-linalg/src/simd/dist_table.rs:755-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":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"83db11336b681f0f45e41670842d32d1070cac1adfbcaf82104429f731611c74"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:93-101 | rust/lance-linalg/src/simd/f32.rs:111-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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"52c6b6719aa574a33433c546722542f9b9057b58da216d19637f75a5041e0ee4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:336-344 | rust/lance-linalg/src/simd/f32.rs:825-832 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"33884cbfb652725e3138c3694950394572aec0f27268b3dd4f73cfb7f11c9c57"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:729-737 | rust/lance-linalg/src/simd/f64.rs:574-582 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/simd/f32.rs\u0060 and \u0060rust/lance-linalg/src/simd/f64.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 68 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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce138e43fafb41786a891b9406cb7dde9b0321a722df95cbaa35ee566a5a3281"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:749-757 | rust/lance-linalg/src/simd/f32.rs:771-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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdacda8b2d03aaad700312826151927e78d21c2ed0c9fbceb29e2f770170ebaa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-table/src/rowids/encoded_array.rs:152-160 | rust/lance-table/src/rowids/encoded_array.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":"rust/lance-table/src/rowids/encoded_array.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"76eb9bd42200a0ba375f7c4873ac6d5f340c029830ae9210e716405e10e5a31d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): rust/lance-table/src/utils/stream.rs:275-283 | rust/lance-table/src/utils/stream.rs:300-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":"rust/lance-table/src/utils/stream.rs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"893a6e3ef8eb1fb97e65181426f893ca4717a32ecc75b135399f72f3d6963703"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): rust/lance-datafusion/src/udf/json.rs:517-524 | rust/lance-datafusion/src/udf/json.rs:570-577 | rust/lance-datafusion/src/udf/json.rs:626-633 | rust/lance-datafusion/src/udf/json.rs:682-689 | rust/lance-datafusion/src/udf/json.rs:738-745 \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":"rust/lance-datafusion/src/udf/json.rs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8ba8f506d5af65d97d9649eadf1b34441e9e7c206824647720b31991c492b69"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs:333-340 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/btree.rs:186-194 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs:200-208 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/btree.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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0516d8cf99a70c4697ee15aa14a7205bb54957c1c378b2f050abc2bd34aaa13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): rust/lance/src/dataset/optimize.rs:2546-2553 | rust/lance/src/dataset/write/merge_insert/exec/write.rs:940-947 | rust/lance/src/dataset/write/update.rs:399-406 \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":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":2546}}}],"partialFingerprints":{"codehealthFindingId/v1":"2716c06eaffee5b224d3deabffda5c263d8fa2a2dbcd40d1d162682988f63cac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): rust/lance/src/io/exec/fts.rs:2679-2686 | rust/lance/src/io/exec/fts.rs:2743-2750 | rust/lance/src/io/exec/fts.rs:2787-2794 \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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2679}}}],"partialFingerprints":{"codehealthFindingId/v1":"c61143e50aea0cb2172bc8e1cbdc3bc85ef59b2c444720d10d71886fa6503667"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): rust/lance-file/src/versions/v2_1/mod.rs:108-115 | rust/lance-file/src/versions/v2_2/mod.rs:104-111 | rust/lance-file/src/versions/v2_3/mod.rs:112-119 \u2014 \u0060rust/lance-file/src/versions/v2_2/mod.rs\u0060 and \u0060rust/lance-file/src/versions/v2_3/mod.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 57 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":"rust/lance-file/src/versions/v2_1/mod.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3fe94e4f1fda5eada5376e82ac6d498ef538c9ab110f69fc350467bfce4c5bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): rust/lance-index/src/scalar/inverted/index/partition.rs:1080-1087 | rust/lance-index/src/scalar/inverted/index/partition.rs:1146-1153 | rust/lance-index/src/scalar/inverted/index/partition.rs:1208-1215 \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":"rust/lance-index/src/scalar/inverted/index/partition.rs"},"region":{"startLine":1080}}}],"partialFingerprints":{"codehealthFindingId/v1":"e133e9d122325b846d31527a73a1a6d57deedcb0ce04f8df9847c9d2bfce00ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): rust/lance-linalg/src/distance/l2.rs:728-735 | rust/lance-linalg/src/distance/l2.rs:755-762 | rust/lance-linalg/src/distance/l2.rs:782-789 \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":"rust/lance-linalg/src/distance/l2.rs"},"region":{"startLine":728}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba157289254ac54efef7c04e885e52bb253fbf29a08491527ee58ed7a761833"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): java/lance-jni/src/blocking_dataset.rs:2541-2548 | java/lance-jni/src/blocking_dataset.rs:2593-2600 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":2541}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d90465cb6f376826467d1963cbc2d9f658f0ded91258c5a85c65155b9f85068"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): java/lance-jni/src/file_reader.rs:114-121 | java/lance-jni/src/file_writer.rs:97-104 \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":"java/lance-jni/src/file_reader.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bab6e55f8a142835b0ff4efeedf5680426c9e1e3252680fde6cd62e48dfbfe9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): java/lance-jni/src/mem_wal.rs:172-179 | java/lance-jni/src/mem_wal.rs:195-202 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/mem_wal.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7dbe08440903cface2ddc0e6ab5e26a10c6f9bbce9a77a5efd5e9098b7a48c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): java/lance-jni/src/otel.rs:110-117 | python/src/otel.rs:158-165 \u2014 before extracting anything, compare \u0060java/lance-jni/src/otel.rs\u0060 and \u0060python/src/otel.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 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":"java/lance-jni/src/otel.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"5690c138c3c2eb33f02267650875f5e5780c963aeffe7dc18a57ba7674d4feaf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): java/lance-jni/src/otel.rs:386-393 | python/src/otel.rs:339-346 \u2014 before extracting anything, compare \u0060java/lance-jni/src/otel.rs\u0060 and \u0060python/src/otel.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 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":"java/lance-jni/src/otel.rs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"57925cc4e97342a9d9cd4b2de61c5c71591286d949538ddb4d80e3dc732fac73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): java/lance-jni/src/vector_trainer.rs:116-123 | java/lance-jni/src/vector_trainer.rs:179-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":"java/lance-jni/src/vector_trainer.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"17bf15756fafb8a978bc635542f338d7b8a2be254b94cedd45ffdaef6813a9dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): python/src/fragment.rs:168-175 | python/src/fragment.rs:196-203 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/fragment.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ebd1d584a007b76dafbfaeef90ec0fe97c98b5da45b735b2cbba611685a9f42"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs:226-233 | rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs:239-246 \u2014 before extracting anything, compare \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs\u0060 and \u0060rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 132 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":"rust/compression/bitpacking/src/bitpacker_internal/bitpacker4x.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"a09717c0f8fe0214a3c0f292ace82559892ee23fffded0285dd0e55e00cbd47d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/compression/fsst/src/fsst.rs:1216-1223 | rust/compression/fsst/src/fsst.rs:1355-1362 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/compression/fsst/src/fsst.rs"},"region":{"startLine":1216}}}],"partialFingerprints":{"codehealthFindingId/v1":"597b06c758a6eb1714138eedc968e1e1a771737ce6fe21b63bc9686531500ebb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/bin/fm_contains_bench.rs:166-173 | rust/lance/src/bin/fm_index_tool.rs:55-62 \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":"rust/lance/src/bin/fm_contains_bench.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"0629ee30a824b8cca500fa5a6cc675ca9c806e779d6c6dab5ad1ad159bda4a41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/dataset/mem_wal/index/btree.rs:446-453 | rust/lance/src/dataset/mem_wal/index/btree.rs:642-649 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/index/btree.rs"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"72c29cf8e5d02179796015741fdda97be45a6359051b7d386c4024443a1e0323"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/flat_search.rs:931-938 | rust/lance/src/dataset/mem_wal/index/fts.rs:621-628 \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":"rust/lance-index/src/scalar/inverted/index/flat_search.rs"},"region":{"startLine":931}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dd64e5b0d3aab7a8a3c858aa172036613cb29f47fe1999c315adc11e4ba8f9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs:980-987 | rust/lance/src/dataset/mem_wal/scanner/builder.rs:819-826 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/scanner/builder.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. 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee32c418658cfa3eb4c3eb6e8bf04d317c1ce8ec770de13f6589124eea520919"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/dataset/write/merge_insert/exec/delete.rs:73-80 | rust/lance/src/dataset/write/merge_insert/exec/write.rs:264-271 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/write/merge_insert/exec/delete.rs\u0060 and \u0060rust/lance/src/dataset/write/merge_insert/exec/write.rs\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"rust/lance/src/dataset/write/merge_insert/exec/delete.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8f6e76341b9bd7e47b04ebb20225259b767fe0f6f6f9e52e89b3073797606e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/dataset/write/merge_insert/exec/delete.rs:240-247 | rust/lance/src/dataset/write/merge_insert/exec/write.rs:870-877 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/write/merge_insert/exec/delete.rs\u0060 and \u0060rust/lance/src/dataset/write/merge_insert/exec/write.rs\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"rust/lance/src/dataset/write/merge_insert/exec/delete.rs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdbfdb264e3e19ce1f293a1e6a50a14f3b2c9d8477fb1a5376723415f4668d3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/index/frag_reuse.rs:731-738 | rust/lance/src/index/frag_reuse_reader/cache.rs:171-178 \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":"rust/lance/src/index/frag_reuse.rs"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb3d15112ac3a4d217d482ad3a5c231f2e2074f54551871a670efd12369f6a11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/index/scalar.rs:396-403 | rust/lance/src/index/scalar.rs:469-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":"rust/lance/src/index/scalar.rs"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"680d4103372ec1d6d1f1526d782cf484a4f44ed0529e75a959c6de02d959f471"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:1073-1080 | rust/lance/src/index/vector/ivf.rs:1164-1171 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6163da517f9c8bdbac338abc1bb4d917d11da9944a3194d38409aacd3f590ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:313-320 | rust/lance/src/io/exec/fts.rs:380-387 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"c340d35559009582356bb93ff347d99d59ca45aa315ce284b6f5b30ab2cc7b45"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:821-828 | rust/lance/src/io/exec/fts.rs:1890-1897 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":821}}}],"partialFingerprints":{"codehealthFindingId/v1":"d82ea125ff769c448da93dd2379fe2ee184024db840bfc804b387a3b3579aee0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:2174-2181 | rust/lance/src/io/exec/fts.rs:2197-2204 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2174}}}],"partialFingerprints":{"codehealthFindingId/v1":"b36130649547866bd981d0621a172d1ea504e677b1f2d3f8d51ddd3abe2996f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:2259-2266 | rust/lance/src/io/exec/fts.rs:2285-2292 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2259}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecf9781919b1bdcb9ccdd296c61fe8e7a2c31a62847de0ea671126acb4c10c8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-table/src/transaction/manifest_build.rs:1140-1147 | rust/lance/src/io/exec/fts.rs:2441-2448 \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":"rust/lance-table/src/transaction/manifest_build.rs"},"region":{"startLine":1140}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1b119a3ab81acae055f081b7219b16e628dd05892a9509b2d81ac06a5e83e89"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:3264-3271 | rust/lance/src/io/exec/fts.rs:5129-5136 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":3264}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8ea2f5e5a20c0e7ab216c3c78cc731d23eda9b99cace5003e4b45f852b8446c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-core/src/datatypes/schema.rs:239-246 | rust/lance-core/src/datatypes/schema.rs:565-572 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/datatypes/schema.rs"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad5aed7986f0233ae033253fa21125cdc6a7c4578d8950130190f34b3ff91505"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/fixed_size_list.rs:416-423 | rust/lance-encoding/src/encodings/logical/fixed_size_list.rs:471-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":"rust/lance-encoding/src/encodings/logical/fixed_size_list.rs"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"7550e832f1972d84a3986d8e994ba7694de3f8636673d7379c4099ac38e2d687"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive/blob.rs:407-414 | rust/lance-encoding/src/encodings/logical/primitive/blob.rs:421-428 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive/blob.rs"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"69a6f4f427581f78bda5a9aeba77de0eccbe12c013ac4ea250a39715c5d55cfb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-encoding/src/encodings/physical/packed.rs:646-653 | rust/lance-encoding/src/encodings/physical/packed.rs:656-663 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/packed.rs"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d3b2aaab0c9a91cb3843688943677bdcbd81ce80ca1f82125df7c333020305a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-encoding/src/statistics.rs:190-197 | rust/lance-encoding/src/statistics.rs:327-336 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/statistics.rs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"38e73a42adb3f6024e44a31e5e5f671192efeda30e305ee868b4cfbc09df8260"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-file/src/versions/v1/encoding/plain.rs:336-343 | rust/lance-file/src/versions/v1/encoding/plain.rs:401-408 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/encoding/plain.rs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cbe584dd0c6b4c214b9bf09af20cc7583251aaf34425570dd335ec6480430e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5\u20138 lines \u00D7 2): rust/lance-file/src/versions/v1/writer/mod.rs:507-511 | rust/lance-file/src/versions/v1/writer/mod.rs:555-562 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/writer/mod.rs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a329de94fa7640cda807d4e6a4dfe90dd2c528760e39c6438b3eb558351b138"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:247-254 | rust/lance-file/src/writer/structural.rs:215-222 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1e8fa960a0951687f10ec8fdae61b672b719d2bf91ac2997086273125149a98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:413-420 | rust/lance-file/src/writer/structural.rs:551-558 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"e320bf00dfae2fb2b670eeb26261a0d13be2e53eda4b2a96e3ba4f023877b546"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-index/src/scalar/bloomfilter.rs:155-162 | rust/lance-index/src/scalar/zonemap.rs:557-564 \u2014 before extracting anything, compare \u0060rust/lance-index/src/scalar/bloomfilter.rs\u0060 and \u0060rust/lance-index/src/scalar/zonemap.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 61 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":"rust/lance-index/src/scalar/bloomfilter.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cede4b2475d0c0505c67ec480a91eecce993883973bf920380948acbc2dad0d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-index/src/scalar/bloomfilter.rs:637-644 | rust/lance-index/src/scalar/bloomfilter.rs:651-658 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/bloomfilter.rs"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d360ce8d4052b1acc17ce9a3ee7c5ac76447b23f4d40eb3c60ef7dd58f263d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): rust/lance-index/src/scalar/btree.rs:2339-2345 | rust/lance-index/src/scalar/rtree.rs:552-559 \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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":2339}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d39c71c5b6bc535b75cef262b88c6391bbf7789d6202b430d636d5071e6fcf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-index/src/scalar/inverted/cross_column.rs:196-203 | rust/lance-index/src/scalar/inverted/wand.rs:2115-2122 \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":"rust/lance-index/src/scalar/inverted/cross_column.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"f77512507c369dcb8f29804f7e6378dc6ac6b7a2c2bb5be15e542d7d9463098c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-index/src/vector/distributed/index_merger.rs:496-503 | rust/lance-index/src/vector/distributed/index_merger.rs:531-538 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b308cac0fa25bb5129c428b9d5267c1fd1a7bb5a0760965a373cc0c57bc0893"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-index/src/vector/hnsw/builder.rs:863-870 | rust/lance-index/src/vector/hnsw/online.rs:312-319 \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":"rust/lance-index/src/vector/hnsw/builder.rs"},"region":{"startLine":863}}}],"partialFingerprints":{"codehealthFindingId/v1":"d66ebe19ce23d6e5449496c9a37c11e5e366dab984584bda10a5c7dc6656f861"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-index/src/vector/bq/rotation.rs:36-43 | rust/lance-index/src/vector/bq/rotation.rs:119-126 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/rotation.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"b228b620000c4f0f338293d12ad7199888ff678140bca8ffeb6f8d209b146ae3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/search.rs:1221-1228 | rust/lance-index/src/scalar/inverted/index/search.rs:1262-1269 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/search.rs"},"region":{"startLine":1221}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5245ec8e2ac384b3360553e085a6e8b3ba773ff5be1dc8ad836907fae569394"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-io/src/object_store/storage_options.rs:457-464 | rust/lance-io/src/object_store/storage_options.rs:524-532 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/object_store/storage_options.rs"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"786262d698b8b44bbe48b29da917b14ad2101f5ed1c12af4b1b1e6dfde9322dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-linalg/src/distance/dot.rs:621-628 | rust/lance-linalg/src/distance/dot.rs:757-764 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":621}}}],"partialFingerprints":{"codehealthFindingId/v1":"c777813edc04ef87af502bee2155c84df9acd4f2e7ec576d54c40a3bb5128d9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-linalg/src/distance/l2.rs:633-640 | rust/lance-linalg/src/distance/l2.rs:668-675 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/l2.rs"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"06746f637436c40457fdca4d63671c7003c4ad7e2cdac834ed9824212025412d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:2256-2263 | rust/lance-namespace-impls/src/dir.rs:2287-2294 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":2256}}}],"partialFingerprints":{"codehealthFindingId/v1":"80838b7d2ae889e7b3381636fcc70f4f560fea6d1b5a441a170f2bddd58958d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 7): rust/lance/src/index/scalar/bitmap.rs:70-76 | rust/lance/src/index/scalar/bloomfilter.rs:92-98 | rust/lance/src/index/scalar/fmindex.rs:116-122 | rust/lance/src/index/scalar/label_list.rs:142-148 | rust/lance/src/index/scalar/minhash_lsh.rs:79-85 | rust/lance/src/index/scalar/rtree.rs:86-92 | rust/lance/src/index/scalar/zonemap.rs:80-86 \u2014 before extracting anything, compare \u0060rust/lance/src/index/scalar/bitmap.rs\u0060 and \u0060rust/lance/src/index/scalar/label_list.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 58 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":"rust/lance/src/index/scalar/bitmap.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"afd164167b35c0b57d70bd562443fa461402eda4e7ead3fce0144e67d8908e56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): java/lance-jni/src/mem_wal.rs:772-780 | java/lance-jni/src/mem_wal.rs:895-901 | python/src/mem_wal.rs:726-733 | python/src/mem_wal.rs:799-805 \u2014 before extracting anything, compare \u0060java/lance-jni/src/mem_wal.rs\u0060 and \u0060python/src/mem_wal.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 51 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":"java/lance-jni/src/mem_wal.rs"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddbbe0c0083c5564def2a265847e28fbd56821bc92298e5dd932686b7e2e5313"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20137 lines \u00D7 4): rust/lance/src/io/exec/fts.rs:3973-3978 | rust/lance/src/io/exec/knn.rs:1059-1064 | rust/lance/src/io/exec/rowids.rs:221-227 | rust/lance/src/io/exec/scalar_index.rs:626-632 \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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":3973}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7d859c81549c964921bcaffba9fe1791ba238b3c02586c04774afcde5d81629"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): rust/lance-linalg/src/simd/f32.rs:445-451 | rust/lance-linalg/src/simd/f32.rs:954-960 | rust/lance-linalg/src/simd/f64.rs:295-301 | rust/lance-linalg/src/simd/f64.rs:747-753 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/simd/f32.rs\u0060 and \u0060rust/lance-linalg/src/simd/f64.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 68 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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4889425d11a5940ee64d77c86d43f5a1074878ee8b0fe01a62e8ec0ca209257"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): rust/lance-linalg/src/simd/f32.rs:753-759 | rust/lance-linalg/src/simd/f32.rs:775-781 | rust/lance-linalg/src/simd/f64.rs:599-605 | rust/lance-linalg/src/simd/f64.rs:622-628 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/simd/f32.rs\u0060 and \u0060rust/lance-linalg/src/simd/f64.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 68 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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":753}}}],"partialFingerprints":{"codehealthFindingId/v1":"926dc0c9c1a24333739b28d5216ff3cb312e09394f88e02857315e9da69d93b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs:460-466 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/btree.rs:351-359 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs:345-353 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/btree.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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d51e3fd3921e40d594f58a8c771f5615d0e0d9835b866ecfbcab280304ea454"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): java/lance-jni/src/namespace.rs:3487-3493 | java/lance-jni/src/namespace.rs:3616-3622 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/namespace.rs"},"region":{"startLine":3487}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd68e16e9e76f855f4246ef518959011caad330d3c7cfe8672762c0dd1542922"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): java/lance-jni/src/namespace.rs:3524-3530 | java/lance-jni/src/namespace.rs:3653-3659 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/namespace.rs"},"region":{"startLine":3524}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c88f188ca34b078c55b6c51f2e2145199095674baeaec44d938cd2fda7cde9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): java/lance-jni/src/namespace.rs:3570-3576 | java/lance-jni/src/namespace.rs:3699-3705 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/namespace.rs"},"region":{"startLine":3570}}}],"partialFingerprints":{"codehealthFindingId/v1":"51e67be4847e7070b52e99eac1c06494e1dd010663d1e4abe68e7e3e5ea5bdbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): python/src/dataset/optimize.rs:510-516 | python/src/dataset/optimize.rs:544-550 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset/optimize.rs"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"918c2b63735197befed88c789c71062896e04d429d1505001245c634cac90fae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): python/src/dataset.rs:1668-1674 | python/src/dataset.rs:1695-1701 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":1668}}}],"partialFingerprints":{"codehealthFindingId/v1":"5249f672ddd9277e28d0ec4cef8b61ca60ca58d9273fef6ceb6d2c16de19669d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): python/src/dataset.rs:3176-3182 | python/src/dataset.rs:3242-3248 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":3176}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d831f82b710a50f75413ca15b0d579c015cb29581e434884075492126e64986"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): python/src/dataset.rs:3393-3399 | python/src/dataset.rs:3429-3435 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":3393}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd8f93adfdffc792dcc0dc276243b7eb6f188cdabff244c6dcd50859ade7bbe9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): python/src/dataset.rs:3612-3618 | python/src/dataset.rs:3640-3646 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":3612}}}],"partialFingerprints":{"codehealthFindingId/v1":"78e6961b0957304d528cfa0761b801390bcfef466bceb2eb7f73928450416c9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): python/src/mem_wal.rs:512-518 | python/src/mem_wal.rs:533-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":"python/src/mem_wal.rs"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"d800d98d2dda22cdbcef111848f15f34777179fee9f6fffd70b218039d1ea1dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20137 lines \u00D7 2): rust/lance-file/src/concat.rs:473-479 | rust/lance/src/dataset/blob.rs:284-289 \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":"rust/lance-file/src/concat.rs"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1312d3f798cdd4e9b223d20d92a21dea663ff066d1242b3f19b1877f2323a87"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/vector_search.rs:496-503 | rust/lance/src/dataset/mem_wal/scanner/vector_search.rs:581-587 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/scanner/vector_search.rs"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"58a16f11e35a7a39a6e54e3da9b0d0197ce61cb60cd66012f647585f09d18569"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance/src/dataset/write/merge_insert.rs:2552-2558 | rust/lance/src/dataset/write/merge_insert.rs:2573-2579 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":2552}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8aa74a8b03d4b51b08fe8322d601d5aa9defdff9f46826240825ad6f03fdbd2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance/src/index/scalar/btree.rs:161-167 | rust/lance/src/index/scalar/ngram.rs:144-150 \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":"rust/lance/src/index/scalar/btree.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fba1ba949bf7e52ad5b7456240273585d3f682e5600e867668503e8346695c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-encoding/src/array_encoding/logical/list.rs:1312-1318 | rust/lance-encoding/src/array_encoding/logical/list.rs:1321-1327 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/logical/list.rs"},"region":{"startLine":1312}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e7a55096fc7edc31857aa55b7f06469b7347d4cf617ab42100403b7c40cb98c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20137 lines \u00D7 2): rust/lance-encoding/src/encodings/physical/block.rs:519-524 | rust/lance-encoding/src/encodings/physical/block.rs:538-544 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/block.rs"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"a87bb06a4145822255e9236acdd204ad8e7f20b53272a4f9d8178f913808c7f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-file/src/versions/v1/encoding/binary.rs:74-80 | rust/lance-file/src/versions/v1/writer/mod.rs:566-572 \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":"rust/lance-file/src/versions/v1/encoding/binary.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"e115eb3ec313c4de6a6231ddc703ebd3c24f6b72b511499ac65224b8369ed0a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:904-910 | rust/lance-file/src/writer/structural.rs:877-884 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab37d3cb878383893139c8292c350109c93054c6ecb1bfc9e0c238b69fc7e3cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/bloomfilter.rs:628-634 | rust/lance-index/src/scalar/zonemap.rs:1009-1015 \u2014 before extracting anything, compare \u0060rust/lance-index/src/scalar/bloomfilter.rs\u0060 and \u0060rust/lance-index/src/scalar/zonemap.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 61 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":"rust/lance-index/src/scalar/bloomfilter.rs"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"045769893233cb5f5ef06c048af153bb4ea1186e187c1e7cf252df524eecc632"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/btree.rs:1145-1151 | rust/lance-index/src/scalar/btree.rs:1165-1171 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":1145}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ad4bb2cfb7cfb70572c1657d30cd2dd283bf4565c76006dcb5abcadfeef74af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/fmindex.rs:815-821 | rust/lance-index/src/scalar/fmindex.rs:835-841 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/fmindex.rs"},"region":{"startLine":815}}}],"partialFingerprints":{"codehealthFindingId/v1":"16e4532b840e16d07de297d8d2e643727420553600b93fafca81998d35963661"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/flat_search.rs:62-68 | rust/lance-index/src/scalar/inverted/index/flat_search.rs:88-94 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/flat_search.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc90ca05d9c52b5918e51dd7542df071cf565820e61971c0e67689596d6e76b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/inverted.rs:268-274 | rust/lance-index/src/scalar/inverted.rs:346-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":"rust/lance-index/src/scalar/inverted.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cdd4715a547e518deac11f3188ff4b6ff198538af03adf2d2f823ad4cf89671"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/ngram/ngram_regex.rs:396-404 | rust/lance-index/src/scalar/ngram/ngram_regex.rs:406-412 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/ngram/ngram_regex.rs"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfc045c7287f1bfefedcbe202bab9d83f1bf13245ab5655dbb85992724199ccc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/ngram.rs:1617-1625 | rust/lance-index/src/scalar/ngram.rs:1734-1740 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/ngram.rs"},"region":{"startLine":1617}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ea971a5a9ac65327784f2c38d852b03a4e38d5ea7ef0bbf75e1bdb3fc1fec5f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/rtree/sort/hilbert_sort.rs:218-224 | rust/lance-index/src/scalar/rtree/sort/hilbert_sort.rs:227-233 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/rtree/sort/hilbert_sort.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a4513748e1cd911314a1bd517acf53a09410f2b26fcbfa347632e9a8a22ceab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/rtree.rs:328-334 | rust/lance-index/src/scalar/rtree.rs:352-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":"rust/lance-index/src/scalar/rtree.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e06c689be350c45e0a3b8e79c228642055ef509f3315901e88cfefa8cf45c4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20137 lines \u00D7 2): rust/lance-index/src/scalar/rtree.rs:662-667 | rust/lance-index/src/scalar/rtree.rs:822-828 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/rtree.rs"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"52e8c942f7cc3a89ce40b4c63dc6e34c04eb3c6a28e60db123d7c15ed01fda72"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/vector/bq/dist_table_quant.rs:73-82 | rust/lance-index/src/vector/bq/dist_table_quant.rs:110-116 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/dist_table_quant.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef5e3319f256f1496b99cdf843e79a3cddd804853df94242016631ef73f21524"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/vector/bq/pairwise.rs:923-929 | rust/lance-index/src/vector/bq/pairwise.rs:933-939 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/pairwise.rs"},"region":{"startLine":923}}}],"partialFingerprints":{"codehealthFindingId/v1":"488fb296b9464b0fb9c506a3cf9d7958c85326eb6f0e1a5e003a76003005f6ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/vector/distributed/index_merger.rs:76-82 | rust/lance-index/src/vector/distributed/index_merger.rs:108-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":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"96854c85469a3e758579cb2515a93c5f3520eedba6303d41a68bac6ac194caca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/vector/kmeans.rs:1707-1713 | rust/lance-index/src/vector/kmeans.rs:1809-1815 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/kmeans.rs"},"region":{"startLine":1707}}}],"partialFingerprints":{"codehealthFindingId/v1":"db790745f18b7e63aed1592219d0486c8ca255c47e1173c0b598c11014d539b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/vector/pq/storage.rs:317-324 | rust/lance-index/src/vector/pq/storage.rs:654-660 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/pq/storage.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c92fcd2ff0ea45350cec8b4fcd4d41576631875e96b0b9fb90c3db88fa374ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-linalg/src/distance/dot.rs:609-615 | rust/lance-linalg/src/distance/norm_l2.rs:268-274 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/dot.rs\u0060 and \u0060rust/lance-linalg/src/distance/norm_l2.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 47 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":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f5f90c4d4d92211f20430eb2c81d1b286f9960afac76ebf96daf138d2a06df6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-linalg/src/distance/hamming.rs:646-652 | rust/lance-linalg/src/distance/hamming.rs:728-734 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/hamming.rs"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe152522cfbda589e6db7c70cb53c428514ce80458e4d5b1957fbc7badddf0b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-linalg/src/distance/l2.rs:415-421 | rust/lance-linalg/src/distance/l2.rs:440-446 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/l2.rs"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd11b644ea91dcde0df13079d8fe43946b165d5e094a102267c46981902fba7e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-linalg/src/simd/dist_table.rs:102-108 | rust/lance-linalg/src/simd/dist_table.rs:238-244 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"1775c3e603b22f4fe572174679aee58fac98d0706826c52ae3b2fc0477ae131b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-linalg/src/simd/dist_table.rs:204-210 | rust/lance-linalg/src/simd/dist_table.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":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"87a6c626f7df5861fa962b15c66868b4b6a0a5eaaa50f4f40d399e0cf2c1f3b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:102-108 | rust/lance-linalg/src/simd/f32.rs:120-126 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"2df2d7484052ecf6e5473dec799a2b64af82fdf4ae6d4fd339d16e44db07203b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-namespace-impls/src/dir/manifest.rs:1629-1635 | rust/lance-namespace-impls/src/dir/manifest.rs:1662-1668 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":1629}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8adf24c27d6b7d766f639f5034edf899a69292d4d74494d70ac9cc37dae638e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-namespace-impls/src/dir/manifest.rs:2189-2195 | rust/lance-namespace-impls/src/dir/manifest.rs:2445-2451 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2189}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8c5fb86da49341f321001350f6a34be5c8554a4716c3db34fadf4e3a0d9a861"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-select/src/mask.rs:530-536 | rust/lance-select/src/mask.rs:1043-1049 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-select/src/mask.rs"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fe8f652f66f962fad6a1fab5ece2f4ba2f8aa4f48a629fc8741372a084a4703"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-table/src/rowids/version.rs:688-694 | rust/lance-table/src/rowids/version.rs:730-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":"rust/lance-table/src/rowids/version.rs"},"region":{"startLine":688}}}],"partialFingerprints":{"codehealthFindingId/v1":"6741d050b991dba0ba8d6b52c2b04761b96075729001cc592f120e850b0932b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20136 lines \u00D7 6): rust/lance-linalg/src/distance/cosine.rs:1171-1174 | rust/lance-linalg/src/distance/cosine.rs:1258-1263 | rust/lance-linalg/src/distance/dot.rs:686-691 | rust/lance-linalg/src/distance/dot.rs:709-714 | rust/lance-linalg/src/distance/l2.rs:744-749 | rust/lance-linalg/src/distance/l2.rs:771-776 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/cosine.rs\u0060 and \u0060rust/lance-linalg/src/distance/dot.rs\u0060 as WHOLE FILES: this scan already matched 7 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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1171}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cd426749ed97f39df1af6a455031fa8b831bfde5cb3667f0351103c456783d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): rust/lance-namespace-impls/src/dir/manifest.rs:2151-2157 | rust/lance-namespace-impls/src/dir/manifest.rs:2409-2414 | rust/lance-namespace-impls/src/dir/manifest.rs:2738-2743 | rust/lance-namespace-impls/src/dir/manifest.rs:3240-3245 \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":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2151}}}],"partialFingerprints":{"codehealthFindingId/v1":"460dd263d0ecad7faec01e8b8f486959380dae3697fd4e43a43c6038c057a6e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): rust/lance/src/io/commit/conflict_resolver.rs:488-493 | rust/lance/src/io/commit/conflict_resolver.rs:736-741 | rust/lance/src/io/commit/conflict_resolver.rs:1348-1353 \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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a29ebd02e7a83e3ea418758c711669990b1a8cc93070eb84edc811b953f783a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): rust/lance/src/io/exec/fts.rs:4421-4427 | rust/lance/src/io/exec/fts.rs:4797-4803 | rust/lance/src/io/exec/rowids.rs:222-227 \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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":4421}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd6a2ea733eecfc68d2324dc96c666e49586fe7f7b9fc36b7da3d876f9e8446f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): rust/lance-index/src/scalar/rtree.rs:661-666 | rust/lance-index/src/scalar/rtree.rs:821-826 | rust/lance-index/src/scalar/rtree.rs:1200-1205 \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":"rust/lance-index/src/scalar/rtree.rs"},"region":{"startLine":661}}}],"partialFingerprints":{"codehealthFindingId/v1":"43c7a6c814431cb30f9b84f894336cf19ee904608fcec476633185c0a168e9cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): rust/lance-io/src/lib.rs:232-237 | rust/lance-io/src/lib.rs:287-292 | rust/lance-table/src/rowids.rs:1098-1103 \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":"rust/lance-io/src/lib.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"40b83621876a5e5f8042416cb2d32361e8e96d210b8fd702c510074fd6f335cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20136 lines \u00D7 4): rust/lance-linalg/src/distance/cosine.rs:1194-1197 | rust/lance-linalg/src/distance/cosine.rs:1215-1220 | rust/lance-linalg/src/distance/dot.rs:663-668 | rust/lance-linalg/src/distance/l2.rs:717-722 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/cosine.rs\u0060 and \u0060rust/lance-linalg/src/distance/dot.rs\u0060 as WHOLE FILES: this scan already matched 7 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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1194}}}],"partialFingerprints":{"codehealthFindingId/v1":"a08d15b5ca85fd973e68af83d276846ebbab790671ea587c6e40d5a9a1d47352"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): rust/lance-linalg/src/distance/cosine_u8.rs:92-97 | rust/lance-linalg/src/distance/dot_u8.rs:56-61 | rust/lance-linalg/src/distance/l2_u8.rs:62-67 \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":"rust/lance-linalg/src/distance/cosine_u8.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"764a76e18a6ea3a9fe3f86bef0ba407c992876d3cdf19f7b6c21f51bd8967781"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20136 lines \u00D7 4): rust/lance-linalg/src/distance/cosine.rs:947-949 | rust/lance-linalg/src/distance/dot.rs:603-608 | rust/lance-linalg/src/distance/l2.rs:648-653 | rust/lance-linalg/src/distance/norm_l2.rs:263-268 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/cosine.rs\u0060 and \u0060rust/lance-linalg/src/distance/dot.rs\u0060 as WHOLE FILES: this scan already matched 7 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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":947}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e2a8042583dab039f57b4ada43ce4f04df58a93f8d175221919e7436fbf9b9f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20136 lines \u00D7 4): rust/lance-linalg/src/distance/cosine.rs:956-958 | rust/lance-linalg/src/distance/dot.rs:610-615 | rust/lance-linalg/src/distance/l2.rs:656-661 | rust/lance-linalg/src/distance/norm_l2.rs:269-274 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/cosine.rs\u0060 and \u0060rust/lance-linalg/src/distance/dot.rs\u0060 as WHOLE FILES: this scan already matched 7 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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":956}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd494a5967a1c365259fd9c4e5c6a019080017c9c5b1b2b777a08e48c4f1900"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): java/lance-jni/src/namespace.rs:3509-3514 | java/lance-jni/src/namespace.rs:3638-3643 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/namespace.rs"},"region":{"startLine":3509}}}],"partialFingerprints":{"codehealthFindingId/v1":"8455e05e56a54753bfaa6082928efff0c7a78724c3e3f6cd6084ae22d9c6bed6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): java/lance-jni/src/utils.rs:230-236 | java/lance-jni/src/utils.rs:244-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":"java/lance-jni/src/utils.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8de20cd295006bb175950174ac33e7b0f31273df72f8136ed410b46bf927e04"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): java/lance-jni/src/utils.rs:241-246 | java/lance-jni/src/utils.rs:254-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":"java/lance-jni/src/utils.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"c15eb65819c2fda7e9820818e0876e97c7ffa9d1a018652e38df19ebcfacce70"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/utils.rs:86-91 | python/src/utils.rs:117-122 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/utils.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"f56a4b31d44ffb311b630401f26b874b7e5abf35fb83eaff47b7cb6c0ce1fae6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs:356-361 | rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs:394-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":"rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"4744f6c79b25220727de25ff5b82099d7e3351f8d1221a93ae7e38054a5a9f66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance/src/dataset/fragment.rs:1365-1370 | rust/lance/src/dataset/fragment.rs:1411-1416 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":1365}}}],"partialFingerprints":{"codehealthFindingId/v1":"843030da2fbc807806ccbc4f18b3d84bfbfd0b0625690db07c82316d33e5d3b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-core/src/levenshtein.rs:18-23 | rust/lance/src/dataset/mem_wal/index/fts.rs:570-575 \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":"rust/lance-core/src/levenshtein.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"f32aeac89ff9c89cf2a30adc43bea4fdf8672e0aef6ec3725cd5dd7ced1b5f0c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/collector.rs:198-203 | rust/lance/src/dataset/mem_wal/scanner/collector.rs:226-231 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/scanner/collector.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d657ae0116ff3a246fe31212a1ffb86918a906399053e530d9239aeb8966bf5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/fts_search.rs:1266-1271 | rust/lance/src/dataset/mem_wal/scanner/vector_search.rs:614-619 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/scanner/fts_search.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/scanner/vector_search.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 57 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":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":1266}}}],"partialFingerprints":{"codehealthFindingId/v1":"776df9931ee976fecaf9168bf5bd9c4aecfea910819c569861b3335ff7a193c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/fts_search.rs:1351-1356 | rust/lance/src/dataset/mem_wal/scanner/projection.rs:179-184 \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":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":1351}}}],"partialFingerprints":{"codehealthFindingId/v1":"b57f7713dcf3510f13dd76f6eac2f01ac89fc53395079ff7e13ddda82cabedd2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:1353-1361 | rust/lance/src/dataset/scanner.rs:1363-1368 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":1353}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ed6ac3459e5b681d7ef3adcb042cf1a24b1ed84dd638988497008a7a2d38ea2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:1404-1409 | rust/lance/src/io/exec/fts.rs:4281-4286 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":1404}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f790064bff32b55a3f8425e9247cc4382d7694a0989dac7f8f2f00faf2d71e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-encoding/src/decoder.rs:1695-1700 | rust/lance-encoding/src/decoder.rs:2141-2146 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":1695}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cfe84b70e318aebb8b1405ff9041d2220c1da50c581f73aa0cd5832c5f50523"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive.rs:6137-6142 | rust/lance-encoding/src/encodings/logical/primitive.rs:6147-6152 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6137}}}],"partialFingerprints":{"codehealthFindingId/v1":"32cf8b24ce7b4308bcb5ef71f8cc8d8af01a3b4dd2b1dfe1597f87a7558c3c0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive.rs:7030-7035 | rust/lance-encoding/src/encodings/logical/primitive.rs:7042-7047 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":7030}}}],"partialFingerprints":{"codehealthFindingId/v1":"4585d0b00eec20430e8c8afc426fcd90532226489a9ec5d6829150402765a86f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-encoding/src/statistics.rs:286-291 | rust/lance-encoding/src/statistics.rs:296-301 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/statistics.rs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f2af8aaea3955ee002de8aef685391967330e8a9e3a2a9885602aea165972dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-file/src/reader.rs:1457-1462 | rust/lance-file/src/reader.rs:1861-1866 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/reader.rs"},"region":{"startLine":1457}}}],"partialFingerprints":{"codehealthFindingId/v1":"96b46f764b1a262328f654db0c8560cebb8a0197ef5a1e440f56e943fd11a090"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-file/src/version.rs:208-213 | rust/lance-file/src/version.rs:234-239 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/version.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"c39edbc33ad04cc534b34a228757c659e9de7b27a42a985f03ce20ef5137c34c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:660-665 | rust/lance-file/src/writer/structural.rs:294-299 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":660}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b5c9269cfd5cf6cc86a7d4683363e04b240b6f751ecc671988d32cf553e662d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/scalar/fmindex.rs:384-389 | rust/lance-index/src/scalar/fmindex.rs:890-895 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/fmindex.rs"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0c1c04b38ca8b08c59b8b3972b9e8fefb34b3aade98e73903937b100c518031"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/scalar/inverted/cross_column.rs:222-227 | rust/lance-index/src/scalar/inverted/wand.rs:2138-2143 \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":"rust/lance-index/src/scalar/inverted/cross_column.rs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfb9c2598c447a2ce13137943bc63bff919c4b8ef2faab255fbbec8519115d27"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/inverted_index.rs:309-314 | rust/lance-index/src/scalar/inverted/index/inverted_index.rs:378-383 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/inverted_index.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"7425529445d7b8c1ffff0ba64f4483df5e836d41b6fe3aec3be77ac034acb0db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/partition.rs:332-337 | rust/lance-index/src/scalar/inverted/index/partition.rs:443-448 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/partition.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbd448279c4d06c2cc4aafb09f65fce464e9e5ffa1dab89684ea8f5941ff2bb0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand.rs:4169-4174 | rust/lance-index/src/scalar/inverted/wand.rs:4204-4209 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":4169}}}],"partialFingerprints":{"codehealthFindingId/v1":"246a0e498482f6b3bf25f0754f75f86487833afe2eaab04870c0f3234b2b29b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/scalar/json.rs:568-573 | rust/lance-index/src/scalar/json.rs:704-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":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"b12f2a91007c99782f00803c4db31f32462ce060a84cca58eda3496ab8cc4f1d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/scalar/label_list.rs:419-424 | rust/lance-index/src/scalar/label_list.rs:426-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":"rust/lance-index/src/scalar/label_list.rs"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"813535246f5983156e5b2669f19c1a89fd3829523b8a3a5fe13266535e8cdbda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/scalar/rtree/sort/hilbert_sort.rs:212-217 | rust/lance-index/src/scalar/rtree/sort/hilbert_sort.rs:221-226 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/rtree/sort/hilbert_sort.rs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"e50a5f94492c23ae82d532537ac593189920ffa3c03f84d797c5b48377de8c5f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/vector/bq/dist_table_quant.rs:401-406 | rust/lance-index/src/vector/bq/dist_table_quant.rs:488-493 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/dist_table_quant.rs"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"7afa9f936ca2e3abfad31553b9d6944c366fbd06bda7133584c1a7114c168c15"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/vector/bq/dist_table_quant.rs:436-441 | rust/lance-index/src/vector/bq/dist_table_quant.rs:529-534 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/dist_table_quant.rs"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"d52ab9443864e8aa0ac0242efac68f9892de86d4625c8d3dc0ebb8beb37a5213"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/vector/bq/storage.rs:2091-2096 | rust/lance-index/src/vector/storage.rs:192-198 \u2014 before extracting anything, compare \u0060rust/lance-index/src/vector/bq/storage.rs\u0060 and \u0060rust/lance-index/src/vector/storage.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 46 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":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":2091}}}],"partialFingerprints":{"codehealthFindingId/v1":"634187b93bdf1067b0f3eed348e69d8a34c182dbd9bb52d8d0f21a80bbadc969"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/vector/kmeans.rs:367-372 | rust/lance-index/src/vector/kmeans.rs:932-937 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/kmeans.rs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9300f835ba1d452c82091aa70662210d52126b219f5dd43fe4ca9cd0c691f47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/vector/quantizer.rs:380-385 | rust/lance-index/src/vector/sq/storage.rs:239-244 \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":"rust/lance-index/src/vector/quantizer.rs"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"587e7ab3bd1bd37add97e4112cb0a175fabc3efd1644534a1760ea5ddefa8531"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/vector/bq/ex_dot.rs:463-468 | rust/lance-index/src/vector/bq/ex_dot.rs:529-534 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/ex_dot.rs"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"4643fc87d0831cb90c12418e2420f14aad294e170983844718efea89b120790d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/vector/bq/ex_dot.rs:752-757 | rust/lance-index/src/vector/bq/ex_dot.rs:815-820 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/ex_dot.rs"},"region":{"startLine":752}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e9cd79fe48d499e0e58ceea39e0f5b29ae25714f5a19c9873298e8d61ae030f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/distance/dot.rs:384-389 | rust/lance-linalg/src/distance/dot.rs:408-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":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"393f8b97dd9b7773bf27699bb99a3529a1ffba9e4606f8dddd1ded15c9678944"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/distance/dot.rs:581-586 | rust/lance-linalg/src/distance/l2.rs:622-627 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/dot.rs\u0060 and \u0060rust/lance-linalg/src/distance/l2.rs\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 86 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":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"55659d0c0a8a416c2eaf5ab4a2ed745838945b04585fe116d22fb9f59293a82c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/distance/dot.rs:633-638 | rust/lance-linalg/src/distance/l2.rs:683-688 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/dot.rs\u0060 and \u0060rust/lance-linalg/src/distance/l2.rs\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 86 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":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b203ffdda828ca30b54df77cf9bfc6eba097a2ad274fcef9b80833a9d0d0e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/distance/hamming.rs:607-612 | rust/lance-linalg/src/distance/hamming.rs:682-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":"rust/lance-linalg/src/distance/hamming.rs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"563467e4e4fad9bb79769f474ced1f72241d250a05ed1b61bd1f649761cfaab1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/distance/norm_l2.rs:325-330 | rust/lance-linalg/src/distance/norm_l2.rs:341-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":"rust/lance-linalg/src/distance/norm_l2.rs"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"112cb52fd6e2ce80b82d24d603972a900636867a55f6f399dfb2b7e2f2c3c7a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/simd/dist_table.rs:577-582 | rust/lance-linalg/src/simd/dist_table.rs:586-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":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"a01bccfbf095191bb80ce0418f0e6242db737faaf83abfca7cb92ef3bbe54a60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:287-292 | rust/lance-linalg/src/simd/f64.rs:180-185 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/simd/f32.rs\u0060 and \u0060rust/lance-linalg/src/simd/f64.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 68 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":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f00a7fd78c154804def1502a98746bf6a16fd965aef9cc4c900ec7806145971"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:357-362 | rust/lance-linalg/src/simd/f32.rs:848-853 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"ede76b17e77944b79c08c03107f6c34cee538974136ac3e068e0f2526980db2a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:490-495 | rust/lance-linalg/src/simd/f32.rs:1004-1009 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb7ba8216471bb5782ba7f1159e4d8b60dd0e394063ba69a45fedc1839b73098"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:542-547 | rust/lance-linalg/src/simd/f32.rs:1091-1096 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddcaf8e4622b5f0bac0b6451cb2ac5256a06c58a63b503e7362c777dfaf26e5f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/simd/f64.rs:340-345 | rust/lance-linalg/src/simd/f64.rs:795-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":"rust/lance-linalg/src/simd/f64.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"a52abb20beba776e94523c7f758de5cc5d0cbbdd015f3654ec3eedd6378bc031"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/simd/f64.rs:392-397 | rust/lance-linalg/src/simd/f64.rs:878-883 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f64.rs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"0017d5fa5328c32bf9e3686d7b6f815576984a970b23e1d16f87abac299a6d08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-namespace-impls/src/rest.rs:969-974 | rust/lance-namespace-impls/src/rest.rs:1024-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":"rust/lance-namespace-impls/src/rest.rs"},"region":{"startLine":969}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e176a31d1a4451cebf874c0f1562df2e314b83f144a329785dcd69b8a62cf5b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-table/src/io/commit.rs:930-935 | rust/lance-table/src/io/commit/external_manifest.rs:724-729 \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":"rust/lance-table/src/io/commit.rs"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"011357a19aa9e8b3caafb6b1b50ad9232a669c68e087065f8d5cc6cb8b9bad2f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): rust/lance-index/src/vector/bq/storage.rs:2070-2074 | rust/lance-index/src/vector/bq/storage.rs:2106-2110 | rust/lance-index/src/vector/storage.rs:205-209 | rust/lance-index/src/vector/storage.rs:238-242 \u2014 before extracting anything, compare \u0060rust/lance-index/src/vector/bq/storage.rs\u0060 and \u0060rust/lance-index/src/vector/storage.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 46 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":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":2070}}}],"partialFingerprints":{"codehealthFindingId/v1":"20e1b60ea3419be1bd8f0cdb9edb4a006f7c66944c3105e620bb99c8d17c72c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): rust/lance/src/io/exec/fts.rs:2985-2989 | rust/lance/src/io/exec/fts.rs:3482-3486 | rust/lance/src/io/exec/fts.rs:5161-5165 \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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2985}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a6b0f08729070b5ca98844fe741dd0df02ab8eb86fe34e0b5500c1b6a5ca976"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): rust/lance-datafusion/src/udf/json.rs:288-292 | rust/lance-datafusion/src/udf/json.rs:517-521 | rust/lance-datafusion/src/udf/json.rs:570-574 \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":"rust/lance-datafusion/src/udf/json.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bd67fa7a38f430f8ddf52040f11c8161a96fad1e78581311413a3599001cbb0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): rust/lance-encoding/src/encodings/logical/list.rs:54-59 | rust/lance-encoding/src/encodings/logical/list.rs:66-70 | rust/lance-encoding/src/encodings/logical/map.rs:57-61 \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":"rust/lance-encoding/src/encodings/logical/list.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"07bde9cd132126d8dd8d946b2bddc306cd1214f2784118a054f896dd3de50a53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): rust/lance-file/src/versions/v2_1/writer.rs:82-86 | rust/lance-file/src/versions/v2_2/writer.rs:82-86 | rust/lance-file/src/versions/v2_3/writer.rs:82-86 \u2014 \u0060rust/lance-file/src/versions/v2_1/writer.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/writer.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 62 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":"rust/lance-file/src/versions/v2_1/writer.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3e1e1daaec536442afc84bb908b76b8a391e77a7a9d02a795eaa5577b1d58d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): rust/lance-index/src/scalar/btree.rs:220-224 | rust/lance-index/src/scalar/btree.rs:234-238 | rust/lance-index/src/scalar/btree.rs:248-252 \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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c638cd62a30ed07b8d0982d2106fb018ad06490db46c8d57661b1c884148eb3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): rust/lance-index/src/scalar/json.rs:722-726 | rust/lance-index/src/scalar/json.rs:743-747 | rust/lance-index/src/scalar/json.rs:764-768 \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":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":722}}}],"partialFingerprints":{"codehealthFindingId/v1":"52c1192f3f754661ada3209acef677e01f0b54daa6aaab6f90522b4a1dff894c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): rust/lance-linalg/src/distance/cosine.rs:964-968 | rust/lance-linalg/src/distance/cosine.rs:994-998 | rust/lance-linalg/src/distance/cosine.rs:1036-1040 \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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":964}}}],"partialFingerprints":{"codehealthFindingId/v1":"11665b409aed55f5baa320aa5dc47d58b1a99974a94ccebd4007139e21f5f6d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): rust/lance-linalg/src/distance/cosine_u8.rs:144-148 | rust/lance-linalg/src/distance/dot_u8.rs:103-107 | rust/lance-linalg/src/distance/l2_u8.rs:102-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 all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/cosine_u8.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"4007d5f55d9678c17aa71aa0f2fa51c10e62c2c6a2169f21aa803adc255706e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): rust/lance-linalg/src/simd/dist_table.rs:210-214 | rust/lance-linalg/src/simd/dist_table.rs:438-442 | rust/lance-linalg/src/simd/dist_table.rs:476-480 \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":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"aff1b6f510225fa6d0fa7ded112fea3ea6e9a6dca809036aafb3cb74d4ebea1f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): java/lance-jni/src/blocking_blob.rs:61-65 | java/lance-jni/src/blocking_blob.rs:116-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":"java/lance-jni/src/blocking_blob.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"08c6c6aa587c40c63114bff8ced7b41dadacb7c7b18d0871e9b60db508428244"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): java/lance-jni/src/blocking_dataset.rs:2291-2295 | java/lance-jni/src/blocking_dataset.rs:3278-3283 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":2291}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff3ed4a75a05d15af42144c0d899d51682995e3a876044dd55cf84e4a58f19a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): java/lance-jni/src/blocking_dataset.rs:3028-3032 | java/lance-jni/src/blocking_dataset.rs:3202-3206 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":3028}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d2a9f1a303d806328f8b271523f941ed7f64d37004e52808a9e12c7eab8374a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): python/src/dataset.rs:487-492 | python/src/dataset.rs:538-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":"python/src/dataset.rs"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dd788082e8bb8cc2cc27028327e4bf4fe57dd577fda19c0ddc68bfa39970ca2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): python/src/dataset.rs:1677-1681 | python/src/dataset.rs:1704-1709 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":1677}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cf13347e4575c7d75e1fa89b5b7a8f0f93d03c0c1989266df34e70126a781e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): python/src/debug.rs:18-22 | python/src/debug.rs:28-32 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/debug.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d43581f4c7869baa46c575c331f9c11ab1c13644fbc604f4a0fdd0bcbd385e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): python/src/namespace.rs:313-317 | python/src/namespace.rs:1013-1017 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"900aaefc433c36cd30abc07fa3079469ecff0978b20dd7f907c1a511cefedb84"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): python/src/namespace.rs:449-453 | python/src/namespace.rs:1149-1153 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"d95c78a09cdceb7ad4a5f40cfeb48e9fd1a3d1a357c80deee6acb0b33a8c8fab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs:351-355 | rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs:389-393 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b2ce20d3a06585ed122fed1e5b1f77dc3a364dfc0d9ca1c80fabfd19e7780c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance/src/dataset/blob.rs:4499-4503 | rust/lance/src/dataset/blob.rs:4520-4524 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":4499}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7c7c6619e5d698234881563814e91386c02abc5bf05cf1bd5b269f377fb48f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/builder.rs:862-866 | rust/lance/src/dataset/mem_wal/scanner/exec/pk_block_filter.rs:197-201 \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":"rust/lance/src/dataset/mem_wal/scanner/builder.rs"},"region":{"startLine":862}}}],"partialFingerprints":{"codehealthFindingId/v1":"448ccb173134a11edbc2df6769944acdf81a217e5178f03df2f322ac9a866cb7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:4162-4167 | rust/lance/src/dataset/scanner.rs:5645-5649 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":4162}}}],"partialFingerprints":{"codehealthFindingId/v1":"16d8b59f0765abb562ea1f9319fc02eaf778e31712ee58cd3b8b9e3c85c8919c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance/src/dataset/write/merge_insert/exec/delete.rs:284-288 | rust/lance/src/dataset/write/merge_insert/exec/write.rs:976-980 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/write/merge_insert/exec/delete.rs\u0060 and \u0060rust/lance/src/dataset/write/merge_insert/exec/write.rs\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"rust/lance/src/dataset/write/merge_insert/exec/delete.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"808667649c72235ffb40abbc6383e25774fea73469c332ffd817e0a30bd94f51"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance/src/dataset.rs:808-812 | rust/lance/src/dataset.rs:839-843 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset.rs"},"region":{"startLine":808}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac9ed75b8450e073b9819e63e89c925352b4a6e66ceae50266380ad511be3610"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:3197-3204 | rust/lance/src/index/vector/ivf.rs:4826-4830 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":3197}}}],"partialFingerprints":{"codehealthFindingId/v1":"edce01fbf69fb578492d2c67cf94f8a528a7203666d10c226e9e54cd5ffd370f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20135 lines \u00D7 3): rust/lance/src/io/exec/fts.rs:1136-1139 | rust/lance/src/io/exec/fts.rs:1433-1437 | rust/lance/src/io/exec/fts.rs:1987-1991 \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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":1136}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6617a28a3df27a9c3eeaa7074db66f273ca4748cd85b024b7d705b624720ad8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-datafusion/src/expr.rs:412-416 | rust/lance-datafusion/src/expr.rs:425-429 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/expr.rs"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"12505963c727d6e467f084824ac31d786d7a03296b248c5994be0ddc4a441e93"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-datafusion/src/expr.rs:496-500 | rust/lance-datafusion/src/expr.rs:509-513 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/expr.rs"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"512c630b5722b4bf61d432776b67f37d98c9946df4af333328e974e5ba3e4be7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-datagen/src/generator.rs:2753-2757 | rust/lance-datagen/src/generator.rs:2781-2785 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datagen/src/generator.rs"},"region":{"startLine":2753}}}],"partialFingerprints":{"codehealthFindingId/v1":"00a5f09af51ff88007e4b0be4415ff731dfa95bf71d9392dfeae29b899f6c8a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive.rs:7000-7004 | rust/lance-encoding/src/encodings/logical/primitive.rs:7010-7014 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":7000}}}],"partialFingerprints":{"codehealthFindingId/v1":"63c1114dfb467f2d61bacd3ce364f286f62c4f2d8bdb053daaab2a9e56db7726"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-index/src/scalar/fmindex.rs:1096-1100 | rust/lance-index/src/scalar/fmindex.rs:2128-2132 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/fmindex.rs"},"region":{"startLine":1096}}}],"partialFingerprints":{"codehealthFindingId/v1":"9854c5daee06420141038f9b9a4ff293ca29e36fa7b19f9646f7f0202e081fe8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-index/src/scalar/inverted/wand.rs:4294-4298 | rust/lance-index/src/scalar/inverted/wand.rs:4322-4326 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":4294}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e323486ca889edb4ef66af803b2fece9c1eaec5aae7c18ced663955e02e790c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-index/src/scalar/ngram.rs:1461-1465 | rust/lance-index/src/scalar/ngram.rs:1468-1472 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/ngram.rs"},"region":{"startLine":1461}}}],"partialFingerprints":{"codehealthFindingId/v1":"f12ee7e8d44a43ff137d9501629f04def6ee5a1b064f99b6e1f4d9b1b5af45b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-index/src/vector/bq/builder.rs:584-588 | rust/lance-index/src/vector/bq/builder.rs:670-674 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/builder.rs"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd048adfc5f7f304b7422c6a659ac5652ac192f95044574d63bda41d2db53c6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-index/src/vector/bq/dist_table_quant.rs:398-402 | rust/lance-index/src/vector/bq/dist_table_quant.rs:433-437 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/dist_table_quant.rs"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"292f4c20a1e7e8cd5504c2fbd6b07e9449a8723866d3c1e8a73bede9020de9db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-index/src/vector/graph.rs:600-604 | rust/lance-index/src/vector/graph.rs:628-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":"rust/lance-index/src/vector/graph.rs"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd0ca2ff577c93342a99bd16bb622724b9fe68b6f08aa5626cc149202acd0c28"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-index/src/vector/sq/pairwise.rs:463-467 | rust/lance-index/src/vector/sq/pairwise.rs:508-512 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/sq/pairwise.rs"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcce8f910756d01026d71a3f28edbf15105d2de9e88d923071cf3bca7ba93dc7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-index/src/vector/sq/pairwise.rs:475-479 | rust/lance-index/src/vector/sq/pairwise.rs:523-527 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/sq/pairwise.rs"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"335b2905eb812ca7d7de448be1846fddce04faf347bee6d9d247f4fbe6c92a40"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-linalg/src/distance/cosine.rs:553-557 | rust/lance-linalg/src/distance/cosine.rs:1138-1142 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f17a93efaafe63374ce019f1413baff29b1dc53ebc325bfa3be7c779d269b53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-linalg/src/simd/dist_table.rs:768-774 | rust/lance-linalg/src/simd/dist_table.rs:779-783 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":768}}}],"partialFingerprints":{"codehealthFindingId/v1":"aea0c30c23be7f6b6a312fde7001a059f363f9647008f5d6d5d3e3d27005d91c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:434-438 | rust/lance-linalg/src/simd/f32.rs:940-944 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e8a22cf0ef789bec353549463e50d9fc96ce789d3974eab8eec1e4eccedd3b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-linalg/src/simd/f32.rs:439-443 | rust/lance-linalg/src/simd/f32.rs:947-951 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f32.rs"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e3b23c12ab376bd030827fb14841e73c2ad637d1622cdda651816891bb1b808"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-linalg/src/simd/f64.rs:284-288 | rust/lance-linalg/src/simd/f64.rs:733-737 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f64.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"a78dfb87de3fc25d2b771e7b23cbfc8d2c7740494b1bde2d687a70d38214ebdc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-linalg/src/simd/f64.rs:289-293 | rust/lance-linalg/src/simd/f64.rs:740-744 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/f64.rs"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"e758c9d05f5e497fa9473ad6335e5633363bee67c0166f26766999015ca9e51c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:3998-4002 | rust/lance-namespace-impls/src/dir.rs:4171-4175 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":3998}}}],"partialFingerprints":{"codehealthFindingId/v1":"50f8471a8526304deff471509dc33fec270e00d61614606d759d8e604c3b732c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-select/src/mask/nullable.rs:222-226 | rust/lance-select/src/mask/nullable.rs:233-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":"rust/lance-select/src/mask/nullable.rs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa4ce8928344ee3c6f3d01c6ecb92ac9532893fc299dae057855ae50b1714343"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-select/src/mask/nullable.rs:270-275 | rust/lance-select/src/mask/nullable.rs:284-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":"rust/lance-select/src/mask/nullable.rs"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"7185514e8098c860ac9a3fdbf7a9caddc9a685d8b946b116ca0b09358898c8cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-table/src/rowids/serde.rs:188-192 | rust/lance-table/src/rowids/serde.rs:205-209 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids/serde.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a20474296addce31506f75b8353fa58c3fafd33d1ceaf800060ec1c83c19ab9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (54 lines \u00D7 2): rust/lance-index/src/vector/flat.rs:34-87 | rust/lance/src/index/vector/utils.rs:33-86 \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":"rust/lance-index/src/vector/flat.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"b07edf5e9d1e71bc302bfcd485e595838e7d6c3e42c8e3b0f9452b19f15474ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): java/lance-jni/src/blocking_dataset.rs:3775-3784 | python/src/dataset.rs:882-891 \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":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":3775}}}],"partialFingerprints":{"codehealthFindingId/v1":"48ad537ee6ae7b3f0aec7883e40b553bec4e02af156cd289efb2af6e4edf64a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): java/lance-jni/src/mem_wal.rs:1145-1159 | python/src/mem_wal.rs:1058-1072 \u2014 before extracting anything, compare \u0060java/lance-jni/src/mem_wal.rs\u0060 and \u0060python/src/mem_wal.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 51 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":"java/lance-jni/src/mem_wal.rs"},"region":{"startLine":1145}}}],"partialFingerprints":{"codehealthFindingId/v1":"13951c22bdab8f48b754dadf0df0f4bb1638b2b802773549bf67a7b74a37f02a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): java/lance-jni/src/merge_insert.rs:230-235 | java/lance-jni/src/update.rs:94-99 \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":"java/lance-jni/src/merge_insert.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"d197ffb320cbc2124a1baf3fc24130e384bbf573b3f5f088f62d3a390e362904"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): java/lance-jni/src/merge_insert.rs:257-267 | java/lance-jni/src/update.rs:109-119 \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":"java/lance-jni/src/merge_insert.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb76ded30520d37857c5f0715bb4f279d2851d4ffb9443b6e60ad1af61fe9089"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): java/lance-jni/src/otel.rs:121-126 | python/src/otel.rs:169-174 \u2014 before extracting anything, compare \u0060java/lance-jni/src/otel.rs\u0060 and \u0060python/src/otel.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 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":"java/lance-jni/src/otel.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bbc314c7f4b799261764d38155cdbb48155c84aab9836c20619bc90a3fb12fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): java/lance-jni/src/otel.rs:58-65 | python/src/otel.rs:88-95 \u2014 before extracting anything, compare \u0060java/lance-jni/src/otel.rs\u0060 and \u0060python/src/otel.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 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":"java/lance-jni/src/otel.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbe3401decca336bb03f17515a7551617a073d5618f53e77fe7e66398ef55804"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): java/lance-jni/src/otel.rs:201-206 | python/src/otel.rs:256-261 \u2014 before extracting anything, compare \u0060java/lance-jni/src/otel.rs\u0060 and \u0060python/src/otel.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 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":"java/lance-jni/src/otel.rs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"602feea5c154720269e4f1f8154b14f9204b9f79a2d19dfe7b71c387a85744af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): java/lance-jni/src/otel.rs:228-232 | python/src/otel.rs:286-290 \u2014 before extracting anything, compare \u0060java/lance-jni/src/otel.rs\u0060 and \u0060python/src/otel.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 115 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":"java/lance-jni/src/otel.rs"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"af98fbc2994fe43f92cc5bbce35609f454f34df6aa86f82bce87d73cd07f4e3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): java/lance-jni/src/otel.rs:345-350 | java/lance-jni/src/utils.rs:692-697 \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":"java/lance-jni/src/otel.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7a6d6a350d4d19713e88170e27a8065ca6ef067378cffbf0d4e0406bba7f3eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): python/src/dataset/optimize.rs:201-208 | python/src/fragment.rs:693-700 | python/src/fragment.rs:745-752 \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":"python/src/dataset/optimize.rs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b7f2c6e8a5475dd0f5d0b026a6fffa35cf8d1d9b848041b48533646b545a070"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): python/src/dataset/optimize.rs:241-249 | python/src/dataset/optimize.rs:353-361 | python/src/fragment.rs:720-728 | python/src/fragment.rs:779-787 \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":"python/src/dataset/optimize.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a09ae8dac8bd1d9af315ba9509ccee1b09e57fd3522ecb1eadf1a41886253bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-datafusion/src/exec.rs:972-978 | rust/lance/src/datafusion/dataframe.rs:224-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":"rust/lance-datafusion/src/exec.rs"},"region":{"startLine":972}}}],"partialFingerprints":{"codehealthFindingId/v1":"207fca6df208a0902da5d2b8296834b9a5c77e762691f9435d4745bb1aeff515"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/inverted/query.rs:447-453 | rust/lance/src/dataset/mem_wal/index/fts.rs:560-566 \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":"rust/lance-index/src/scalar/inverted/query.rs"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"d191ff0ed11c03a4fca9652263db4e463468e2c77f515bdde6cfb617af41a65d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs:948-954 | rust/lance/src/dataset/mem_wal/scanner/builder.rs:791-797 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/scanner/builder.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. 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs"},"region":{"startLine":948}}}],"partialFingerprints":{"codehealthFindingId/v1":"216468956a17475661e53593ca51cb227d1bcd4e88d5ffce7e408712b7d79999"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs:468-474 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs:355-361 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/vector.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 180 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/brute_force_vector.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"9afea1fbc04ccce120e0a494603767b5dfcd4af1fa1b8a64ea73152a9b7013f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): rust/lance/src/dataset/mem_wal/memtable/scanner/exec/btree.rs:361-368 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_scan.rs:289-295 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/fts.rs:709-715 | rust/lance/src/dataset/mem_wal/memtable/scanner/exec/scan.rs:342-350 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_scan.rs\u0060 and \u0060rust/lance/src/dataset/mem_wal/memtable/scanner/exec/scan.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 47 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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/btree.rs"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"82ed523748a7a1625f8ef540c201c50f48a81eeed99e7c37a65c7714c0e1e793"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): rust/lance-index/src/scalar/btree.rs:2315-2321 | rust/lance-index/src/scalar/rtree.rs:510-516 | rust/lance/src/index/scalar/rtree.rs:16-22 \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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":2315}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a8f440a6804d5c3073e791f7ecbb7a75eeabe8cc7cb5d5b7b338f68b61e1269"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): rust/lance-file/src/reader/structural.rs:207-212 | rust/lance-file/src/versions/v1/mod.rs:86-91 | rust/lance-file/src/versions/v2_0/mod.rs:52-57 \u2014 \u0060rust/lance-file/src/versions/v1/mod.rs\u0060 and \u0060rust/lance-file/src/versions/v2_0/mod.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 34 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":"rust/lance-file/src/reader/structural.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3d7e357f4e8d49cffefaa12c88f1426f42231632f1f0f26a31224d878b72aaf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): rust/lance-file/src/reader/structural.rs:248-259 | rust/lance-file/src/versions/v1/mod.rs:43-54 | rust/lance-file/src/versions/v2_0/reader.rs:205-216 \u2014 before extracting anything, compare \u0060rust/lance-file/src/reader/structural.rs\u0060 and \u0060rust/lance-file/src/versions/v2_0/reader.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 101 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":"rust/lance-file/src/reader/structural.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3dbd5f5e15bffab30f288a0db40560d378102827ad47ce42a2c6f9bf465f1af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:123-129 | rust/lance-file/src/writer/structural.rs:106-112 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2701120ae20ae27f16deb1c27f8998fe6723a66703319bcff5882d8ab4d081f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:636-645 | rust/lance-file/src/writer/structural.rs:813-822 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":636}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdfdf68cd1ea6a68fb38eaad11c1cb6fa8a93d904d7799d76cb7c008fd5c3de9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-file/src/versions/v2_0/writer.rs:175-182 | rust/lance-file/src/writer/structural.rs:137-144 \u2014 before extracting anything, compare \u0060rust/lance-file/src/versions/v2_0/writer.rs\u0060 and \u0060rust/lance-file/src/writer/structural.rs\u0060 as WHOLE FILES: this scan already matched 18 separate duplicated blocks between them, totalling at least 216 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":"rust/lance-file/src/versions/v2_0/writer.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0e2eae33966f70dbd7f40274cf6659d9362e74cf1de2a35be22d07e1395a5f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): rust/lance-file/src/versions/v2_1/writer.rs:88-93 | rust/lance-file/src/versions/v2_2/writer.rs:88-93 | rust/lance-file/src/versions/v2_3/writer.rs:88-93 \u2014 \u0060rust/lance-file/src/versions/v2_1/writer.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/writer.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 62 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":"rust/lance-file/src/versions/v2_1/writer.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fe92b82d9f82191b73d46eba07d98114f8c396ee5544a8f253ba19ac7258215"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-file/src/versions/v2_2/compression.rs:32-38 | rust/lance-file/src/versions/v2_3/compression.rs:32-38 \u2014 \u0060rust/lance-file/src/versions/v2_2/compression.rs\u0060 and \u0060rust/lance-file/src/versions/v2_3/compression.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 61 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":"rust/lance-file/src/versions/v2_2/compression.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"81539b8ecfdf8d86f61717270b14de9082b6f845bdf75cfa2e68c1ab8c25c3fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-file/src/versions/v1/mod.rs:73-83 | rust/lance-file/src/versions/v2_0/mod.rs:39-49 \u2014 \u0060rust/lance-file/src/versions/v1/mod.rs\u0060 and \u0060rust/lance-file/src/versions/v2_0/mod.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 34 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":"rust/lance-file/src/versions/v1/mod.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"e10d99ed4098e53b9e4833d61d621d852190680b1357931774642e79a944f142"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-file/src/versions/v1/mod.rs:93-100 | rust/lance-file/src/versions/v2_0/mod.rs:59-66 \u2014 \u0060rust/lance-file/src/versions/v1/mod.rs\u0060 and \u0060rust/lance-file/src/versions/v2_0/mod.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 34 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":"rust/lance-file/src/versions/v1/mod.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcdaf704ddbbf5b77578409eb05432c81a665af62b9aa0bb26c10d1b76811ec1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-index/src/scalar/bloomfilter.rs:487-496 | rust/lance-index/src/scalar/zonemap.rs:722-731 \u2014 before extracting anything, compare \u0060rust/lance-index/src/scalar/bloomfilter.rs\u0060 and \u0060rust/lance-index/src/scalar/zonemap.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 61 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":"rust/lance-index/src/scalar/bloomfilter.rs"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab6c452abf864c5b2a233fe60f4013938d6a2975d99af026b96f7e9fee60e09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-index/src/scalar/btree.rs:2326-2333 | rust/lance-index/src/scalar/rtree.rs:538-546 \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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":2326}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e1dd80178082dc48d6a8cdf9f416aca308be053673d3c6cc33eb4d47cd05ba9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/inverted/compound.rs:2432-2438 | rust/lance-index/src/scalar/inverted/compound/should_maxscore.rs:407-413 \u2014 before extracting anything, compare \u0060rust/lance-index/src/scalar/inverted/compound.rs\u0060 and \u0060rust/lance-index/src/scalar/inverted/compound/should_maxscore.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. 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":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":2432}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba27a14c3d965439d09289ce9e21ea9d87ebe30922c2d16540d82c9f497e2951"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/scalar/inverted/compound.rs:2470-2475 | rust/lance-index/src/scalar/inverted/compound/should_maxscore.rs:452-457 \u2014 before extracting anything, compare \u0060rust/lance-index/src/scalar/inverted/compound.rs\u0060 and \u0060rust/lance-index/src/scalar/inverted/compound/should_maxscore.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. 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":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":2470}}}],"partialFingerprints":{"codehealthFindingId/v1":"47e4a3501ad1c6268753165339c3a8200101ae1d69b9b098f113b28f8f73e8fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): rust/lance-index/src/scalar/inverted/compound.rs:1027-1037 | rust/lance-index/src/scalar/inverted/compound.rs:3334-3344 | rust/lance-index/src/scalar/inverted/compound/should_maxscore.rs:508-518 \u2014 before extracting anything, compare \u0060rust/lance-index/src/scalar/inverted/compound.rs\u0060 and \u0060rust/lance-index/src/scalar/inverted/compound/should_maxscore.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. 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":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":1027}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8802c84598beb5b1514ebf997a48f4fb1f2da3d91389f7b177ea37a29dcfecc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): rust/lance-index/src/scalar/inverted/compound.rs:2610-2615 | rust/lance-index/src/scalar/inverted/compound.rs:2883-2888 | rust/lance-index/src/scalar/inverted/compound/should_maxscore.rs:586-591 \u2014 before extracting anything, compare \u0060rust/lance-index/src/scalar/inverted/compound.rs\u0060 and \u0060rust/lance-index/src/scalar/inverted/compound/should_maxscore.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. 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":"rust/lance-index/src/scalar/inverted/compound.rs"},"region":{"startLine":2610}}}],"partialFingerprints":{"codehealthFindingId/v1":"423665119c23943449d7cd6b70b2375da79c11367b68903c4214383889f895f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/inverted/encoding.rs:417-423 | rust/lance-index/src/scalar/inverted/impact.rs:564-570 \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":"rust/lance-index/src/scalar/inverted/encoding.rs"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd794385b2e8b083d5897a2e5c3ff62bfe390d6b0cddfdfed80060428920d02a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/scalar/inverted.rs:192-197 | rust/lance-index/src/scalar/inverted/index/search.rs:9-14 \u2014 before extracting anything, compare \u0060rust/lance-index/src/scalar/inverted.rs\u0060 and \u0060rust/lance-index/src/scalar/inverted/index/search.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 47 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":"rust/lance-index/src/scalar/inverted.rs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"229c33f1771bb801d6fc899a1bf8abbe3e7da3fa5c5950e8200efa01b9a8f1bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 7): rust/lance-index/src/scalar.rs:362-367 | rust/lance-index/src/scalar.rs:433-438 | rust/lance-index/src/scalar.rs:489-494 | rust/lance-index/src/scalar.rs:561-566 | rust/lance-index/src/scalar.rs:590-595 | rust/lance-index/src/scalar.rs:634-639 | rust/lance-index/src/scalar/json.rs:300-305 \u2014 there are 7 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 7 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar.rs"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eca17ce04d2888b63299f9e6c43e497bcca442da89436e1db662b3fd20989d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-io/src/scheduler.rs:75-81 | rust/lance-io/src/scheduler/lite.rs:282-288 \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":"rust/lance-io/src/scheduler.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"f33d83d8bbf0c30caec4a84020e52cd66d166bcf054f813c6f85082a5931825e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-io/src/uring/current_thread.rs:379-384 | rust/lance-io/src/uring/reader.rs:269-274 \u2014 before extracting anything, compare \u0060rust/lance-io/src/uring/current_thread.rs\u0060 and \u0060rust/lance-io/src/uring/reader.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 82 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":"rust/lance-io/src/uring/current_thread.rs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d9b3de67dc588aeb637b8133c799c3927599638ca6395620ee23b75cebbbb2d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-linalg/src/distance/cosine_u8.rs:76-83 | rust/lance-linalg/src/distance/l2_u8.rs:46-53 \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":"rust/lance-linalg/src/distance/cosine_u8.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"751d5d1371fcaad53a41aa16425e27f095f931e459b76f136e7c3c907b847b55"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): rust/lance-namespace-impls/src/credentials/aws.rs:299-303 | rust/lance-namespace-impls/src/credentials/azure.rs:237-241 | rust/lance-namespace-impls/src/credentials/gcp.rs:757-761 \u2014 before extracting anything, compare \u0060rust/lance-namespace-impls/src/credentials/aws.rs\u0060 and \u0060rust/lance-namespace-impls/src/credentials/gcp.rs\u0060 as WHOLE FILES: this scan already matched 3 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":"rust/lance-namespace-impls/src/credentials/aws.rs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"03a1115eddc3de1ec98f3bcb5259c9841e8f3830a44b1089c1dcea4d8a1e655c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-select/src/mask.rs:271-276 | rust/lance-select/src/mask/nullable.rs:192-197 \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":"rust/lance-select/src/mask.rs"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"34e4cfc1e952eb9fae864465a8efb61b7fc91cd379bf0140e48478a6cfaacee6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): java/lance-jni/src/blocking_dataset.rs:921-934 | java/lance-jni/src/blocking_scanner.rs:683-696 | java/lance-jni/src/file_reader.rs:85-89 | java/lance-jni/src/file_writer.rs:51-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 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"c360cf137efd2c9038a7d55a37161eb7f7dba9ad57960bc88aadf9cdb14aa89a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:1474-1484 | rust/lance/src/index/vector/ivf/v2.rs:2177-2187 \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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":1474}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b4a6faf4a58e2529152f9558dcdf67a9a2ec132a86b4f38169e51bdc9f5405b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/list.rs:115-119 | rust/lance-encoding/src/encodings/logical/map.rs:107-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":"rust/lance-encoding/src/encodings/logical/list.rs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd3cc5e163d2c7f341be3d2c266a4aed1d11aada752446df8411a4d38ea84db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/list.rs:172-178 | rust/lance-encoding/src/encodings/logical/map.rs:163-169 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/list.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e6a885a576583c97a8972bd49065c7897a0d898afe9f656c92c8e286313c3d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): rust/lance-index/src/scalar/bitmap.rs:2132-2138 | rust/lance-index/src/scalar/btree.rs:3750-3756 | rust/lance-index/src/scalar/label_list.rs:1070-1076 \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":"rust/lance-index/src/scalar/bitmap.rs"},"region":{"startLine":2132}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7661ae3afadc00502c4f0c5c387e91824511e43f575a015cb203f25f058f48c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/scalar/inverted/cross_column.rs:188-193 | rust/lance-index/src/scalar/inverted/wand.rs:2107-2112 \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":"rust/lance-index/src/scalar/inverted/cross_column.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"00273f32f765ebbdce6aeea74a2859eefa999ebe2f84f42d6ee49c4d97e5a80d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-index/src/vector/sq/storage.rs:178-182 | rust/lance-index/src/vector/storage.rs:701-705 \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":"rust/lance-index/src/vector/sq/storage.rs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"d340605412204961b945b52af88911ed525bb4952083e691039f4f0792224123"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): rust/lance-io/src/object_store/providers/aws.rs:632-640 | rust/lance-io/src/object_store/providers/azure.rs:348-356 | rust/lance-io/src/object_store/providers/gcp.rs:381-389 \u2014 before extracting anything, compare \u0060rust/lance-io/src/object_store/providers/aws.rs\u0060 and \u0060rust/lance-io/src/object_store/providers/gcp.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":"rust/lance-io/src/object_store/providers/aws.rs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a547c7ff8340ee30b1eef6a1ed8fd9ef885b5041dba66b41c7590fde286e3af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-linalg/src/distance/dot.rs:370-374 | rust/lance-linalg/src/distance/l2.rs:401-405 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/dot.rs\u0060 and \u0060rust/lance-linalg/src/distance/l2.rs\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 86 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":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fa9ef0204b7c786c964abb114ed6f7cac44a17d814642c258141347372ed0f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-linalg/src/distance/dot.rs:428-432 | rust/lance-linalg/src/distance/l2.rs:461-465 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/dot.rs\u0060 and \u0060rust/lance-linalg/src/distance/l2.rs\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 86 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":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae3502d93b9aa490820486f4646934518979c354c699900d174805176646a225"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): rust/lance-linalg/src/distance/dot.rs:535-540 | rust/lance-linalg/src/distance/dot.rs:553-558 | rust/lance-linalg/src/distance/dot.rs:571-576 | rust/lance-linalg/src/distance/l2.rs:576-581 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/dot.rs\u0060 and \u0060rust/lance-linalg/src/distance/l2.rs\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 86 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":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":535}}}],"partialFingerprints":{"codehealthFindingId/v1":"dff961d9e28b06a301bb035a883c708c0121d5d7694412bc010f0812e8a95736"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/distance/dot.rs:439-444 | rust/lance-linalg/src/distance/l2.rs:472-477 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/dot.rs\u0060 and \u0060rust/lance-linalg/src/distance/l2.rs\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 86 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":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"94019eac42ec8460ba1c041f7390e80e4dfd93e01741a3045dd050ea6b6ca501"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): rust/lance-namespace-impls/src/credentials/gcp.rs:702-728 | rust/lance-namespace-impls/src/credentials/gcp.rs:788-812 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/credentials/gcp.rs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"822be636dcb53f11319db8bbf1f5043c605b4815a5edb96a2c34321aaab67e64"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:4858-4874 | rust/lance-namespace-impls/src/dir.rs:4901-4917 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":4858}}}],"partialFingerprints":{"codehealthFindingId/v1":"82e5e5d6cbdfae86c6a054deabe83cc418ac23cd6710f154e2333e9721104178"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): rust/lance-datafusion/src/chunker.rs:331-346 | rust/lance-datafusion/src/chunker.rs:427-442 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/chunker.rs"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"d240623dc7e6278060475cd89e04c3802d7a7de8ebc837ef6b2798b045451589"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): rust/lance-namespace-impls/src/dir/manifest.rs:2169-2183 | rust/lance-namespace-impls/src/dir/manifest.rs:2425-2439 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2169}}}],"partialFingerprints":{"codehealthFindingId/v1":"2585671bf9c449adb0f15410b2e7671101c826729dd15ca49f8de30937b26383"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-namespace-impls/src/credentials/gcp.rs:288-302 | rust/lance-namespace-impls/src/credentials/gcp.rs:445-457 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/credentials/gcp.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d2fc465995f37ddb493721a1ca868fb2f8e83f8a8b788dd9acdead6dfa652e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-namespace-impls/src/credentials/azure.rs:420-430 | rust/lance-namespace-impls/src/credentials/azure.rs:475-488 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/credentials/azure.rs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"3724315d64b61e225d085acd6b34bd8979570d816ea64a3f4988d8c6875d13df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): java/lance-jni/src/transaction.rs:1715-1728 | java/lance-jni/src/transaction.rs:1729-1742 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/transaction.rs"},"region":{"startLine":1715}}}],"partialFingerprints":{"codehealthFindingId/v1":"5167d86d86433527113621b61695328a38a7e8a3d365df806e5bbe4879722b91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): java/lance-jni/src/schema.rs:256-269 | java/lance-jni/src/schema.rs:284-297 | java/lance-jni/src/schema.rs:314-327 \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":"java/lance-jni/src/schema.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9f27b8cf45b0cb929354e66bec656b9e2e83cb45074e517ce6471f25b095359"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance/src/index.rs:3554-3566 | rust/lance/src/index.rs:3658-3671 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index.rs"},"region":{"startLine":3554}}}],"partialFingerprints":{"codehealthFindingId/v1":"b491b172ad27c0d7bfdc79cdd63c231e3a10d3c95088983a42a101f49a553b24"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance/src/dataset/write/merge_insert/exec/delete.rs:144-157 | rust/lance/src/dataset/write/merge_insert/exec/write.rs:554-567 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset/write/merge_insert/exec/delete.rs\u0060 and \u0060rust/lance/src/dataset/write/merge_insert/exec/write.rs\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"rust/lance/src/dataset/write/merge_insert/exec/delete.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"33b026a9eb1485e200efed7f62c35149732e75ec2dcc55981746810ccff3d371"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): rust/lance-table/src/transaction/manifest_build.rs:1799-1812 | rust/lance-table/src/transaction/manifest_build.rs:1826-1839 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/manifest_build.rs"},"region":{"startLine":1799}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff815d5add2ad28c1b0c879a9c9c7552b43e9696642c323cf28a0159b22e5c02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-io/src/object_store/throttle.rs:408-420 | rust/lance-io/src/object_store/throttle.rs:469-481 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/object_store/throttle.rs"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"e307d998caadc170af6a0c7fb8846b8d18e05f616e53f1cce310d54078a7a8d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): rust/lance/src/io/exec/fts.rs:2629-2641 | rust/lance/src/io/exec/fts.rs:3689-3701 | rust/lance/src/io/exec/fts.rs:4098-4110 | rust/lance/src/io/exec/fts.rs:4856-4868 \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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2629}}}],"partialFingerprints":{"codehealthFindingId/v1":"46ef187900c47d247f8a0bfa0a5686b37c8ff0a6d8f0a677af8bb8b135a3bf25"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance/src/dataset.rs:3758-3769 | rust/lance/src/dataset/fragment.rs:2326-2338 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset.rs\u0060 and \u0060rust/lance/src/dataset/fragment.rs\u0060 as WHOLE FILES: this scan already matched 3 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. 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":"rust/lance/src/dataset.rs"},"region":{"startLine":3758}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ce9352053bab4ac5d7554680c795036d78f114e943e0fd6a445fc2ea24ea476"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-table/src/rowids.rs:977-989 | rust/lance-table/src/rowids/version.rs:580-592 \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":"rust/lance-table/src/rowids.rs"},"region":{"startLine":977}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ff7d4d62795ba3c2fdd7b748cb836028db8ad531b377998af4e8f0d7547cc61"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-namespace-impls/src/dir/manifest.rs:2718-2730 | rust/lance-namespace-impls/src/dir/manifest.rs:3220-3232 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2718}}}],"partialFingerprints":{"codehealthFindingId/v1":"571139916f9b0fc07525aaa85c963b3cc718252bef40fa847412adbc0fbf944c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:5679-5691 | rust/lance-namespace-impls/src/dir.rs:5746-5758 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":5679}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2598629ac9df430da30eb702a79d21c241e12d437207d35d04503db3e1225c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): rust/lance-namespace-impls/src/credentials/azure.rs:404-415 | rust/lance-namespace-impls/src/credentials/azure.rs:461-470 | rust/lance-namespace-impls/src/credentials/azure.rs:517-528 | rust/lance-namespace-impls/src/credentials/gcp.rs:1107-1115 \u2014 before extracting anything, compare \u0060rust/lance-namespace-impls/src/credentials/azure.rs\u0060 and \u0060rust/lance-namespace-impls/src/credentials/gcp.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":"rust/lance-namespace-impls/src/credentials/azure.rs"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"087cac5da7db5858b1f0acb12e99799df531541ba782a8bc505250e24b97c256"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:1396-1406 | rust/lance/src/io/exec/fts.rs:1949-1960 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":1396}}}],"partialFingerprints":{"codehealthFindingId/v1":"a59c18f95867b9697b1e7b5228c8e1fbe8cf49f650e7fc4f44d87616f611467a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/index/vector.rs:920-931 | rust/lance/src/index/vector.rs:1266-1276 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":920}}}],"partialFingerprints":{"codehealthFindingId/v1":"79b04c30927fcc9ceca4085e98f5bc73f71f30fc3e608f92daf9dd1330ab6d92"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:4445-4456 | rust/lance-namespace-impls/src/dir.rs:4760-4771 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":4445}}}],"partialFingerprints":{"codehealthFindingId/v1":"614ecfdd6115fdab2635ea07d2d0f56c2715217583a0886a1e9f61f8268f28b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-io/src/object_store/providers/oss.rs:129-140 | rust/lance-io/src/object_store/providers/tos.rs:135-146 \u2014 before extracting anything, compare \u0060rust/lance-io/src/object_store/providers/oss.rs\u0060 and \u0060rust/lance-io/src/object_store/providers/tos.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 62 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":"rust/lance-io/src/object_store/providers/oss.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3c44e71a9f8cb28bdc03a3c60bf34922499839f47b53656a1fed605e5d9c8fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance-table/src/io/commit/dynamodb.rs:443-454 | rust/lance-table/src/io/commit/dynamodb.rs:473-484 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/io/commit/dynamodb.rs"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8fc30d70fae9d0da2fb616d7829bc056c6b31e8c4bb1eaa4303e62668e926dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:3816-3827 | rust/lance/src/index/vector/ivf.rs:3875-3886 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":3816}}}],"partialFingerprints":{"codehealthFindingId/v1":"441ce5f869aab34f93f60a410b945f65392c6126f7778757444a9e960b00b983"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): rust/lance/src/io/exec/fts.rs:1396-1406 | rust/lance/src/io/exec/fts.rs:1949-1960 | rust/lance/src/io/exec/minhash.rs:178-188 \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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":1396}}}],"partialFingerprints":{"codehealthFindingId/v1":"54534ad89b6b64c299fb35ddd8daab56f183c74587405fd57ade63672c144257"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:4397-4407 | rust/lance/src/dataset/scanner.rs:4438-4448 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":4397}}}],"partialFingerprints":{"codehealthFindingId/v1":"becee26a65c06f6f874ac11ced3fbe448dcc6c1b922ef28681eb8fad880d6f3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): rust/lance/src/index/scalar/bitmap.rs:46-56 | rust/lance/src/index/scalar/inverted.rs:988-998 | rust/lance/src/index/scalar/label_list.rs:117-127 \u2014 before extracting anything, compare \u0060rust/lance/src/index/scalar/bitmap.rs\u0060 and \u0060rust/lance/src/index/scalar/inverted.rs\u0060 as WHOLE FILES: this scan already matched 4 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":"rust/lance/src/index/scalar/bitmap.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d86aca6e598c8d3970a3362aee1ee9c51d863171199da8fe81655da65543269"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/dataset/overlay.rs:516-523 | rust/lance/src/dataset/overlay.rs:550-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":"rust/lance/src/dataset/overlay.rs"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fdfdaea815c2bd03dd39162c9dd02395e671304c4694116528b1c5314a38a3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-namespace-impls/src/credentials/gcp.rs:740-747 | rust/lance-namespace-impls/src/credentials/gcp.rs:821-831 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/credentials/gcp.rs"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"59d1e1a610ff1067b8732fef28e3df391eadd5b5f8bcfd0e5c7f016b4778c36e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:5618-5625 | rust/lance-namespace-impls/src/dir.rs:5856-5866 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":5618}}}],"partialFingerprints":{"codehealthFindingId/v1":"2405d6fb59ee9a864a5f01b9bc5e6d0c1c4c4a4c84fdd0e00c68831ae3f82b79"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive/sparse.rs:1439-1449 | rust/lance-encoding/src/encodings/logical/primitive/sparse.rs:1624-1634 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":1439}}}],"partialFingerprints":{"codehealthFindingId/v1":"83dbe4878e255d9882638c5051d33b60fea9d672c8b09faa074c70e647dedb8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance/src/index/vector.rs:991-1001 | rust/lance/src/index/vector.rs:1373-1382 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":991}}}],"partialFingerprints":{"codehealthFindingId/v1":"c748de18278a2ba9c53cd255538b13bc767edd7aa8954854015de132fb1b697a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-core/src/cache/mod.rs:461-470 | rust/lance-core/src/cache/mod.rs:511-520 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/cache/mod.rs"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"c43d06c95b4bdc140f0856496b91e698b5e1ad406c46c4db390f60cb9783cc62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance/src/dataset/refs.rs:1021-1029 | rust/lance/src/dataset/refs.rs:1054-1063 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/refs.rs"},"region":{"startLine":1021}}}],"partialFingerprints":{"codehealthFindingId/v1":"be3a7d844d9cca7b69834b425990c6359a6c9fd229e7225d867ef98d2b33a258"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-namespace-impls/src/credentials/aws.rs:213-222 | rust/lance-namespace-impls/src/credentials/gcp.rs:549-558 \u2014 before extracting anything, compare \u0060rust/lance-namespace-impls/src/credentials/aws.rs\u0060 and \u0060rust/lance-namespace-impls/src/credentials/gcp.rs\u0060 as WHOLE FILES: this scan already matched 3 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":"rust/lance-namespace-impls/src/credentials/aws.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"e775b4869ac5f4b9d77964a96eb0101b1426d755f6c17814a9bb8678cc76e515"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): python/src/namespace.rs:152-161 | python/src/namespace.rs:852-861 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"358c63766ab07bb3f2bbe6df7b52c6e12d84dc4c9c05ad6d107132395e51ce0d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance/src/index/frag_reuse.rs:921-930 | rust/lance/src/index/frag_reuse.rs:1430-1439 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/frag_reuse.rs"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"afa5036771d22ca064a881184d86570412fdf50ab07398ee5a0e3b28c0cd375f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): rust/lance-index/src/vector/pq/storage.rs:427-436 | rust/lance-index/src/vector/quantizer.rs:373-382 | rust/lance-index/src/vector/sq/storage.rs:232-241 \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":"rust/lance-index/src/vector/pq/storage.rs"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"2edca7d4976a4c7f4dee4ca475f14c6b7dc7967c677018e7c59dde172e2958af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive.rs:321-329 | rust/lance-encoding/src/encodings/logical/primitive.rs:330-339 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0f012a5ecb781064141291890bd49d9312af6cba7458b8457c79be5f1658363"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-namespace-impls/src/rest.rs:977-986 | rust/lance-namespace-impls/src/rest.rs:989-998 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/rest.rs"},"region":{"startLine":977}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3cff2b7d1abcd502d5ea8412f748c49890a75b2586a68b8a64b333f37efee75"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): rust/lance/src/io/exec/filtered_read.rs:3242-3251 | rust/lance/src/io/exec/pushdown_scan.rs:244-253 | rust/lance/src/io/exec/scan.rs:645-654 \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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":3242}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aebee1cb9fed5f1c283d7ffc046d7b9ed21caa9ded69bc070e46316d36cdade"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-index/src/scalar/inverted/encoding.rs:366-375 | rust/lance-index/src/scalar/inverted/encoding.rs:453-462 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/encoding.rs"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"14b2a6e22ba82281c0569cb92d6846c5d55916bab5cdaf7022733f46a67536b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): rust/lance-linalg/src/distance/cosine.rs:1358-1367 | rust/lance-linalg/src/distance/dot.rs:790-799 \u2014 before extracting anything, compare \u0060rust/lance-linalg/src/distance/cosine.rs\u0060 and \u0060rust/lance-linalg/src/distance/dot.rs\u0060 as WHOLE FILES: this scan already matched 7 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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1358}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa59e2f94b9198433ced55e381d30b317cf6db1a461a66e074b86f70eae6344c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive/sparse.rs:4467-4475 | rust/lance-encoding/src/encodings/logical/primitive/sparse.rs:4626-4634 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive/sparse.rs"},"region":{"startLine":4467}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d64f63a3a4e2587bb5c4e09e90e984fa9f2758b88da0aefc06b9eefcaa63e48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-io/src/object_store/providers/oss.rs:28-36 | rust/lance-io/src/object_store/providers/tencent.rs:27-34 \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":"rust/lance-io/src/object_store/providers/oss.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"5114961ac02f5ebda398989b80c52df0e967bde2505da30fc5e735a94717a8fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): java/lance-jni/src/index_progress.rs:53-61 | java/lance-jni/src/index_progress.rs:104-112 | java/lance-jni/src/index_progress.rs:128-136 \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":"java/lance-jni/src/index_progress.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b16e7f18c6a6c114ab5e59a317b48cf6a6fac7cf2561f6a08d36ee4fa4a011d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/blob.rs:390-397 | rust/lance/src/dataset/blob.rs:1153-1161 \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":"rust/lance/src/blob.rs"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"c25346fffdea0257274a6fa25848ab74d6fd91fad7b997705198d4df0114826b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-io/src/object_store/providers/oss.rs:111-119 | rust/lance-io/src/object_store/providers/tos.rs:117-125 \u2014 before extracting anything, compare \u0060rust/lance-io/src/object_store/providers/oss.rs\u0060 and \u0060rust/lance-io/src/object_store/providers/tos.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 62 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":"rust/lance-io/src/object_store/providers/oss.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"551acf16692754e0bc9353c0b855dd733beac8472192cbbdc4b5dd634af8df16"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-io/src/object_store/providers/aws.rs:157-165 | rust/lance-io/src/object_store/providers/gcp.rs:212-220 \u2014 before extracting anything, compare \u0060rust/lance-io/src/object_store/providers/aws.rs\u0060 and \u0060rust/lance-io/src/object_store/providers/gcp.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":"rust/lance-io/src/object_store/providers/aws.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"93e409ebaf8ed1fbef0b70679a5a5f1b7092df5d29a6f6e0259a604636ff457d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): java/lance-jni/src/namespace.rs:1575-1583 | java/lance-jni/src/namespace.rs:2527-2535 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/namespace.rs"},"region":{"startLine":1575}}}],"partialFingerprints":{"codehealthFindingId/v1":"b75a2af13d57677867ef0d741d00a04f35be8227583e1c2547b5b2f95d6451cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:5645-5653 | rust/lance-namespace-impls/src/dir.rs:5713-5721 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":5645}}}],"partialFingerprints":{"codehealthFindingId/v1":"a96a6082a38bc2034f9af22cde58035a0e6aba23030ac2f85b1d0d47df819b08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:2785-2792 | rust/lance/src/io/exec/fts.rs:4995-5002 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":2785}}}],"partialFingerprints":{"codehealthFindingId/v1":"e94786d3c592c661736a415606a5e6357161238400021ec1f80f5bcb5cbc7cf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-namespace-impls/src/rest.rs:1200-1207 | rust/lance-namespace-impls/src/rest.rs:1257-1264 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/rest.rs"},"region":{"startLine":1200}}}],"partialFingerprints":{"codehealthFindingId/v1":"98a287831aaed0313362c10e1c6c8f5d4b2b98c07abf7d406d76585c83973927"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/cache.rs:418-425 | rust/lance-index/src/scalar/inverted/index/cache.rs:451-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":"rust/lance-index/src/scalar/inverted/index/cache.rs"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"7424194c3c264979a2768e662f26c04cacb7562a1f8312ca696d5fde436c3946"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-file/src/versions/v2_1/reader.rs:144-151 | rust/lance-file/src/versions/v2_2/reader.rs:146-153 \u2014 \u0060rust/lance-file/src/versions/v2_1/reader.rs\u0060 and \u0060rust/lance-file/src/versions/v2_2/reader.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 10 separate duplicated blocks between them, totalling at least 158 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":"rust/lance-file/src/versions/v2_1/reader.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8fd036725ce958d9f45628ba30eaf30ba4accf8e39eefa7afe0bf6adb2d9fa3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/index/vector.rs:1079-1086 | rust/lance/src/index/vector.rs:1449-1456 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":1079}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2b1fcc24700fc26d105b32a067f5b2557803f2419d2c22627a63fa125a7b643"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-encoding/src/encodings/logical/primitive.rs:5803-5810 | rust/lance-encoding/src/encodings/logical/primitive.rs:5812-5819 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":5803}}}],"partialFingerprints":{"codehealthFindingId/v1":"65e08f063d30dd8af530be273db738778c0b464278fd7e9ddf04c52485909aa5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-index/src/vector/bq/pairwise.rs:616-623 | rust/lance-index/src/vector/bq/pairwise.rs:703-710 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/pairwise.rs"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"31afddb60103f70ee7f3892ab69a2da6fe09fad117163d67d336592e6bc04dfe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/index/vector.rs:1040-1047 | rust/lance/src/index/vector.rs:1420-1427 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":1040}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a911adceb6d06be178952718cdf1f5eb5921a994491c353085a3bc89196e19d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-namespace-impls/src/dir/manifest.rs:2284-2291 | rust/lance-namespace-impls/src/dir/manifest.rs:3243-3250 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2284}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0d3eee1de600db50628944c9566dde73f01d938e379e697b3901aa12d287163"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance/src/dataset/mem_wal/wal.rs:996-1003 | rust/lance/src/dataset/mem_wal/wal.rs:1564-1569 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/wal.rs"},"region":{"startLine":996}}}],"partialFingerprints":{"codehealthFindingId/v1":"94add9f51faeb2b1c324011a52db4704478682322672bfc481bd593fc0cfec5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/vector/distributed/index_merger.rs:1322-1328 | rust/lance-index/src/vector/distributed/index_merger.rs:1354-1361 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":1322}}}],"partialFingerprints":{"codehealthFindingId/v1":"1018d9ab6e37c1950b9f1f2e618750fd6c5e6f1cd5556e8ffa0410b5d27fb33b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): python/src/dataset.rs:5357-5364 | python/src/dataset.rs:5374-5381 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":5357}}}],"partialFingerprints":{"codehealthFindingId/v1":"72caefe76916097634fefe9a2340d274d10710ddf699cacad2daad88f68f483c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:4201-4208 | rust/lance/src/index/vector/ivf.rs:4385-4392 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":4201}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0bef3c6b747085fccc2d80a0e611ea815f8b216652d00db2be7f4a7b0f62b1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:1309-1316 | rust/lance-namespace-impls/src/dir.rs:1347-1354 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":1309}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8798ec86483f8fc9767c0676c3bfb4c86f43ad11138f481c88fb363cf5ff839"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): rust/lance/src/dataset.rs:1027-1034 | rust/lance/src/dataset.rs:1087-1094 | rust/lance/src/dataset/builder.rs:150-157 \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":"rust/lance/src/dataset.rs"},"region":{"startLine":1027}}}],"partialFingerprints":{"codehealthFindingId/v1":"557974381f4a6f6d5bf135a6662aa98b486555ddb4a8a2050cbb26dc15b72446"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): java/lance-jni/src/blocking_scanner.rs:339-346 | java/lance-jni/src/blocking_scanner.rs:349-356 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/blocking_scanner.rs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd19cb98353076ef9ed9071bba179cba660a1f4af0274609ce0342e16ed525ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): rust/lance-index/src/vector/bq/builder.rs:820-827 | rust/lance-index/src/vector/sq.rs:206-213 \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":"rust/lance-index/src/vector/bq/builder.rs"},"region":{"startLine":820}}}],"partialFingerprints":{"codehealthFindingId/v1":"930484bab53378995546d43572a6225c08baf7853177efef61700b04049884c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance/src/io/exec/fts.rs:1389-1395 | rust/lance/src/io/exec/fts.rs:1942-1948 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":1389}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c39cb209c49d63d2dbf2e590853db2c8381d0c2a53fc97859fc96ec95c1fbb9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-namespace-impls/src/dir.rs:489-495 | rust/lance-namespace-impls/src/dir.rs:536-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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"82bbc1f7d122c4d5d16a30505ecad6ee98dbe69fc421b521b4c06e27c054c3d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): rust/lance-arrow/src/lib.rs:1115-1121 | rust/lance-arrow/src/lib.rs:1137-1143 | rust/lance-arrow/src/lib.rs:1159-1165 \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":"rust/lance-arrow/src/lib.rs"},"region":{"startLine":1115}}}],"partialFingerprints":{"codehealthFindingId/v1":"b00c905d684ae5fa6eec40688b72fcb438f2e7371c53c80d4069ac4eddc29a85"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/fmindex.rs:1475-1481 | rust/lance-index/src/scalar/fmindex.rs:1486-1492 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/fmindex.rs"},"region":{"startLine":1475}}}],"partialFingerprints":{"codehealthFindingId/v1":"21ef05828e240e5669a2b38caa1b4f53e783bebbfba5db8914b9e82be49f22d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-arrow/src/schema.rs:148-154 | rust/lance-arrow/src/schema.rs:165-171 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-arrow/src/schema.rs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"c61b3439059f1af59df52ad33cd94ea954fdf6fd4cce797a190d8d2757863132"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/dataset/optimize.rs:261-266 | python/src/dataset/optimize.rs:385-391 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset/optimize.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"032908998a96a614fa776ee4d7182769b70bc15e683ce6845df12010064bca40"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-namespace-impls/src/dir/manifest.rs:2415-2420 | rust/lance-namespace-impls/src/dir/manifest.rs:2744-2750 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":2415}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a8919ffe2c613460039c99ccb8d1cf6543f449fb1a7982e66bdba470b668c36"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance/src/dataset.rs:3751-3757 | rust/lance/src/dataset/fragment.rs:2319-2325 \u2014 before extracting anything, compare \u0060rust/lance/src/dataset.rs\u0060 and \u0060rust/lance/src/dataset/fragment.rs\u0060 as WHOLE FILES: this scan already matched 3 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. 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":"rust/lance/src/dataset.rs"},"region":{"startLine":3751}}}],"partialFingerprints":{"codehealthFindingId/v1":"3834c1f9158bd5bc66573ff90caf966dc0da7ca6ef203ddbd6f63d592a75d009"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance/src/dataset/optimize.rs:1724-1730 | rust/lance/src/dataset/optimize.rs:1741-1747 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":1724}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ac7dcdf0aa80587bf8b943e9444446fe1ca532eb5de366098bf44288cd73b5f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs:260-265 | rust/lance/src/dataset/mem_wal/scanner/fts_search.rs:197-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":"rust/lance/src/dataset/mem_wal/memtable/scanner/builder.rs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"340bc129ca463ef099899bc920b2f93b1819b9c737f30b935ed1159ddfb9904c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance/src/dataset/write/merge_insert.rs:1493-1498 | rust/lance/src/dataset/write/merge_insert.rs:2393-2398 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":1493}}}],"partialFingerprints":{"codehealthFindingId/v1":"78a4662327908037dd83140fb9065aa2ae1dfa7fe9f3fef0ae5f1f4e218a2e50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/compression/fsst/src/fsst.rs:262-267 | rust/compression/fsst/src/fsst.rs:277-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":"rust/compression/fsst/src/fsst.rs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b777e9a481bc0376a787799ac532e3ed4d8a680d5ba9db7a99da517f9b21b86"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-arrow/src/ipc.rs:307-311 | rust/lance-arrow/src/ipc.rs:323-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":"rust/lance-arrow/src/ipc.rs"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"83d9b41c2b3e1eabce9f2d888ec9bccf65e2aa3010aa9f694f468b161bc3c98c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-namespace-impls/src/rest.rs:899-903 | rust/lance-namespace-impls/src/rest.rs:1628-1632 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/rest.rs"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1cf5be3d1cdde34ba7e97acf7ca3e7c45298dbacde1c5f21a38729e39ee4563"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance/src/index/scalar/btree.rs:102-106 | rust/lance/src/index/scalar/ngram.rs:46-50 \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":"rust/lance/src/index/scalar/btree.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2e8ee1b216772b413a154ce789e60fe4fa944bf142b57f838dd956cf4c8cb6b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-index/src/vector/storage.rs:656-660 | rust/lance/src/index/vector/ivf/v2.rs:1564-1568 \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":"rust/lance-index/src/vector/storage.rs"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"de05e58998e8348304216d1e489f605d0b5b161d3014481adea15d085f833658"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 8): rust/lance-namespace-impls/src/rest.rs:796-800 | rust/lance-namespace-impls/src/rest.rs:861-865 | rust/lance-namespace-impls/src/rest.rs:885-889 | rust/lance-namespace-impls/src/rest.rs:966-970 | rust/lance-namespace-impls/src/rest.rs:1021-1025 | rust/lance-namespace-impls/src/rest.rs:1316-1320 | rust/lance-namespace-impls/src/rest.rs:1532-1536 | rust/lance-namespace-impls/src/rest.rs:1619-1623 \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":"rust/lance-namespace-impls/src/rest.rs"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ca60d0baf754bba6d27e1db16c4a1d63bee7ec1db1f896a4502fca6ff40f280"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): python/src/dataset.rs:2352-2358 | python/src/dataset.rs:2372-2378 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":2352}}}],"partialFingerprints":{"codehealthFindingId/v1":"21c0c2879e28a8a9fffe03ecfa30a8b7fe12e9b06f3e4697be6edefaac683087"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): python/src/dataset.rs:2505-2511 | python/src/dataset.rs:2557-2563 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/dataset.rs"},"region":{"startLine":2505}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a2f14a34bd5adaf6bb96a8c79174ade9abc9dfafdaf0a932357f292abf39366"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): python/src/namespace.rs:463-469 | python/src/namespace.rs:1163-1169 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"835d585fea4574bf99773dc9d681f11a430d95e8d1aee95fa82b888c428f4518"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:210-215 | python/src/namespace.rs:910-915 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbf32500a73174f6dcf0641b85cb125dbb4c30656122ae127bed9e746217795d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:222-227 | python/src/namespace.rs:922-927 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"e07a3b5dd2d74e571828c3c1f5abffa1bd078551f6c3243c8a07d03778795866"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:244-249 | python/src/namespace.rs:944-949 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc4a206019dd8cdb8796ca651661f93cf04d864f093b918cd25407648a9d20fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:256-261 | python/src/namespace.rs:956-961 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"28cc676cee4a27c51c5da0e1b9e9e87f44a0bcc560bdb973ed5665e16cb475f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:268-273 | python/src/namespace.rs:968-973 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2e2a366d2a7ab358581278f3d15c07902e2bf4b4f5af6a733682de01403d754"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:288-293 | python/src/namespace.rs:988-993 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"b57ec5f4a0203e2af5acfba85046c3d0f32c671f46e075157ed489793cf92715"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:300-305 | python/src/namespace.rs:1000-1005 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"0426c895a4281c905c9d09c8f261dcbbee84e6b852034ba60925e979814493f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:352-357 | python/src/namespace.rs:1052-1057 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"791193a5fb8d353d1c0f78c7b083d99bcd1e659a8f24f96fda9b7f01c73e9dde"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:364-369 | python/src/namespace.rs:1064-1069 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e1f773beaefc4acd4ab2b28fb157a14284f173a7ced0590e895dea6752144b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:376-381 | python/src/namespace.rs:1076-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":"python/src/namespace.rs"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea8134518d381f97359e1ba04edc9c1b247ad91a8604de32da508f7b1c703f94"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:388-393 | python/src/namespace.rs:1088-1093 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8db93cb82afbcdc9e38d05fcc0c5ac2cb7790c1afaba8ebb872c8e8d883aabf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:402-407 | python/src/namespace.rs:1102-1107 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b825e7a8f1a69acbd23d15836a37bfa0661c51bdaaeb79e95b9d16689c9ee74"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:414-419 | python/src/namespace.rs:1114-1119 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"8093e8eed1c90eecedf8d00d0ffb94ca54cbc490f96d3ac13e82a3e0a2ea75e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:426-431 | python/src/namespace.rs:1126-1131 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b73c455f0ddce135a33e7fb9dabc88f9be04b7028eaf8cbbb19857b44207d03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:476-481 | python/src/namespace.rs:1176-1181 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2a8a3b0023ca98756611717b729bef4a3c891e921a8cefd1ce6ff8227b2acf9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:488-493 | python/src/namespace.rs:1188-1193 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf868f2d77b2de24f8e0edcd18b9be8f5556e1d574b975c78b9974aeb902cabc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:514-519 | python/src/namespace.rs:1214-1219 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ea2dbbc1f7f25470eab830a761f292fbeb3cf964772c717777d82a835551bf7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:526-531 | python/src/namespace.rs:1226-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":"python/src/namespace.rs"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa2fc25a9a2c6ca8894e676856f5eff0382fb069aa4a555f9d1847c5ced6b0a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:538-543 | python/src/namespace.rs:1238-1243 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e0144058e160cadca326bbeaa12b269ec04478c87e21dd467a69ffdaf89510"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:552-557 | python/src/namespace.rs:1252-1257 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"40753109ad3913893e38ffc44ba14373bce807506cf66f14783b7ad274afa5fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:564-569 | python/src/namespace.rs:1264-1269 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"633e78091d49030dc7faabb6e7cd9de540efb36c20a5da86e4735c95d813f492"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:578-583 | python/src/namespace.rs:1278-1283 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"364963869356e9c0ae00e303e18fb169ba0bd52767b517af35bb0bdab176d392"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:590-595 | python/src/namespace.rs:1290-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":"python/src/namespace.rs"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"34adc1f9cbdc8aa4f6503ae1d0933582e17a046d3ce19c1e7247b49cb94c0ad7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:604-609 | python/src/namespace.rs:1304-1309 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":604}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1ce1a1110480e58ca7595cb365b257f5d18350b26fa11b23b3807dcfb9fe2b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:616-621 | python/src/namespace.rs:1316-1321 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6cf44a6afc2c1c1532b477e0a8ddc3d96c3eeee7ff74860a2d172f32dca48f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:628-633 | python/src/namespace.rs:1328-1333 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"8059b485950e460df031edfd3296d23c6221df90724c5a18baeffe235b82514f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:640-645 | python/src/namespace.rs:1340-1345 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"c83b9e9437c00fa1be460d9d2d0b0cf3cc8a0abd46b54a271cc9acef9fdf6955"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:672-677 | python/src/namespace.rs:1372-1377 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa4192f6902851ac285ea6302765eab89a1148f7f711ed6cf06dc36a7fbe07fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:684-689 | python/src/namespace.rs:1384-1389 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"96cf009e9472697bb6bd862be0706846b38d7c078bebdd04f6a0852c78d8ec76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:696-701 | python/src/namespace.rs:1396-1401 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f58e659df3ae2444943b2a8deb0dc26f3152e45d58330fbe0d8b9115d573d26"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:708-713 | python/src/namespace.rs:1408-1413 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"f99e5b74afdfd34e0b0e0bb8e2742a1487b8847abc7df88810a827ddc2457ff4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:720-725 | python/src/namespace.rs:1420-1425 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"e425fc2bf1d4b57fb3941d0a27ede6ce4973f12fd463c31cfc287d14c41df707"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:732-737 | python/src/namespace.rs:1432-1437 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":732}}}],"partialFingerprints":{"codehealthFindingId/v1":"38df32c603635a818f27a386007575b93c91dff985985c4c939ee894d6a1e53a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:746-751 | python/src/namespace.rs:1446-1451 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"85aa3ad7c04257c73f1de5e64ddf24e20f7c4a5e60477e741dfa106a612ac2a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:758-763 | python/src/namespace.rs:1458-1463 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c3c289712d1d82899cb121ecfa07049dcd3c1c922ae379c566cd453109b11c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:770-775 | python/src/namespace.rs:1470-1475 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e47c2e1911bf527db2ee8b16b62fadebf0cd0b397b3b484960c720ab5552e59"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:782-787 | python/src/namespace.rs:1482-1487 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0d2e473a2458d0f473e2bc7928a09b50afb76c41cdd67639b59c95bef699d6f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): python/src/namespace.rs:794-799 | python/src/namespace.rs:1494-1499 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/namespace.rs"},"region":{"startLine":794}}}],"partialFingerprints":{"codehealthFindingId/v1":"12ddf7ce8cb6a137fde74d5a2417fd25c1181ce6701c8595858c26ab661935e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance/src/bin/fm_contains_bench.rs:211-215 | rust/lance/src/bin/fm_index_tool.rs:65-69 \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":"rust/lance/src/bin/fm_contains_bench.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"679575802bf1573f1eb2d90957b84bd864b5d97edbcb2af816063ac10aa73342"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance/src/dataset/mem_wal/index/arena_skiplist.rs:379-383 | rust/lance/src/dataset/mem_wal/index/arena_skiplist.rs:396-400 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/index/arena_skiplist.rs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"83e0c265c63f2a2279b5c2d67906fc98345a065fe2353c55b98c9aba75547384"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs:851-855 | rust/lance/src/dataset/mem_wal/scanner/projection.rs:273-277 \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":"rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"14024ba18f356b9fb090dc71ae71da1c66a951725ed5a04422a0cc60d9a0dc96"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance/src/dataset/scanner.rs:7532-7536 | rust/lance/src/dataset/scanner.rs:7543-7547 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":7532}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbf1d57ef64beb02f8d0714f4f12e8d18ec7a91cb811e4b2e47c740473b4b542"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance/src/index/vector/ivf.rs:3791-3795 | rust/lance/src/index/vector/ivf.rs:3842-3846 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":3791}}}],"partialFingerprints":{"codehealthFindingId/v1":"0071821bb4c6c06d2cf3023ef172f3c427e930764e59c6ec865beb2e6ae1208b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-arrow/src/json.rs:626-632 | rust/lance-arrow/src/json.rs:656-662 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-arrow/src/json.rs"},"region":{"startLine":626}}}],"partialFingerprints":{"codehealthFindingId/v1":"356871771401443ff7ecb7d1e92da0fe7f4b0d03a37594d7ba524c3e545f8d40"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): rust/lance-datafusion/src/expr.rs:126-130 | rust/lance-datafusion/src/expr.rs:152-156 | rust/lance-datafusion/src/expr.rs:180-184 \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":"rust/lance-datafusion/src/expr.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cbe4443a71c586c3a390aa0ceec7c845a7a006ef6cbaf39fb7a308be9aa8c7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): rust/lance-datafusion/src/expr.rs:139-145 | rust/lance-datafusion/src/expr.rs:165-171 | rust/lance-datafusion/src/expr.rs:256-262 | rust/lance-datafusion/src/expr.rs:278-284 \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":"rust/lance-datafusion/src/expr.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9690943d138767d82991d9c74ba2d3bd4afccd1e9454317e5ab12a5f023a9d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 5): rust/lance-datafusion/src/expr.rs:173-178 | rust/lance-datafusion/src/expr.rs:204-209 | rust/lance-datafusion/src/expr.rs:264-269 | rust/lance-datafusion/src/expr.rs:286-291 | rust/lance-datafusion/src/expr.rs:313-318 \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":"rust/lance-datafusion/src/expr.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f03f7280e61bf4b6f8f50ff42b4fadc645a46665f806a0f9b9d413b2a7ff658"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): rust/lance-datafusion/src/expr.rs:196-200 | rust/lance-datafusion/src/expr.rs:227-231 | rust/lance-datafusion/src/expr.rs:305-309 | rust/lance-datafusion/src/expr.rs:336-340 \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":"rust/lance-datafusion/src/expr.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f04e0ccd4044aae4d952d641c9f99640cebe83c9288c1898327ac3f88bfe58a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-file/src/versions/v1/encoding/binary.rs:422-428 | rust/lance-file/src/versions/v1/encoding/plain.rs:433-439 \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":"rust/lance-file/src/versions/v1/encoding/binary.rs"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d32161fa9d20329cf240a1f1ae500d42e800e70930b688ad6e05455f8c2bf9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): rust/lance-file/src/versions/v1/writer/mod.rs:419-424 | rust/lance-file/src/versions/v1/writer/mod.rs:436-441 | rust/lance-file/src/versions/v1/writer/mod.rs:455-460 \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":"rust/lance-file/src/versions/v1/writer/mod.rs"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"bae2b12d409028378f0926e411ab663c419409ce77ee7a8418b86dfaaf182cc9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/scalar/bloomfilter.rs:126-131 | rust/lance-index/src/scalar/btree.rs:2075-2080 \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":"rust/lance-index/src/scalar/bloomfilter.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"37bca0ab88584db596b7bc48b42f5fc92c2217537b200b5c6beefeacf909d4fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-index/src/scalar/inverted/index/partition.rs:838-843 | rust/lance-index/src/scalar/inverted/index/partition.rs:876-881 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted/index/partition.rs"},"region":{"startLine":838}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf8a319fec65f23ca6f074cd219eb7f46c0e6cdb90086f94f5631bc4537c3346"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): rust/lance-index/src/scalar/label_list.rs:304-310 | rust/lance-index/src/scalar/label_list.rs:312-318 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/label_list.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"73940ce088de27d3b142adf10c5a1cd4a16b90bedb7ffb5c9970ca73de9124cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-index/src/vector/bq/pairwise.rs:626-630 | rust/lance-index/src/vector/bq/pairwise.rs:712-716 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/pairwise.rs"},"region":{"startLine":626}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d3b442c9e3177f070548ad71751c9e58f40401a5fc6f2a792f2b9d2c57fbfa2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): rust/lance-index/src/vector/pq/pairwise.rs:463-467 | rust/lance-index/src/vector/pq/pairwise.rs:517-521 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/pq/pairwise.rs"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"933027933840f5c5951417f3309f0b957f44bbbe5b675b73c745629c8d4754c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/distance/cosine.rs:1076-1081 | rust/lance-linalg/src/distance/cosine.rs:1280-1285 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1076}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7526e990348a448e280c51c32b2a5da382c2b466cd42ccaa48b946bd80dae48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/distance/cosine.rs:1085-1090 | rust/lance-linalg/src/distance/cosine.rs:1291-1296 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1085}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd1022dc2b85dfa4df05373fe304364808714d8cbbc234845744c0f044dc2db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): rust/lance-linalg/src/simd/dist_table.rs:199-203 | rust/lance-linalg/src/simd/dist_table.rs:425-429 | rust/lance-linalg/src/simd/dist_table.rs:465-469 \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":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c168314a3c631f237deae6ba7512293801ed4601fe5730922c70c747605ed8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): rust/lance-linalg/src/simd/dist_table.rs:616-621 | rust/lance-linalg/src/simd/dist_table.rs:625-630 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"233442ff26cd486c505a1abe6a265e7b399b235c3e98c0fabf38ff81c6868046"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (46 lines \u00D7 2): java/src/main/java/org/lance/namespace/DirectoryNamespace.java:875-920 | java/src/main/java/org/lance/namespace/RestNamespace.java:782-827 \u2014 before extracting anything, compare \u0060java/src/main/java/org/lance/namespace/DirectoryNamespace.java\u0060 and \u0060java/src/main/java/org/lance/namespace/RestNamespace.java\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 100 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. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/namespace/DirectoryNamespace.java"},"region":{"startLine":875}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f56e813877e1598bd522748fdf203d54a43885cba6ac4cfc3c5acd301e1a63c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): java/src/main/java/org/lance/ipc/AsyncScanner.java:70-93 | java/src/main/java/org/lance/ipc/LanceScanner.java:66-89 \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. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u0060java/src/main/java/org/lance/ipc/LanceScanner.java:90\u0060 calls \u0060isCollectStats\u0060 and \u0060java/src/main/java/org/lance/ipc/AsyncScanner.java:94\u0060 does not \u2014 after which the two agree again for 4 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":"java/src/main/java/org/lance/ipc/AsyncScanner.java"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad0192a49f0e13d12ffee49fa2c81bb2fbcd99de9f1266d5cf47d2b35740a54f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): java/src/main/java/org/lance/Fragment.java:327-342 | java/src/main/java/org/lance/Fragment.java:350-365 | java/src/main/java/org/lance/Fragment.java:401-416 | java/src/main/java/org/lance/Fragment.java:423-438 \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":"java/src/main/java/org/lance/Fragment.java"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f868014f34f943eb464ab46d449c7a7336ff16ec229daa06d23e11b1678d3ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): java/src/main/java/org/lance/Dataset.java:161-175 | java/src/main/java/org/lance/Dataset.java:303-317 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/Dataset.java"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"84ec71b3ef9a89def65baf23967b2d2508b8c254da51a3d3e7a30cbdddde9c32"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): java/src/main/java/org/lance/WriteDatasetBuilder.java:491-505 | java/src/main/java/org/lance/WriteDatasetBuilder.java:530-543 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060java/src/main/java/org/lance/WriteDatasetBuilder.java:491\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/WriteDatasetBuilder.java"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"798d682dce977a185446d600869ceb6c8d4b5af9f6a7204b944414e8819b56f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): java/src/main/java/org/lance/compaction/Compaction.java:38-51 | java/src/main/java/org/lance/compaction/Compaction.java:64-77 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/compaction/Compaction.java"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"06bfbef31b076bbbe314d0f2d8a81efca53a2ecc37eb241dfe67ce17c4a11cb5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): java/src/main/java/org/lance/namespace/DirectoryNamespace.java:279-292 | java/src/main/java/org/lance/namespace/RestNamespace.java:193-206 \u2014 before extracting anything, compare \u0060java/src/main/java/org/lance/namespace/DirectoryNamespace.java\u0060 and \u0060java/src/main/java/org/lance/namespace/RestNamespace.java\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 100 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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060java/src/main/java/org/lance/namespace/DirectoryNamespace.java:279\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/namespace/DirectoryNamespace.java"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"07a0291f3ffb3f95ffdad1fd5cae7cdf39cef7f3dad5e690929f0aa33d3c723e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): java/src/main/java/org/lance/memwal/ShardingEvaluator.java:52-64 | java/src/main/java/org/lance/memwal/ShardingEvaluator.java:82-94 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060java/src/main/java/org/lance/memwal/ShardingEvaluator.java:52\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/memwal/ShardingEvaluator.java"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"eca906a70fdf440f531c8243044d8e0479f73e5a14c759aa957ee3ef1af9d834"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): java/src/main/java/org/lance/Dataset.java:870-881 | java/src/main/java/org/lance/Dataset.java:899-910 | java/src/main/java/org/lance/Dataset.java:949-960 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060java/src/main/java/org/lance/Dataset.java:870\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/Dataset.java"},"region":{"startLine":870}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f3c967f5f00c838500b534a6ef56462d868b9f9c215268e5007abd6d49be005"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): java/src/main/java/org/lance/OpenDatasetBuilder.java:176-186 | java/src/main/java/org/lance/WriteDatasetBuilder.java:395-404 \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 \u0060java/src/main/java/org/lance/OpenDatasetBuilder.java:176\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/OpenDatasetBuilder.java"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"82d06b20355ae1d8e0a5ea5c6e6cb59c60009d22ac8c39a7b1a660f64c31e210"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): java/src/main/java/org/lance/Dataset.java:1253-1260 | java/src/main/java/org/lance/Dataset.java:1264-1271 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/Dataset.java"},"region":{"startLine":1253}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1314751ba473431ecab6711c8e5c18e537de02dc75c80828513c715b6338a60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): java/src/main/java/org/lance/namespace/DirectoryNamespace.java:925-931 | java/src/main/java/org/lance/namespace/RestNamespace.java:832-838 \u2014 before extracting anything, compare \u0060java/src/main/java/org/lance/namespace/DirectoryNamespace.java\u0060 and \u0060java/src/main/java/org/lance/namespace/RestNamespace.java\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 100 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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060java/src/main/java/org/lance/namespace/DirectoryNamespace.java:925\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/namespace/DirectoryNamespace.java"},"region":{"startLine":925}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7d3d37216259e1186207b91c267f6f0aadad79730937d78b9b7e85a897128f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): java/src/main/java/org/lance/operation/UpdateConfig.java:146-152 | java/src/main/java/org/lance/operation/UpdateConfig.java:384-390 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060java/src/main/java/org/lance/operation/UpdateConfig.java:146\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just after the matched lines, \u0060java/src/main/java/org/lance/operation/UpdateConfig.java:155\u0060 calls \u0060configUpdates\u0060 and \u0060java/src/main/java/org/lance/operation/UpdateConfig.java:391\u0060 does not \u2014 after which the two agree again for 2 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":"java/src/main/java/org/lance/operation/UpdateConfig.java"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee97b1396ddccf18faeebb628845f93d525b57662009b3f5f00a94a796566ede"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): java/src/main/java/org/lance/Dataset.java:1492-1497 | java/src/main/java/org/lance/Dataset.java:1988-1993 | java/src/main/java/org/lance/Dataset.java:2030-2035 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060java/src/main/java/org/lance/Dataset.java:1492\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/Dataset.java"},"region":{"startLine":1492}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0d56a2b8f5976ed8e423fb4c399a46d3ee149e032da089cfe7ad291e371feb7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): java/src/main/java/org/lance/index/vector/VectorTrainer.java:63-68 | java/src/main/java/org/lance/index/vector/VectorTrainer.java:99-104 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060java/src/main/java/org/lance/index/vector/VectorTrainer.java:63\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note first that the copies are not typed on the same thing: the declarations holding them bind \u0060params\u0060 to \u0060IvfBuildParams\u0060 in one and \u0060PQBuildParams\u0060 in another, and the duplicated lines use it. The extracted unit therefore needs a parameter type that fits BOTH \u2014 their common supertype where they have one, or a new abstraction over them where they do not \u2014 and settling that is the step that comes BEFORE the extraction above. Where the two types are deliberately unrelated, the duplication is the price of that separation and the honest resolution is to record the decision rather than to extract."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/index/vector/VectorTrainer.java"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d7619d4ec02137256b1aff531f9b9add6e5d15e1a2b377434ee5811a2d4e88f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): java/src/main/java/org/lance/operation/UpdateConfig.java:187-192 | java/src/main/java/org/lance/operation/UpdateConfig.java:224-229 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060java/src/main/java/org/lance/operation/UpdateConfig.java:187\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/operation/UpdateConfig.java"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"55d25e61392098d0dcd553f37456884b4976f385ecb6fb84d382c812bbd331aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): java/src/main/java/org/lance/memwal/ShardWriter.java:93-97 | java/src/main/java/org/lance/memwal/ShardWriter.java:121-125 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060java/src/main/java/org/lance/memwal/ShardWriter.java:93\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/memwal/ShardWriter.java"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"63a73193e6da4b7fc91db4621058eaedc6d63c754f7460435a3a4b7be4f00836"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): java/src/main/java/org/lance/namespace/DirectoryNamespace.java:745-751 | java/src/main/java/org/lance/namespace/RestNamespace.java:652-658 \u2014 before extracting anything, compare \u0060java/src/main/java/org/lance/namespace/DirectoryNamespace.java\u0060 and \u0060java/src/main/java/org/lance/namespace/RestNamespace.java\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 100 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":"java/src/main/java/org/lance/namespace/DirectoryNamespace.java"},"region":{"startLine":745}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a219fb3941eaeb75fad789804c508a25d03406ceb70d7771578621ff7a78dce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): java/src/main/java/org/lance/SourcedTransaction.java:131-138 | java/src/main/java/org/lance/Transaction.java:160-167 \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. 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":"java/src/main/java/org/lance/SourcedTransaction.java"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb2ca3e19a79fa59f0b8564b35b96b32ae2fdbd546b298c970acd7a6f294abb2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 7): java/src/main/java/org/lance/delta/DatasetDelta.java:113-120 | java/src/main/java/org/lance/ipc/LanceScanner.java:136-143 | java/src/main/java/org/lance/memwal/ExecutionPlan.java:98-105 | java/src/main/java/org/lance/memwal/LsmPointLookupPlanner.java:109-116 | java/src/main/java/org/lance/memwal/LsmScanner.java:182-189 | java/src/main/java/org/lance/memwal/LsmVectorSearchPlanner.java:221-228 | java/src/main/java/org/lance/memwal/ShardWriter.java:184-191 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 7 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 7 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/delta/DatasetDelta.java"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3bf0dc40e32982ec76a50c0a2c50dd75a9eee86f297eee89307c659478ffb29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 25): java/src/main/java/org/lance/Dataset.java:997-1002 | java/src/main/java/org/lance/Dataset.java:1020-1025 | java/src/main/java/org/lance/Dataset.java:1034-1039 | java/src/main/java/org/lance/Dataset.java:1051-1056 | java/src/main/java/org/lance/Dataset.java:1063-1068 | java/src/main/java/org/lance/Dataset.java:1080-1085 | java/src/main/java/org/lance/Dataset.java:1099-1104 | java/src/main/java/org/lance/Dataset.java:1550-1555 | java/src/main/java/org/lance/Dataset.java:1569-1574 | java/src/main/java/org/lance/Dataset.java:1600-1605 | java/src/main/java/org/lance/Dataset.java:1641-1646 | java/src/main/java/org/lance/Dataset.java:1655-1660 | java/src/main/java/org/lance/Dataset.java:1740-1745 | java/src/main/java/org/lance/Dataset.java:1757-1762 | java/src/main/java/org/lance/Dataset.java:1789-1794 | java/src/main/java/org/lance/Dataset.java:2144-2149 | java/src/main/java/org/lance/Dataset.java:2248-2253 | java/src/main/java/org/lance/Dataset.java:2289-2294 | java/src/main/java/org/lance/delta/DatasetDelta.java:57-62 | java/src/main/java/org/lance/ipc/LanceScanner.java:251-256 | java/src/main/java/org/lance/memwal/ExecutionPlan.java:71-76 | java/src/main/java/org/lance/memwal/LsmScanner.java:168-173 | java/src/main/java/org/lance/memwal/ShardWriter.java:78-83 | java/src/main/java/org/lance/memwal/ShardWriter.java:134-139 | java/src/main/java/org/lance/memwal/ShardWriter.java:144-149 \u2014 there are 25 copies across 6 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 25 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/Dataset.java"},"region":{"startLine":997}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dff38915ade4cb726d08057a09881a8d000c1d412e3878252c4e9866ed51282"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): java/src/main/java/org/lance/fragment/RowIdMeta.java:55-64 | java/src/main/java/org/lance/fragment/VersionMeta.java:42-51 \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. 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":"java/src/main/java/org/lance/fragment/RowIdMeta.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"13299b457de9747da2a376767123897c8dc977b438ac3d021290bd7288b9ab72"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): java/src/main/java/org/lance/Dataset.java:1614-1619 | java/src/main/java/org/lance/Dataset.java:1773-1778 | java/src/main/java/org/lance/Dataset.java:2446-2451 | java/src/main/java/org/lance/ipc/LanceScanner.java:267-272 \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":"java/src/main/java/org/lance/Dataset.java"},"region":{"startLine":1614}}}],"partialFingerprints":{"codehealthFindingId/v1":"40ea928541d769b0ec9232cd8177ac794a9d93c744aa613bdbc0e63aaf420387"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 74): java/src/main/java/org/lance/namespace/DirectoryNamespace.java:306-311 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:314-319 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:322-327 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:330-335 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:346-351 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:354-359 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:362-367 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:378-383 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:386-391 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:411-416 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:419-424 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:447-452 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:455-460 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:471-476 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:479-484 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:488-494 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:497-502 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:505-510 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:515-520 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:523-528 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:531-536 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:540-546 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:549-554 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:557-562 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:565-570 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:573-578 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:582-588 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:591-596 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:613-618 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:622-627 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:630-635 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:638-643 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:646-651 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:654-659 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:662-667 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:670-675 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:679-684 | java/src/main/java/org/lance/namespace/RestNamespace.java:220-225 | java/src/main/java/org/lance/namespace/RestNamespace.java:228-233 | java/src/main/java/org/lance/namespace/RestNamespace.java:236-241 | java/src/main/java/org/lance/namespace/RestNamespace.java:244-249 | java/src/main/java/org/lance/namespace/RestNamespace.java:260-265 | java/src/main/java/org/lance/namespace/RestNamespace.java:268-273 | java/src/main/java/org/lance/namespace/RestNamespace.java:276-281 | java/src/main/java/org/lance/namespace/RestNamespace.java:292-297 | java/src/main/java/org/lance/namespace/RestNamespace.java:300-305 | java/src/main/java/org/lance/namespace/RestNamespace.java:324-329 | java/src/main/java/org/lance/namespace/RestNamespace.java:332-337 | java/src/main/java/org/lance/namespace/RestNamespace.java:360-365 | java/src/main/java/org/lance/namespace/RestNamespace.java:368-373 | java/src/main/java/org/lance/namespace/RestNamespace.java:384-389 | java/src/main/java/org/lance/namespace/RestNamespace.java:392-397 | java/src/main/java/org/lance/namespace/RestNamespace.java:401-406 | java/src/main/java/org/lance/namespace/RestNamespace.java:409-414 | java/src/main/java/org/lance/namespace/RestNamespace.java:417-422 | java/src/main/java/org/lance/namespace/RestNamespace.java:425-430 | java/src/main/java/org/lance/namespace/RestNamespace.java:433-438 | java/src/main/java/org/lance/namespace/RestNamespace.java:441-446 | java/src/main/java/org/lance/namespace/RestNamespace.java:450-455 | java/src/main/java/org/lance/namespace/RestNamespace.java:458-463 | java/src/main/java/org/lance/namespace/RestNamespace.java:466-471 | java/src/main/java/org/lance/namespace/RestNamespace.java:474-479 | java/src/main/java/org/lance/namespace/RestNamespace.java:482-487 | java/src/main/java/org/lance/namespace/RestNamespace.java:491-496 | java/src/main/java/org/lance/namespace/RestNamespace.java:499-504 | java/src/main/java/org/lance/namespace/RestNamespace.java:521-526 | java/src/main/java/org/lance/namespace/RestNamespace.java:530-535 | java/src/main/java/org/lance/namespace/RestNamespace.java:538-543 | java/src/main/java/org/lance/namespace/RestNamespace.java:546-551 | java/src/main/java/org/lance/namespace/RestNamespace.java:554-559 | java/src/main/java/org/lance/namespace/RestNamespace.java:562-567 | java/src/main/java/org/lance/namespace/RestNamespace.java:570-575 | java/src/main/java/org/lance/namespace/RestNamespace.java:578-583 | java/src/main/java/org/lance/namespace/RestNamespace.java:587-592 \u2014 before extracting anything, compare \u0060java/src/main/java/org/lance/namespace/DirectoryNamespace.java\u0060 and \u0060java/src/main/java/org/lance/namespace/RestNamespace.java\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 100 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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060java/src/main/java/org/lance/namespace/DirectoryNamespace.java:488\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it. 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. Note first that the copies are not typed on the same thing: the declarations holding them bind \u0060request\u0060 to \u0060ListNamespacesRequest\u0060 in one and \u0060DescribeNamespaceRequest\u0060 in another, and the duplicated lines use it. The extracted unit therefore needs a parameter type that fits BOTH \u2014 their common supertype where they have one, or a new abstraction over them where they do not \u2014 and settling that is the step that comes BEFORE the extraction above. Where the two types are deliberately unrelated, the duplication is the price of that separation and the honest resolution is to record the decision rather than to extract."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/namespace/DirectoryNamespace.java"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc724fff41c4617bfe1bd9f85566c2d09833fa5b269b25355509454ed7f8158"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): java/src/main/java/org/lance/namespace/DirectoryNamespace.java:394-399 | java/src/main/java/org/lance/namespace/RestNamespace.java:308-313 \u2014 before extracting anything, compare \u0060java/src/main/java/org/lance/namespace/DirectoryNamespace.java\u0060 and \u0060java/src/main/java/org/lance/namespace/RestNamespace.java\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 100 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. 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":"java/src/main/java/org/lance/namespace/DirectoryNamespace.java"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"30b757b119ed2fd6c3e240ec1bb48e4fdfefbebf5402b7268edcdda319a17d6c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 6): java/src/main/java/org/lance/namespace/DirectoryNamespace.java:402-408 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:428-434 | java/src/main/java/org/lance/namespace/DirectoryNamespace.java:438-444 | java/src/main/java/org/lance/namespace/RestNamespace.java:316-321 | java/src/main/java/org/lance/namespace/RestNamespace.java:341-347 | java/src/main/java/org/lance/namespace/RestNamespace.java:351-357 \u2014 before extracting anything, compare \u0060java/src/main/java/org/lance/namespace/DirectoryNamespace.java\u0060 and \u0060java/src/main/java/org/lance/namespace/RestNamespace.java\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 100 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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060java/src/main/java/org/lance/namespace/DirectoryNamespace.java:428\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it. 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. Note first that the copies are not typed on the same thing: the declarations holding them bind \u0060request\u0060 to \u0060CreateTableRequest\u0060 in one and \u0060InsertIntoTableRequest\u0060 in another, and the duplicated lines use it. The extracted unit therefore needs a parameter type that fits BOTH \u2014 their common supertype where they have one, or a new abstraction over them where they do not \u2014 and settling that is the step that comes BEFORE the extraction above. Where the two types are deliberately unrelated, the duplication is the price of that separation and the honest resolution is to record the decision rather than to extract."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/main/java/org/lance/namespace/DirectoryNamespace.java"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e76a8ddca46ec0138f512c15324a074e2b7f27466ba649a13ef43710465c247"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): java/src/main/java/org/lance/namespace/DirectoryNamespace.java:463-468 | java/src/main/java/org/lance/namespace/RestNamespace.java:376-381 \u2014 before extracting anything, compare \u0060java/src/main/java/org/lance/namespace/DirectoryNamespace.java\u0060 and \u0060java/src/main/java/org/lance/namespace/RestNamespace.java\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 100 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. 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":"java/src/main/java/org/lance/namespace/DirectoryNamespace.java"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd988f3650ced68fd8b5c3419f2d1c6a1c19c8a383550ecb4c2796865c65b052"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (74\u2013120 lines \u00D7 2): python/python/lance/dataset.py:4903-5022 | python/python/lance/dataset.py:5106-5179 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/dataset.py"},"region":{"startLine":4903}}}],"partialFingerprints":{"codehealthFindingId/v1":"50a0230ab9c098d865b246536ffd9697e90e16cde783eeba165b3926a14b6315"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201339 lines \u00D7 2): python/python/lance/vector.py:438-476 | python/python/lance/vector.py:644-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060python/python/lance/vector.py:438\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/vector.py"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7e6ac938813d380b6433a14e0b6473f7af38187873a8803a3b4c4f84a74a150"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 3): python/python/lance/dataset.py:1635-1757 | python/python/lance/dataset.py:1797-1826 | python/python/lance/dataset.py:2214-2238 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060python/python/lance/dataset.py:1635\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":"python/python/lance/dataset.py"},"region":{"startLine":1635}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d20da62fca9ef1d14b1548138e3e69c249984f5a811449e3645bdcb7df2f51b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 2): ci/new_contributors.py:159-180 | ci/review_stats.py:112-132 \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. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ci/new_contributors.py"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6f8da275da5a95a782e0ec34e99c3b1f57bbe105c7aa2156f644a6e171497a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201317 lines \u00D7 2): python/python/lance/vector.py:562-575 | python/python/lance/vector.py:744-760 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060python/python/lance/vector.py:562\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/vector.py"},"region":{"startLine":562}}}],"partialFingerprints":{"codehealthFindingId/v1":"84dbd8e3f6e57d6448e61627e92e1b03bacdecf224635e5ae74dca5705c1c714"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): python/python/lance/dataset.py:4568-4583 | python/python/lance/dataset.py:4713-4728 | python/python/lance/fragment.py:1427-1442 \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":"python/python/lance/dataset.py"},"region":{"startLine":4568}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d1071087be18f88c39ce561413b22231ae6a2e95c99dde72c993856b1f0778d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): python/python/lance/dataset.py:5663-5677 | python/python/lance/fragment.py:1434-1448 \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 \u0060python/python/lance/dataset.py:5663\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/dataset.py"},"region":{"startLine":5663}}}],"partialFingerprints":{"codehealthFindingId/v1":"587de8651d762b39eae4c986299b8c4883a5e99fcca078914f05799f4de192e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 5): python/python/lance/dataset.py:1744-1757 | python/python/lance/dataset.py:1813-1826 | python/python/lance/dataset.py:2225-2238 | python/python/lance/fragment.py:707-720 | python/python/lance/fragment.py:745-758 \u2014 there are 5 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 5 sites; resolving a subset leaves the remainder to drift apart. Read the line range as the matched WINDOW rather than a finished unit: at \u0060python/python/lance/dataset.py:1744\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":"python/python/lance/dataset.py"},"region":{"startLine":1744}}}],"partialFingerprints":{"codehealthFindingId/v1":"00d09e9c3c7316974561527c983c41d38fcab4e8aa02c51179cbadeccc072237"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): ci/new_contributors.py:30-37 | ci/review_stats.py:22-29 \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. 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":"ci/new_contributors.py"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"86e990c466f9190ecc285c265d79ba4dfc4bd43a7e180ff82b22605fb871193f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): ci/new_contributors.py:41-47 | ci/review_stats.py:33-39 \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. Note first that the copies are not typed on the same thing: the declarations holding them bind \u0060cache\u0060 to \u0060dict[str, str]\u0060 in one and \u0060dict\u0060 in another, and the duplicated lines use it. The extracted unit therefore needs a parameter type that fits BOTH \u2014 their common supertype where they have one, or a new abstraction over them where they do not \u2014 and settling that is the step that comes BEFORE the extraction above. Where the two types are deliberately unrelated, the duplication is the price of that separation and the honest resolution is to record the decision rather than to extract."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"ci/new_contributors.py"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"de10fa8b15b4e8963424e89f49ecd7326f3a5a3e76cff1ceaad2e22de2c07d16"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): memtest/python/memtest/__init__.py:170-182 | python/python/ci_benchmarks/benchmark.py:64-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. 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":"memtest/python/memtest/__init__.py"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"1859f685b029112f5c116b4e21b7a3dfe4603f2e7bbaf9028b8ba09d67f7c3d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): rust/lance/benches/mem_wal/vector/hnsw/disk_ann_compare.py:244-255 | rust/lance/benches/mem_wal/vector/hnsw/disk_ann_compare.py:272-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. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just before the matched lines, \u0060rust/lance/benches/mem_wal/vector/hnsw/disk_ann_compare.py:271\u0060 calls \u0060train\u0060 and \u0060rust/lance/benches/mem_wal/vector/hnsw/disk_ann_compare.py:243\u0060 does not \u2014 after which the two agree again for 2 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":"rust/lance/benches/mem_wal/vector/hnsw/disk_ann_compare.py"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bc55d7441bd9026a28d97ed3f84f22df649e17012b188fb68666977d8f875db"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: fsst: fsst: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 1 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"42f70b8319dfc304d9907d8b46ba6f264f5a284770b93d0c14836fd992479448"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: lance-arrow-scalar: lance-arrow-scalar: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 1 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e283bf143a3edc2217c54ac09f35f512f67873e9522329f18f31f3983b7ccfe1"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: lance-datagen: lance-datagen: abstractness 0.05, instability 0.00, distance 0.95 \u2014 zone of pain \u2014 concrete and depended on by 2 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6ffad03b2777ed6ae78dd1897126eddc6cfd259fb71830977d410d72d50066c8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Dataset (LCOM4 16): Dataset\u0027s methods fall into 16 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 16 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":"rust/lance/src/dataset.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9cfe09b0e8c85a5cdc13c272cbf8f398fd258adaa8334f251a8837ea82007e6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FilteredReadOptions (LCOM4 11): FilteredReadOptions\u0027s methods fall into 11 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 11 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":1729}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd275f119d2984a0b27d26b4f6ba55b3aeec89d61176bec27c513501d21d808"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RowAddrTreeMap (LCOM4 8): RowAddrTreeMap\u0027s methods fall into 8 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 8 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":"rust/lance-select/src/mask.rs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2575fd684d2baa890173ce5cfad3ab51766277b8ee699f061c2a2cf1ab5b5d7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MatchQuery (LCOM4 7): MatchQuery\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":"rust/lance-index/src/scalar/inverted/query.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba2e0a949368da46300c702b070bedfd0456e61b7221ae2ab2730af0051ee0b2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RowIdSequence (LCOM4 4): RowIdSequence\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":"rust/lance-table/src/rowids.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd87b98d8e128beb343bbdf256d4204baa934ceefb697b8e9e9f759dc84c7ab0"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: python/python/lance/dataset.py: python/python/lance/dataset.py changed 71 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 78 in LanceDataset._create_index_impl at line 3924. 26 of those changes were fix/bug commits, and the other 45 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- python/python/lance/dataset.py\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":"python/python/lance/dataset.py"},"region":{"startLine":3924}}}],"partialFingerprints":{"codehealthFindingId/v1":"88e467f913e2050426e1aafd667ae92d332cb5b28a0a885c5f6ca7b4c39702bd"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-index/src/scalar/inverted/wand.rs: rust/lance-index/src/scalar/inverted/wand.rs changed 25 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 139 in Wand::and_bulk_search at line 4083. 4 of those changes were fix/bug commits, and the other 21 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-index/src/scalar/inverted/wand.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":"rust/lance-index/src/scalar/inverted/wand.rs"},"region":{"startLine":4083}}}],"partialFingerprints":{"codehealthFindingId/v1":"79505f3e1e6e341d860eb87bbff2d305d45443726f62bdaf65fdf8e05eb7180d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-table/src/transaction/manifest_build.rs: rust/lance-table/src/transaction/manifest_build.rs changed 17 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 151 in Transaction::build_manifest_prepared at line 585. 5 of those changes were fix/bug commits, 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-table/src/transaction/manifest_build.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":"rust/lance-table/src/transaction/manifest_build.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa222896156d999d8ef8ae3998166f43f81990182db536422aa9250b15180350"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: python/src/dataset.rs: python/src/dataset.rs changed 38 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 66 in Dataset::scanner at line 1232. 6 of those changes were fix/bug commits, and the other 32 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- python/src/dataset.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":"python/src/dataset.rs"},"region":{"startLine":1232}}}],"partialFingerprints":{"codehealthFindingId/v1":"724e61d920a08888a85f4eee942758b98c218a92d64fedb21c5411a541812598"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/scanner.rs: rust/lance/src/dataset/scanner.rs changed 67 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 34 in Scanner::vector_search at line 6102. 27 of those changes were fix/bug commits, and the other 40 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/scanner.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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":6102}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fb993ec2da715921d1c6be42a49299f94e6eb6506b0aa2635e44a196c1efae8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/optimize.rs: rust/lance/src/dataset/optimize.rs changed 48 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 34 in lance::dataset::optimize::commit_compaction at line 3156. 18 of those changes were fix/bug commits, and the other 30 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/optimize.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":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":3156}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3b0d049c732880dfba2423dcbbe254583f242f40a017d8c3cba28b8fc0bf0a3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset.rs: rust/lance/src/dataset.rs changed 66 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in Dataset::create_data_file at line 2262. 23 of those changes were fix/bug commits, and the other 43 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset.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":"rust/lance/src/dataset.rs"},"region":{"startLine":2262}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf3b3bb852011d08e0dd94210f76a1419c9934e86b7d97e2613717f39eb6077"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/index/vector/ivf/v2.rs: rust/lance/src/index/vector/ivf/v2.rs changed 39 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 34 in IVFIndex::search_partitions at line 2318. 11 of those changes were fix/bug commits, and the other 28 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/index/vector/ivf/v2.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":"rust/lance/src/index/vector/ivf/v2.rs"},"region":{"startLine":2318}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e0c3afa1f8acf65f1ff7a7365c6e72c293767c876c4af5407b5601f10be5b2b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/index.rs: rust/lance/src/index.rs changed 46 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in Dataset::merge_existing_index_segments at line 2095. 19 of those changes were fix/bug commits, and the other 27 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/index.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":"rust/lance/src/index.rs"},"region":{"startLine":2095}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3046367f1b8ac2a75497daeaed2558f5312da696253948ca5999a3ef4bf38e9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/write/merge_insert.rs: rust/lance/src/dataset/write/merge_insert.rs changed 33 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 34 in MergeInsertJob::update_fragments at line 1580. 16 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/write/merge_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":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":1580}}}],"partialFingerprints":{"codehealthFindingId/v1":"3562b7e1dd60ac6a18135be82a708d955ce939fa1d8fa5de0e9081ed676dda99"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/io/commit/conflict_resolver.rs: rust/lance/src/io/commit/conflict_resolver.rs changed 21 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 48 in TransactionRebase::check_create_index_txn at line 828. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/io/commit/conflict_resolver.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":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf67ef860d643f4315ace7e5f59f804fb3b12aa4f6acfb4ce771898c83c13efe"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-index/src/scalar/zonemap.rs: rust/lance-index/src/scalar/zonemap.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 76 in ZoneMapIndex::evaluate_zone_against_query at line 241. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-index/src/scalar/zonemap.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":"rust/lance-index/src/scalar/zonemap.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"c46c277d15cbdc3baf9d7644f029ec11018c562e1f7cbc22078c4d92f75c5866"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/fragment.rs: rust/lance/src/dataset/fragment.rs changed 42 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in FileFragment::validate at line 1765. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/fragment.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":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":1765}}}],"partialFingerprints":{"codehealthFindingId/v1":"7247e7cf76db704677052d806a703130abed58d3c10af98e2953080545854a05"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-encoding/src/encodings/logical/primitive.rs: rust/lance-encoding/src/encodings/logical/primitive.rs changed 30 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 30 in PrimitiveStructuralEncoder::encode_dense_page at line 7170. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-encoding/src/encodings/logical/primitive.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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":7170}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d4a03ac5377649b415ba05d10a9c3d5fb309c19f85f2fcc96e3bb46b48fed05"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-index/src/vector/distributed/index_merger.rs: rust/lance-index/src/vector/distributed/index_merger.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 124 in lance_index::vector::distributed::index_merger::merge_partial_vector_auxiliary_files_inner at line 862. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-index/src/vector/distributed/index_merger.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":"rust/lance-index/src/vector/distributed/index_merger.rs"},"region":{"startLine":862}}}],"partialFingerprints":{"codehealthFindingId/v1":"83c6da94ca0aba090903e7fcea83a3ef4a99bb7276c40aa9e2fcfd25efe2c39a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/io/exec/fts.rs: rust/lance/src/io/exec/fts.rs changed 36 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in CompoundQueryExec::execute at line 1420. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/io/exec/fts.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":"rust/lance/src/io/exec/fts.rs"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f17cb62ced720aaa291c9697082bb5a2f9163e0f08820892bd4533c1198451e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/index/append.rs: rust/lance/src/index/append.rs changed 17 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 50 in lance::index::append::merge_indices_with_unindexed_frags at line 836. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/index/append.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":"rust/lance/src/index/append.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"c966cfb613e18bf44c8c7ebc3ca51a9b6f0dfea76b2a6f98eb9269c795a3c651"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/index/create.rs: rust/lance/src/index/create.rs changed 19 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 43 in CreateIndexBuilder::execute_uncommitted_impl at line 161. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/index/create.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":"rust/lance/src/index/create.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"f82a9432647aeec9d813dd8ba5441a6d51602f577f78b8fd7816a203022f2ba3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/io/commit.rs: rust/lance/src/io/commit.rs changed 34 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in lance::io::commit::commit_transaction at line 1576. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/io/commit.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":"rust/lance/src/io/commit.rs"},"region":{"startLine":1576}}}],"partialFingerprints":{"codehealthFindingId/v1":"42fd91917fc235a5d086ba5f711ac2754703dc8d1a6b820f210d7e6666f17b96"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/write.rs: rust/lance/src/dataset/write.rs changed 31 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in lance::dataset::write::do_write_fragments_impl at line 919. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/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":"rust/lance/src/dataset/write.rs"},"region":{"startLine":919}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff990e1bc97d6334718f8f99c8bd0fc8766ffd90bceb278127ed220d411a6b50"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/blob.rs: rust/lance/src/dataset/blob.rs changed 29 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in BlobPreprocessor::logical_to_prepared_blob_array at line 1122. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/blob.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":"rust/lance/src/dataset/blob.rs"},"region":{"startLine":1122}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee02a69b58265569f044b20d05f89038bf336dfb85be1ce1fc50b811995f9b60"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-namespace-impls/src/dir.rs: rust/lance-namespace-impls/src/dir.rs changed 18 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 36 in DirectoryNamespace::describe_table_impl at line 2062. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-namespace-impls/src/dir.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":"rust/lance-namespace-impls/src/dir.rs"},"region":{"startLine":2062}}}],"partialFingerprints":{"codehealthFindingId/v1":"872aa65c1520c6014b2cd1c9f10d021e28b20e96ca6a9c5845f8abdc5fb03714"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-datafusion/src/expr.rs: rust/lance-datafusion/src/expr.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 211 in lance_datafusion::expr::safe_coerce_scalar at line 108. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-datafusion/src/expr.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":"rust/lance-datafusion/src/expr.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b70b4e30c4203613dd4ae25a22f84a0bec948406b993c0ee08a1348dce1c085"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/cleanup.rs: rust/lance/src/dataset/cleanup.rs changed 19 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 27 in CleanupTask::delete_unreferenced_files at line 697. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/cleanup.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":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"92066495f2fd3fa2bcdfb0b6677e43bead8d2c35f7e1713ca58cdf9c854431c0"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/versions/mod.rs: rust/lance/src/dataset/versions/mod.rs changed 18 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 28 in lance::dataset::versions::check_manifest_storage_contract at line 383. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/versions/mod.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":"rust/lance/src/dataset/versions/mod.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"8de63c8bb00f15efbc520a3a300e832122acec4a85cde43c21af2592eba0a997"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/schema_evolution.rs: rust/lance/src/dataset/schema_evolution.rs changed 21 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in lance::dataset::schema_evolution::alter_columns at line 836. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/schema_evolution.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":"rust/lance/src/dataset/schema_evolution.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4a1def9c52e0850e0549b0e99c6bdd6eca21c181d37505e72a16521e2e14e4a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-index/src/scalar/inverted/builder.rs: rust/lance-index/src/scalar/inverted/builder.rs changed 19 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in IndexWorker::process_document at line 1573. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-index/src/scalar/inverted/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":"rust/lance-index/src/scalar/inverted/builder.rs"},"region":{"startLine":1573}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0502f49f191587d6bdcd505f32867c70c17376568060fcd39e3e9401cc351e5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-index/src/scalar/inverted/index/partition.rs: rust/lance-index/src/scalar/inverted/index/partition.rs changed 12 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 36 in InvertedPartition::load_posting_lists_with_policy at line 1314. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-index/src/scalar/inverted/index/partition.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":"rust/lance-index/src/scalar/inverted/index/partition.rs"},"region":{"startLine":1314}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aa645dcffdbafe3b43715de0acc5a3061711706e58036e2c1de7c6a44406529"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/write/commit.rs: rust/lance/src/dataset/write/commit.rs changed 18 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in CommitBuilder::execute_inner at line 320. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/write/commit.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":"rust/lance/src/dataset/write/commit.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6a6d23366d8d4b68ef7783eff4a128c85fb5a0f5b0a13ad59abf21719ecf15b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/io/exec/filtered_read.rs: rust/lance/src/io/exec/filtered_read.rs changed 20 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in FilteredReadExec::try_new_row_stream at line 2194. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/io/exec/filtered_read.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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":2194}}}],"partialFingerprints":{"codehealthFindingId/v1":"4546bba912c408243caef0fac9290a5ec85d6aac687652c50400ffff8e44be35"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-datafusion/src/planner.rs: rust/lance-datafusion/src/planner.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 43 in Planner::parse_sql_expr at line 683. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-datafusion/src/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":"rust/lance-datafusion/src/planner.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"6512c3375c35f4c1ebe93570e72d1ccee39f9d0edaa8be0db984fe1cd4a39b43"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/index/scalar.rs: rust/lance/src/index/scalar.rs changed 17 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in lance::index::scalar::index_matches_criteria at line 749. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/index/scalar.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":"rust/lance/src/index/scalar.rs"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad621566cc62483c78445eb665cc1f40e195441bbea4d3b48bc480d38663ead1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/index/vector.rs: rust/lance/src/index/vector.rs changed 17 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in lance::index::vector::build_distributed_vector_index at line 793. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/index/vector.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":"rust/lance/src/index/vector.rs"},"region":{"startLine":793}}}],"partialFingerprints":{"codehealthFindingId/v1":"96acd946ee1b3d528fac0e611ca4bd3368789b32590a97abf50906c52a75ef7a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/index/vector/builder.rs: rust/lance/src/index/vector/builder.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in IvfIndexBuilder::build_partitions at line 999. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/index/vector/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":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":999}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e7a5084ffdacd5a0b0a16645d7c9f3b05190a30c01f89cdcc9457b5f09b42cf"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/mem_wal/index/fts.rs: rust/lance/src/dataset/mem_wal/index/fts.rs changed 12 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 26 in FtsMemIndex::to_index_builder at line 2689. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/mem_wal/index/fts.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":"rust/lance/src/dataset/mem_wal/index/fts.rs"},"region":{"startLine":2689}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e64a15348c01dcdf36009b5b708ac84c191711927970129a6d50be72726a79c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: java/lance-jni/src/transaction.rs: java/lance-jni/src/transaction.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 29 in lance_jni::transaction::convert_to_rust_operation at line 1682. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- java/lance-jni/src/transaction.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":"java/lance-jni/src/transaction.rs"},"region":{"startLine":1682}}}],"partialFingerprints":{"codehealthFindingId/v1":"f24547cd21569845fd19a76f4ad9c36b9a6275ce020b45ec9e169e3c690c4462"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-index/src/scalar/inverted/tokenizer.rs: rust/lance-index/src/scalar/inverted/tokenizer.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 31 in RawInvertedIndexParams::resolve at line 288. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-index/src/scalar/inverted/tokenizer.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":"rust/lance-index/src/scalar/inverted/tokenizer.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"803707e13cf21542d17d6b68ddd4fae33d26ee07d0b0dc4f18ba7e3e9e743cb0"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/write/update.rs: rust/lance/src/dataset/write/update.rs changed 16 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in UpdateJob::execute_impl at line 322. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/write/update.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":"rust/lance/src/dataset/write/update.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"07d7a3619529878b0438cd180239601222b7d9d2a13cf4e40c86b68d0e5ec704"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/mem_wal/index.rs: rust/lance/src/dataset/mem_wal/index.rs changed 16 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in IndexStore::insert_batches at line 1008. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/mem_wal/index.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":"rust/lance/src/dataset/mem_wal/index.rs"},"region":{"startLine":1008}}}],"partialFingerprints":{"codehealthFindingId/v1":"00c582edf8a52c323b6b2bac0b387bbdcb1751cdb5474fda6cd087ea5c216d80"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-index/src/scalar/bitmap.rs: rust/lance-index/src/scalar/bitmap.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in BitmapIndex::search_with_options at line 768. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-index/src/scalar/bitmap.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":"rust/lance-index/src/scalar/bitmap.rs"},"region":{"startLine":768}}}],"partialFingerprints":{"codehealthFindingId/v1":"22851efe11508c099fc67a4ae0df830aae0cf3f209926773ba3f86395470bed7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-table/src/rowids.rs: rust/lance-table/src/rowids.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 28 in RowIdSequence::mask_to_offset_ranges at line 609. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-table/src/rowids.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":"rust/lance-table/src/rowids.rs"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6dfcf5ad52ff2fff299791da7467e3bd874ca75515c284e15e643b1d8849e01"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/mem_wal/scanner/fts_search.rs: rust/lance/src/dataset/mem_wal/scanner/fts_search.rs changed 12 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in LsmFtsSearchPlanner::plan_bound_search at line 772. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/mem_wal/scanner/fts_search.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":"rust/lance/src/dataset/mem_wal/scanner/fts_search.rs"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"db4b6d90736af6c986d64f3a0097821c39e0d1c3ecbeb5b1d6c3c1e7c1af9a52"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-index/src/scalar/btree.rs: rust/lance-index/src/scalar/btree.rs changed 15 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in BTreeIndex::search_with_options at line 2495. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-index/src/scalar/btree.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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":2495}}}],"partialFingerprints":{"codehealthFindingId/v1":"10aad63623dd0d8fe0938d58f5a61b3b3619df1bf209a6f44e9a0c6726ca1eed"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: python/python/lance/fragment.py: python/python/lance/fragment.py changed 15 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in fragment.write_fragments at line 1223. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- python/python/lance/fragment.py\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":"python/python/lance/fragment.py"},"region":{"startLine":1223}}}],"partialFingerprints":{"codehealthFindingId/v1":"438dd50167e2a116080260917d8cd224c73173d549d05a199f68c8d6206a19ca"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-linalg/src/distance.rs: rust/lance-linalg/src/distance.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in lance_linalg::distance::multivec_distance at line 468. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-07-01..2026-09-29, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-07-01 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-linalg/src/distance.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":"rust/lance-linalg/src/distance.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a3d2dfd355f7d1983897d080f038a8c6e668151a4ee597e1abe2f489736e6d9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: python/src/transaction.rs: python/src/transaction.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in PyLance::into_pyobject at line 659. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- python/src/transaction.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":"python/src/transaction.rs"},"region":{"startLine":659}}}],"partialFingerprints":{"codehealthFindingId/v1":"62e69b28fca0ae04f2f9aa6b611e6ff7cc41e95d075fab73dd005febae4bce7f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/mem_wal/memtable/scanner/exec/fts.rs: rust/lance/src/dataset/mem_wal/memtable/scanner/exec/fts.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in FtsIndexExec::materialize_rows_sorted at line 321. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/mem_wal/memtable/scanner/exec/fts.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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/fts.rs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"f836cb1a14ef0b4f1ffcdfef9dcfb2916fea1650d262e5c7ee8dfcd6d4858363"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/builder.rs: rust/lance/src/dataset/builder.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 26 in DatasetBuilder::load_impl at line 687. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/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":"rust/lance/src/dataset/builder.rs"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fdb194b25ed79e00426f43d5ac4618a223f9567a8831d5220ecd3f6aa2697c9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: java/lance-jni/src/blocking_scanner.rs: java/lance-jni/src/blocking_scanner.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 28 in lance_jni::blocking_scanner::build_scanner_with_options at line 289. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- java/lance-jni/src/blocking_scanner.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":"java/lance-jni/src/blocking_scanner.rs"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d7764373c6f047d9444f05bb1748555e8b0d58e1119c01260615c99773e5a62"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: java/src/main/java/org/lance/index/scalar/InvertedIndexParams.java: java/src/main/java/org/lance/index/scalar/InvertedIndexParams.java changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 27 in Builder.build at line 447. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- java/src/main/java/org/lance/index/scalar/InvertedIndexParams.java\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":"java/src/main/java/org/lance/index/scalar/InvertedIndexParams.java"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"7372d7d8a1c79705d99b9a3d607b83556a0ceb22155047e38ca05ecbe9fd2656"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/optimize/binary_copy.rs: rust/lance/src/dataset/optimize/binary_copy.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 27 in lance::dataset::optimize::binary_copy::rewrite_files_binary_copy at line 124. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/optimize/binary_copy.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":"rust/lance/src/dataset/optimize/binary_copy.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa4843478f26715efb600476a2e112bddfe52db8fbbfdb3bfe0cb2e9905960a7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/optimize/remapping.rs: rust/lance/src/dataset/optimize/remapping.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in lance::dataset::optimize::remapping::remap_index at line 204. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/optimize/remapping.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":"rust/lance/src/dataset/optimize/remapping.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"216db94c835ed64558a3e5134251ace23a3bcc9af3171cbaa17ec296914e6f50"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-encoding/src/encodings/physical/packed.rs: rust/lance-encoding/src/encodings/physical/packed.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 31 in PackedStructVariablePerValueDecompressor::decompress at line 607. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-encoding/src/encodings/physical/packed.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":"rust/lance-encoding/src/encodings/physical/packed.rs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf42aa231587daf51c0d618514f5e0f562172855bc710fdc10c7938d012ec15e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs: rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in LsmPointLookupPlanner::lookup_many at line 490. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/mem_wal/scanner/point_lookup.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":"rust/lance/src/dataset/mem_wal/scanner/point_lookup.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe08e25a1ce352ecfb8f35045bd9c42892bca83760bd8cde83a5aa68f7004350"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/io/exec/scan.rs: rust/lance/src/io/exec/scan.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in LanceStream::try_new_v2 at line 179. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/io/exec/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":"rust/lance/src/io/exec/scan.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3d6ddf381a4db79eabf0752e538c55fa62e6d9f440c3ae7f4e918359eeb0537"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/blob.rs: rust/lance/src/blob.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in lance::blob::validate_prepared_blob_value_array 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/blob.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":"rust/lance/src/blob.rs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"b772628c6dee4a3cb2af6f73e4cee23273013f4a360b301e3d959db8649cd4e9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-datafusion/src/substrait.rs: rust/lance-datafusion/src/substrait.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 31 in lance_datafusion::substrait::normalize_expr at line 313. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-datafusion/src/substrait.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":"rust/lance-datafusion/src/substrait.rs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"53efea8341c8deaa6c620ea6ee2d4504f09a74b9830fba2155544dc1b5d67c3b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/take.rs: rust/lance/src/dataset/take.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in lance::dataset::take::do_take_rows at line 131. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/take.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":"rust/lance/src/dataset/take.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"1964c38b55ebe32b95af310ec1156678e87b257fef5cb8a838c9b02d67a3a19b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-table/src/utils/stream.rs: rust/lance-table/src/utils/stream.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in lance_table::utils::stream::apply_row_id_and_deletes_with_system_columns at line 466. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-table/src/utils/stream.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/utils/stream.rs"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad2cb8b708e6c66a87fa1aaa5d5171531e5c2ddffce903e29e0bda05629fbc8c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/io/exec/count_pushdown.rs: rust/lance/src/io/exec/count_pushdown.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 30 in lance::io::exec::count_pushdown::try_rewrite at line 107. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/io/exec/count_pushdown.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":"rust/lance/src/io/exec/count_pushdown.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"e023ae9fd742ce5a1ba39ad532ad66e3af131b3c6e14463a0ae3e6a9c1c8a4a0"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-index/src/vector/flat/index.rs: rust/lance-index/src/vector/flat/index.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in FlatIndex::search_with_scratch 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-index/src/vector/flat/index.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":"rust/lance-index/src/vector/flat/index.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"30a4c99f573246e560fbde262fd7e61b5ccbbf5eed6f15dbcc27da7abd7a5b57"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/io/exec/take.rs: rust/lance/src/io/exec/take.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in TakeStream::map_batch at line 243. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/io/exec/take.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":"rust/lance/src/io/exec/take.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5d42f21c5f086ac3980ae6e8de456ab8380ecef08099227ae6c163fd988c896"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-core/src/datatypes/field.rs: rust/lance-core/src/datatypes/field.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in Field::try_from at line 1207. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-core/src/datatypes/field.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":"rust/lance-core/src/datatypes/field.rs"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa4f3fc3eda761d3a3fcbb67fd8904de76194c49dc450aa20062a827fe5846cb"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-io/src/local.rs: rust/lance-io/src/local.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 28 in lance_io::local::remove_empty_dirs at line 54. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-io/src/local.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":"rust/lance-io/src/local.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae041836f6d2b9e4160d803fec4bfe7a921f89b5dd465ad744f70860600ba005"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/mem_wal/scanner/planner.rs: rust/lance/src/dataset/mem_wal/scanner/planner.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in LsmScanPlanner::plan_scan at line 130. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/mem_wal/scanner/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":"rust/lance/src/dataset/mem_wal/scanner/planner.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"486f40605694489cda1901a2d0eb9239bc9e65d4f6d840d4594d2a14231aa9b3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/index/vector/ivf/io.rs: rust/lance/src/index/vector/ivf/io.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in lance::index::vector::ivf::io::write_hnsw_quantization_index_partitions 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/index/vector/ivf/io.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":"rust/lance/src/index/vector/ivf/io.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"2927f021b6550f050043b57d5126a99648327dfc3839b005c4e0cd46ba769f2c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: java/lance-jni/src/utils.rs: java/lance-jni/src/utils.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in lance_jni::utils::build_compaction_options 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- java/lance-jni/src/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":"java/lance-jni/src/utils.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"63bb73b9681fb0b750ace5829a50182f9ff739749a4a58695a3f90909e4b57fc"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance-table/src/transaction/row_version.rs: rust/lance-table/src/transaction/row_version.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in lance_table::transaction::row_version::resolve_update_version_metadata at line 91. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-table/src/transaction/row_version.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":"rust/lance-table/src/transaction/row_version.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"81f64c7c6211f6f680e2aea428d916bebe1e3f6fd4d0e633aa0e38f2a951b928"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_scan.rs: rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_scan.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in MemTableDedupScanExec::execute at line 175. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/dedup_scan.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"21ec966776bce1ce173eba454d62113455a20cf3d9b4cc9846331aa89a8094c6"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/dataset/mem_wal/memtable/scanner/exec/scan.rs: rust/lance/src/dataset/mem_wal/memtable/scanner/exec/scan.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in MemTableScanExec::execute at line 213. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/mem_wal/memtable/scanner/exec/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":"rust/lance/src/dataset/mem_wal/memtable/scanner/exec/scan.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"a22cbbd1abcddb8c0a65719390f74a7d77935f09e06054c75ce604e88d9133bd"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: python/src/dataset/optimize.rs: python/src/dataset/optimize.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in pylance::dataset::optimize::parse_compaction_options at line 26. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- python/src/dataset/optimize.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":"python/src/dataset/optimize.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"624d05216644c567b592c90bb7532dad7e8ccfad2ef028b4cad9ff1a93b5c381"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: java/src/main/java/org/lance/WriteDatasetBuilder.java: java/src/main/java/org/lance/WriteDatasetBuilder.java changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in WriteDatasetBuilder.executeWithNamespaceClient at line 440. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- java/src/main/java/org/lance/WriteDatasetBuilder.java\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":"java/src/main/java/org/lance/WriteDatasetBuilder.java"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"030346960512ee42ec62ad154dc8ece254a41b11975248d68355099789548cdf"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: rust/lance/src/io/exec/filtered_read_proto.rs: rust/lance/src/io/exec/filtered_read_proto.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in lance::io::exec::filtered_read_proto::fr_options_from_proto at line 156. 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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/io/exec/filtered_read_proto.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/filtered_read_proto.rs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7c213eb5beeec880d1b6278b6e935c84aa48b605a4fcb1e86f1d0d7cfb6ede6"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance-io/src/object_store.rs: rust/lance-io/src/object_store.rs changed 17 times in last 90 days and 10 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 ObjectStore::copy_via_stream at line 1245), 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(fs): fix dataset files permission on local filesystem (#8839)\u201D; \u201Cfix(index): stream bulk index file copies (#8770)\u201D; \u201Cfix(io): normalize OpenDAL listed paths (#8654)\u201D; \u201Cfix(io): preserve Windows UNC share roots (#8378)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-io/src/object_store.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/object_store.rs"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"55abd6285472413b9fb8ee540cfcf7e5218116e4e84c09e1ec66e12802ca8890"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance-linalg/src/distance/l2.rs: rust/lance-linalg/src/distance/l2.rs changed 12 times in last 90 days and 8 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 5 (its worst body is lance_linalg::distance::l2::l2_batch_f32_runtime_dispatch at line 360), 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(linalg): gate L2 SimdSupport import on x86_64 (#9279)\u201D; \u201Cfix(linalg): preserve half-kernel fallback on AVX-512 hosts (#8877)\u201D; \u201Cfix(linalg): reject a null Int8 query instead of panicking (#8884)\u201D; \u201Cfix(linalg): widen u8 distance accumulators (#8888)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-linalg/src/distance/l2.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":"rust/lance-linalg/src/distance/l2.rs"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"d559587794897bd3eea9a5e7ca4b9ee8c778847afd3a53dc207d37691f772776"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance-index/src/scalar/inverted/query.rs: rust/lance-index/src/scalar/inverted/query.rs changed 11 times in last 90 days and 6 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 lance_index::scalar::inverted::query::fill_fts_query_column at line 1183), 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(fts): validate JSON index queries and targets (#8813)\u201D; \u201Cfix(fts): canonicalize fuzzy expansion across segments (#8758)\u201D; \u201Cfix(fts): include must-not clauses in query planning (#8443)\u201D; \u201Cfix(fts): re-evaluate overlay-stale rows without segment scans (#7975)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-index/src/scalar/inverted/query.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":"rust/lance-index/src/scalar/inverted/query.rs"},"region":{"startLine":1183}}}],"partialFingerprints":{"codehealthFindingId/v1":"971bde734f8ab3e7e6ad9486f099ecc0e4ceb46df507461ad2e2a7b13e206d08"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance-core/src/error.rs: rust/lance-core/src/error.rs changed 10 times in last 90 days and 6 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 Error::from at line 984), 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: preserve typed DataFusion errors through Shared and ReplayExec (#8677)\u201D; \u201Cfix(sql): classify malformed SQL queries as invalid input (#8974)\u201D; \u201Cfix: recognize own commit on conflict and avoid deleting committed artifacts (#7722)\u201D; \u201Cfix: make FTS metadata loading retry-safe (#7838)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-core/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":"rust/lance-core/src/error.rs"},"region":{"startLine":984}}}],"partialFingerprints":{"codehealthFindingId/v1":"e31fd1026c6ea34233db2e63dc8ae5a867d3df0c5187e6f666fcb526fdb8c5c9"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance-linalg/src/distance/cosine.rs: rust/lance-linalg/src/distance/cosine.rs changed 9 times in last 90 days and 6 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 CosineBatchIter::next at line 814), 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(linalg): preserve half-kernel fallback on AVX-512 hosts (#8877)\u201D; \u201Cfix(linalg): reject a null Int8 query instead of panicking (#8884)\u201D; \u201Cfix(linalg): distinguish arrow batch type errors (#8911)\u201D; \u201Cfix(linalg): drop casts that make clippy::use_self fail off the CI baseline (#8424)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-linalg/src/distance/cosine.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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":814}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4fea5c577acc44833df11f1d5ad6c343761da19e05e704132144b2b96ba186a"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance-linalg/src/distance/dot.rs: rust/lance-linalg/src/distance/dot.rs changed 9 times in last 90 days and 6 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 5 (its worst body is lance_linalg::distance::dot::dot_batch_f32_runtime_dispatch at line 329), 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(linalg): preserve half-kernel fallback on AVX-512 hosts (#8877)\u201D; \u201Cfix(linalg): reject a null Int8 query instead of panicking (#8884)\u201D; \u201Cfix(linalg): widen u8 distance accumulators (#8888)\u201D; \u201Cfix(linalg): validate distance input lengths (#8594)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-linalg/src/distance/dot.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":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"24a630617d4f8437feb3695b619b0030f1678a461da7512e4360a7e3e2dac87a"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance-io/src/object_writer.rs: rust/lance-io/src/object_writer.rs changed 7 times in last 90 days and 5 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 ObjectWriter::poll_tasks at line 351), 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(index): stream bulk index file copies (#8770)\u201D; \u201Cfix(io): stop serializing multipart uploads behind batch encoding (#8706)\u201D; \u201Cfix(io): add upload context to object store write failures (#8682)\u201D; \u201Cfix(storage): preserve multipart part identity across retries (#8174)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-io/src/object_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":"rust/lance-io/src/object_writer.rs"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"91bd9db56ecb439b939ae46c4804637d291e651aefca5f2bda5ece4b0dead4a1"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance-linalg/src/simd/dist_table.rs: rust/lance-linalg/src/simd/dist_table.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 7 (its worst body is lance_linalg::simd::dist_table::sum_4bit_dist_table_uninit at line 124), 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(index): preserve 4-bit PQ scores in bulk search (#9537)\u201D; \u201Cfix(index): reject RabitQ indices whose dimension is not a multiple of 8 (#8869)\u201D; \u201Cfix(index): widen the RaBitQ FastScan accumulator above 1024 dims (#8842)\u201D; \u201Cfix(index): initialize BQ distance buffers (#8598)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-linalg/src/simd/dist_table.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":"rust/lance-linalg/src/simd/dist_table.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"36e6168745f16ae1093507e11b44d8a0f6edc87b594e478de967b951a3160c1f"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance-table/src/io/commit/external_manifest.rs: rust/lance-table/src/io/commit/external_manifest.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 9 (its worst body is ExternalManifestCommitHandler::resolve_version_location at line 804), 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(commit): make object storage authoritative for external manifests (#8499)\u201D; \u201Cfix: recognize own commit on conflict and avoid deleting committed artifacts (#7722)\u201D; \u201Cfix: persist finalized external manifest metadata (#7964)\u201D; \u201Cfix(commit): verify finalized external manifests (#7578)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-table/src/io/commit/external_manifest.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":"rust/lance-table/src/io/commit/external_manifest.rs"},"region":{"startLine":804}}}],"partialFingerprints":{"codehealthFindingId/v1":"07e396089bd034e708eace20430670e307d22d6d4735af842d2f23f27682e2af"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance/src/dataset/mem_wal/scanner/block_list.rs: rust/lance/src/dataset/mem_wal/scanner/block_list.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 11 (its worst body is lance::dataset::mem_wal::scanner::block_list::compute_source_block_lists at line 158), 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(mem_wal): dedup repeated row positions when training the flushed PK sidecar (#9595)\u201D; \u201Cfix(index): replace scalar cache entries on store rotation (#7962)\u201D; \u201Cfix(mem_wal): read-your-writes via split index-apply and dual visibility cursors (#7888)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/mem_wal/scanner/block_list.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":"rust/lance/src/dataset/mem_wal/scanner/block_list.rs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"792dd79df103bc522edbd2529a32acf69646922ef126fa0859dcb20128dbfb8e"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance-index/src/vector/pq.rs: rust/lance-index/src/vector/pq.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 10 (its worst body is ProductQuantizer::transform_impl at line 160), 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(index): preserve 4-bit PQ scores in bulk search (#9537)\u201D; \u201Cfix(index): reject a supplied PQ codebook that does not match the column (#8999)\u201D; \u201Cfix(index): search legacy truncated PQ indexes (#8396)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-index/src/vector/pq.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":"rust/lance-index/src/vector/pq.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"b158f3402a084dc989970a41c657533fa82cceda8d7f38c55826867fc7b1e9f0"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance/src/dataset/refs.rs: rust/lance/src/dataset/refs.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 13 (its worst body is lance::dataset::refs::check_valid_branch at line 992), 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(tag): make tag creation atomic (#8459)\u201D; \u201Cfix(dataset): prevent deleting branches referenced by tags (#8365)\u201D; \u201Cfix: map \u0060object_store::Error::NotFound\u0060 to \u0060Error::NotFound\u0060 instead of \u0060Error::IO\u0060 (#6569)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/refs.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":"rust/lance/src/dataset/refs.rs"},"region":{"startLine":992}}}],"partialFingerprints":{"codehealthFindingId/v1":"a35819d4daeb66a32e9c4e54f304f7e8414f879d040d2859cafcbcca1f7a26d8"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance/src/dataset/mem_wal/memtable/batch_store.rs: rust/lance/src/dataset/mem_wal/memtable/batch_store.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 4 (its worst body is BatchStore::append_batches at line 375), 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: serialize BatchStore writers (#8595)\u201D; \u201Cfix(mem_wal): read-your-writes via split index-apply and dual visibility cursors (#7888)\u201D; \u201Cfix(mem_wal): use slice-aware size estimate for memtable flush threshold (#7563)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance/src/dataset/mem_wal/memtable/batch_store.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/mem_wal/memtable/batch_store.rs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a877348eae7e0a1a8b69e52e598b807ffd9d6c69535877026ee7fca05705490"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance-linalg/src/simd/i32.rs: rust/lance-linalg/src/simd/i32.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 i32x8::find at line 229), 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(linalg): build on architectures without SIMD kernels (#9446)\u201D; \u201Cfix(linalg): use a lane-wise intrinsic for i32x8 multiplication on x86 (#8579)\u201D; \u201Cfix(linalg): validate slice lengths before SIMD loads (#8593)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-linalg/src/simd/i32.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":"rust/lance-linalg/src/simd/i32.rs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1791523a325cc093ba4cfb57c2dd61d0513ac0dbb58c8608bbae32a50e04ff3"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance-core/src/utils/tokio.rs: rust/lance-core/src/utils/tokio.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 5 (its worst body is lance_core::utils::tokio::global_cpu_runtime at line 95), 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(hnsw): make a persisted HNSW cover its rows and reject invalid ones (#8834)\u201D; \u201Cfix(core): validate CPU/IO env vars with a diagnosable error (#7856)\u201D; \u201Cfix(lance-core): avoid aliasing \u0026mut Runtime in global_cpu_runtime (#7682)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-core/src/utils/tokio.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":"rust/lance-core/src/utils/tokio.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"b15a36ddff0828c39c21b6ebd0709bda8c44130f790b6c7231797127f22afb02"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: rust/lance-index/src/scalar/inverted/index/posting_prewarm.rs: rust/lance-index/src/scalar/inverted/index/posting_prewarm.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 10 (its worst body is PostingListReader::posting_read_chunk_ranges at line 625), 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(fts): preserve prewarmed state across request store wrappers (#9075)\u201D; \u201Cfix(fts): align v1 merge reads with writer batches (#8922)\u201D; \u201Cfix(fts): chunk posting reads during segment merge (#8668)\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 21:37:56 \u002B08:00\u0027 --until=\u00272026-09-29 21:37:56 \u002B08:00\u0027 --full-history --no-merges -- rust/lance-index/src/scalar/inverted/index/posting_prewarm.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":"rust/lance-index/src/scalar/inverted/index/posting_prewarm.rs"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"85af3bebd1bf117de73d06c067d9839def4473f5802097163f8e2e4ccc6e2cf1"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 26 significant file(s) lose their only recent owner: rust/lance-encoding/src/encodings/logical/primitive/sparse/writer.rs, rust/lance-arrow/src/json.rs, rust/lance-io/src/object_store/read_dir.rs, rust/lance-table/src/transaction/validate.rs, rust/lance-arrow/src/ipc.rs, rust/lance-file/src/versions/mod.rs, ci/format_vote_gate.py, rust/lance-file/src/version.rs (\u002B18 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f26f1ad7ee50128f6b44545656a8a245166d1895ad2c38759f57951ca82b4edd"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #2: If anonymized user #2 becomes unavailable, 8 significant file(s) lose their only recent owner: rust/lance-index/src/vector/bq/ex_dot.rs, rust/compression/bitpacking/src/bitpacker_internal/bitpacker8x.rs, rust/lance-index/src/vector/bq/transform.rs, rust/lance-index/src/vector/bq/prune.rs, rust/lance-index/src/scalar/inverted/compound/should_maxscore.rs, python/src/fts.rs, rust/lance-index/src/scalar/inverted/iter.rs, rust/compression/bitpacking/src/bitpacker_internal/mod.rs. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f18b2e096550b8cb9cae5ebca46ddb1c0846b42f9709bae14b5ead3d267c46b1"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #3: If anonymized user #3 becomes unavailable, 4 significant file(s) lose their only recent owner: java/src/main/java/org/lance/Branch.java, java/src/main/java/org/lance/util/JsonFields.java, java/src/main/java/org/lance/Tag.java, java/src/main/java/org/lance/Ref.java. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5a977760efe14a65f32a042eceaba320edfe5e7a58838787ea16eeac3011c5d2"}},{"ruleId":"D16","level":"note","message":{"text":"Further sole-owners (lower concentration): 13 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 (58 single-owned of 809 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; 809 of the 1014 production source files in this repository met that bar). They are anonymized user #4 (2 file(s)), anonymized user #5 (2 file(s)), anonymized user #6 (2 file(s)), anonymized user #7 (2 file(s)), anonymized user #8 (1 file(s)), anonymized user #9 (1 file(s)) (\u002B7 more) \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: Implement timeout-based cleanup for defense-in-depth \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/task_tracker.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"36fc7c559db1afe2740322ad13e35807090175d2bd3d78945ce83a95e2e2fa57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: add 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":"java/lance-jni/src/lib.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"48b87ef2974db5ec6bca9f047e908c6cd790156b86a0ae5f79e5ddaa4d30e9a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lu): put get java object into here cuz can only get java Object \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/ffi.rs"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"29c7d9ccf8120d53da1039ff7c7c16a80e749162691461a7abe2347384f5f0f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fix in https://github.com/lancedb/lance/issues/2956"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/test/java/org/lance/VectorSearchTest.java"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"44f1537763cdb827ad2b1ce8387cfeea4d3522aa3b091174cb2c94748271a113"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Verify zone_size parameter was applied \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/test/java/org/lance/index/ScalarIndexTest.java"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"5544bb94f3dc3c410574e796102caf4164793c08640cd61b1984d1c69f00fa7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Verify rows_per_zone parameter was applied \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/src/test/java/org/lance/index/ScalarIndexTest.java"},"region":{"startLine":1858}}}],"partialFingerprints":{"codehealthFindingId/v1":"75f3641716c915ebfc3f0fca322ffee090c846c0f9d7e7e3b8b04cfd1e874984"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: underlying dir namespace doesn\u0027t support rename 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":"java/src/test/java/org/lance/namespace/RestNamespaceTest.java"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f4baf3cdbb9746778bf056e85caf8743bc698771e1572de1ec9edec2a5bb08"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: # Hack for Windows due to \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":"python/python/lance/vector.py"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b80c4a1912bee913b2266f3701d695bad9dacf401fdc65bd5a95cf6d8b0e1ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: only we eliminate the path method, we can 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":"python/python/lance/fragment.py"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b66e234e69e7c867fc0dde83b24518fd253418f2e44549a9dad99fa36ebf329"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: consolidate all to use scanner \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/dataset.py"},"region":{"startLine":2615}}}],"partialFingerprints":{"codehealthFindingId/v1":"677b048974165557d1dc94fad45477b5bd7192aa208d505631d2b278ec447edc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: python datetime supports only microsecond precision. When a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/dataset.py"},"region":{"startLine":3157}}}],"partialFingerprints":{"codehealthFindingId/v1":"004024b67e2c59871078537ee5f87cb2f2515c24d43881823b6a701b365e9935"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO add support for passing in LanceDataset and LanceScanner 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":"python/python/lance/dataset.py"},"region":{"startLine":8311}}}],"partialFingerprints":{"codehealthFindingId/v1":"773a55fe9e75f271c3259a9381059c1ad8ee178dbbabaad9753c43f73c9db11b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: allow string_view once 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":"python/python/lance/arrow.py"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"c53060ff633f01e6c0812805a4bb8b563e3c0cfc4508852974f601d2bc8acba7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: allow string_view once 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":"python/python/lance/arrow.py"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"c539502d686962fb5e4e2bc790802d09422f4af3133ad643d546000a613e2ac4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: allow binary_view once 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":"python/python/lance/arrow.py"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8afc83c752c0d32c9cd684d417ff8464aa1f5a2edd5e6e4e746e247583c8a99"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: use pa.BinaryView once 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":"python/python/lance/arrow.py"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"918980d361b347c7b1cf3c8871adb23dafea164798dcb630efb2e92fa435e4d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: add VariableShapeImageTensorType once pa.VariableShapeTensorArray is 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":"python/python/lance/arrow.py"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"836cac3b4b5a3345d3bae04d3c5219e75dafe50eff4a092d9655895a0e0b61dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: Deprecate this method once the upstream work (apache/arrow#33103)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/arrow.py"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"04d0ff1cefd2be344017a35e1a90d221c400b59293dd3587008dc0e2bff79566"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: encode endianness \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/_arrow/bf16.py"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"69b113e4ddea89c224d6169fc05e0102c21695d2ced789b2858ef07812ea3c8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: decode endianness \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/_arrow/bf16.py"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"d075fe04bd4ff18cd4bbe52cb9c016d47d015916206703a4c6d26920b8f50ffa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: support bf16/f16 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/torch/distance.py"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"17ce7bb2556375410e08f0c15c3aeea580ed1a3ee91b66a80f52dec4aa7272d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: change this to L2 distance (which is a breaking change?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/torch/distance.py"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"8960b0c741baad68d290206df2adf03f02b4edf0b905e9928a8f5560ea693fed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: _distance shouldn\u0027t be returned by default either \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/tests/test_vector_index.py"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"15775d7c7dd64b2e41accc7aae95e91995105b021d033948ca51d4dad43feafe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: _distance shouldn\u0027t be returned by default \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/tests/test_vector_index.py"},"region":{"startLine":2178}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebaef44b8c6457097218197eb5f8e9e2f8d3f84f167316748d3ad516f9e424f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: I changed this into \u0060json_get_int\u0060 for strong typed filter, should be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/tests/test_scalar_index.py"},"region":{"startLine":3200}}}],"partialFingerprints":{"codehealthFindingId/v1":"411db5875ab8dc55af766ac68f9d7ac3af5ae38147e46d9d447ede19aa0463f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: underlying dir namespace doesn\u0027t support rename 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":"python/python/tests/test_namespace_rest.py"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"b687c7b8fc4806d7a0e9d7813304a93fb85c0c8744ba457a385b1f1823b1e78c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO allow Dataset::create to take both async and also RecordBatchReader \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/tests/test_lance.py"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0c9b5841683bc2b5760dcfbda509596ce97dec2d58958244a741db59ab11d4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: add remaining 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":"python/python/tests/test_lance.py"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a1f160e1b2559fa78a9f90612cc13619f57c40bae23ff5a6ed20f4ea0fe5bd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: In the future it should be possible to verify \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/tests/test_json.py"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"09805a87585ddedc578a130aedb4a16116b5293065229855fd51d05a6d609646"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: Currently fails, need to fix 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":"python/python/tests/test_file.py"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb3d0e9462e127d01959e1815d2f10cee01144818000f3685f0d6cdae4e56ee1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: Test reading invalid ranges \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/tests/test_file.py"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"58be7408fcb0780e8275be8d6318a25cee5042b6b2226d9d65fe0b659a694f5e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: Test invalid batch sizes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/tests/test_file.py"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"61df7fbf486c0dd025665ea12183f3c1808336057f5bcfa3299e075abe57a209"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: V2 does not currently handle large_dict \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/tests/test_dataset.py"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"20fb17fbd493d58e176882250b78a349863a421fa4c1046a3d95c0c23f41f0e5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: # FIXME: sqlparser seems to ignore the .y part, but I can\u0027t create a simple \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/tests/test_dataset.py"},"region":{"startLine":1425}}}],"partialFingerprints":{"codehealthFindingId/v1":"678f67d1d68ccad4c95b30daede5ca66e462ba83a3ac6e5bc8a76dca2ac15eb9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: It would be nice to use frag.merge_columns with a UDF, but if the UDF \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/tests/test_dataset.py"},"region":{"startLine":2404}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2a7063e6dde07aeb4c98bee1862aaadd45eaca164224ca78f8f19e54a2ae36a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: uncomment tests once fixed upstream. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/tests/test_arrow.py"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"159be3f46523ac39586e65daad1c5c818c462dc0f0d97457c4d7d66b3418ad34"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pass frag_reuse_index 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":"python/src/transaction.rs"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"f86858fc553f8e5d0a9fddd522ccbf0f273f3a67139382ef420e148238f327bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: we should make a more succinct 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":"python/src/schema.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c1fe2f1c16d96426e168e349ee8ca5f2e44c669f9ae58d9ee790e8ab428491"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make this runtime configurable (e.g. num threads) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/lib.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6853fd7422ecdff583436ee4e24ab3f7b7be54ade0ded16ab796f112dc4f9ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: https://github.com/lance-format/lance/issues/3966 remove this workaround"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/src/lib.rs"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3c48e99178f974d599b54b444e78932d162d06983e596ee76d2c656b47c3070"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Use Arrow extension mechanism 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":"rust/lance-arrow/src/lib.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"f433dbc0c54cb74283204d53481ab4454431a9295f825ccdbebc5cab8e35383b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: add merge nested fields support. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-arrow/src/lib.rs"},"region":{"startLine":580}}}],"partialFingerprints":{"codehealthFindingId/v1":"958afa84832a3fcc708ab56bb45a50e735b65c69d78287ee2d8a507a187eaaac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO handle list-of-struct and other 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":"rust/lance-arrow/src/lib.rs"},"region":{"startLine":1295}}}],"partialFingerprints":{"codehealthFindingId/v1":"29b3d847b7aed1c082b022cb2118f1063d6ed85fea65dd9f71809299e8856f31"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We only support keys_sorted=false 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":"rust/lance-core/src/datatypes.rs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"35cf0edaf08f1cf560dd763a74b70d232f5a79c8e931693a42a8da90f42acb38"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We only support keys_sorted=false 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":"rust/lance-core/src/datatypes/field.rs"},"region":{"startLine":1228}}}],"partialFingerprints":{"codehealthFindingId/v1":"0550d8ea6c087e041fcb393b165f567d88da0b0619587dac21be07148e070139"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We only support keys_sorted=false 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":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":971}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d3a0e32fd98660125b3f164c11d9c88789ea54305214805353d49fa32e6eae1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pub(crate) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/datatypes/schema.rs"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbf9783ff4496dfa20e9ae03e7e55f3a01e328814051ae0bdf53795f48430764"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pub(crate) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/datatypes/schema.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f03cacb4afaffaf79719ceb607b20a192fea1c44d0904276c37e4e670135d11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pub(crate) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/datatypes/schema.rs"},"region":{"startLine":663}}}],"partialFingerprints":{"codehealthFindingId/v1":"45b1aa7f53a506c8abee0d7011769c6d2839c4889d557ff3ccb3ab35bbdf45d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pub(crate) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/datatypes/schema.rs"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"899f1a78a676d525bed4ae68093d00fb4ca0b207d1b2843839207befe9f31a80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pub(crate) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/format/metadata.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"c42ebe77364e8b953961b46abbfb4e88e62e6b63da0588c0db8aaa8448b804d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pub(crate) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/format/metadata.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a6c165d62153625b8341723e47c5493e2aa4769d669f3698cb7ba8721b6660e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pub(crate) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/pq/utils.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aac239b9fd07a2505ee3bdb22322ce0b50894babe64b4618ba0a737eb64f500"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pub(crate) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/utils.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cef0bc794d41d952ff1392f57703c38209790a44a143bd7a195669d777062b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pub(crate) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/format/fragment.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"44db6373d2fa4977a103db07e7138a562fb9586e3feb80b068a01557f713956c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pub(crate) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/io/commit.rs"},"region":{"startLine":875}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ab8f1811219ce1cf070ff44cfde2760773f484fa9da1896b23fb418c3fce856"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This is not a public API, change to pub(crate) after refactor is done. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/datatypes/schema.rs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b2c2793d7773e7ca4bc9348e94dde4b5fd6e637b689bcf0322a8b53789f6951"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Find way to move these next three fields to private \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/datatypes/field.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"f207ba59a552943521a7effe748b4b022853d887ffa4f08057f5ecb00cf6e86d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Benchmark to find a better 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":"rust/lance-core/src/utils/deletion.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed034f32d31fce589aa1a41fe5ff9c3b907642bc0b5e88f1a948654b6a16eb49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: impl methods for DeletionVector \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/utils/deletion.rs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"63ad934653b0a7b07b91a68181a361f82587c4561316434d9702ff4066bfd03e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //! FIXME: Make the upstream SBBF implementation public so that this file could be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-core/src/utils/bloomfilter/sbbf.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"97c5c6f2b7ec804362ec8c220b3782fa6cf7d87af6f8328eb76104f6f3851afb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this logic doesn\u0027t catch user defined fields inside of struct 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":"rust/lance-datafusion/src/substrait.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e631754e2420f310b4478fb06a4243f9122b158cff8c07b1bf1fa3273aa003b"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack to allow == as equals \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":"rust/lance-datafusion/src/sql.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b64312f34127e3d331e0f4fa87b08c183aa4d2db3dfdccf50c9a690707c9ad4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: cast should go thru CAST syntax instead of UDF \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/planner.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"34d0df80c1ed74e693d67505191ed23f60eb5e911c09faf3c6880acd2f3d587e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: use SqlToRel from Datafusion directly? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/planner.rs"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8526f327d9751ff9dc537c08d47f59f858bd13cd8e17aadf2c087509bd4e3c9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should work, but sqlparser doesn\u0027t recognize anything \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/planner.rs"},"region":{"startLine":1444}}}],"partialFingerprints":{"codehealthFindingId/v1":"84c5c19731baafbf3100ab98fc30ac3b32217a70843f093399b2c988ca1a506b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(tsaucer) I chose SUMMARY here but do we also want DEV? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/exec.rs"},"region":{"startLine":773}}}],"partialFingerprints":{"codehealthFindingId/v1":"2055b2d645debc87bc271bdfc41742cd6e6deb8be098acdc9089d190fad1aa1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support multiple \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/dataframe.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7437b70b6e5df247a88afc3e67692c5866eb47d8cb74a5a4f86a966dfb09485"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: test the stream more. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datafusion/src/dataframe.rs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a28ead0734f9da52c8a2669d969bf61acd02a2b5269bdbf8f82d2cb1e440e0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: maybe faster to build the vec and then repeat it into \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-datagen/src/generator.rs"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"7616bd6b854831896e1abb4b11728fca5424737499d1fa1a8f6c607d5eda7c9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this is pretty lazy and could 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":"rust/lance-datagen/src/generator.rs"},"region":{"startLine":2383}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d79cd0d12dd0a583254a9db554d5323696f6e82cb12e83720ce23c0a82c2e75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(tsaucer) When arrow upgrades to 56, remove this if 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":"rust/lance-encoding/src/testing.rs"},"region":{"startLine":1326}}}],"partialFingerprints":{"codehealthFindingId/v1":"147242e7759a00a54b289cc4606e86b35bf3d96cd30c95577c1272477263b049"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: All of this logic will need some changing when we compress rep/def levels. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9fb7bfe6b090816eee4fab87e12acfa970133fc30aba71bafcd4a48a4144354"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: In the future, we may concatenate and serialize at the same 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":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":1402}}}],"partialFingerprints":{"codehealthFindingId/v1":"e15908dbe7fc8547bd93c57b8491c278d9a812c50740fa4ad24aae955821fe7e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // right now how many items we have and not how many rows.  (TODO: Shouldn\u0027t we know the # of rows?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/repdef.rs"},"region":{"startLine":2108}}}],"partialFingerprints":{"codehealthFindingId/v1":"7201a34d0de277c64825f7ed288db878a0295fad80b5abd2dc75aa10188a6a20"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Implement backpressure \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa4b7f5e9968c2d35a800b7451b431bd73373be6692122d41e18b046235f7492"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Still need support for RLE \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":1120}}}],"partialFingerprints":{"codehealthFindingId/v1":"f67253605dcc8226c3baa63362e827913d666cc010fb42128adc0c9dc9c48454"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO:  Is there another way to create the root field without forcing a trip through arrow? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/decoder.rs"},"region":{"startLine":1237}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb802eeb6cde178b20c2f55465e6198d610738ec1f52655988b6127ee1acf387"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We could be more efficient here by checking if the dictionaries are the same \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/data.rs"},"region":{"startLine":1698}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c6ed054c2e868993f25dff70f5cf62df533cb1cd073c076bd6f01726a247d34"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Should we just always normalize indices to u32?  That would make logic simpler \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/data.rs"},"region":{"startLine":1710}}}],"partialFingerprints":{"codehealthFindingId/v1":"b496d0f0fa79ef9316cba312f126d315c665d76024df4507e9adb8bfb5aedeee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// This is actually a _third_ compression strategy used in a few corner cases today (TODO: remove?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/compression.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae400e612be0c36c4c8bb6d0867d08b6dbc2f768bcafacf919cb1ab0737b90a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: for signed integers, I intend to make it a cascaded encoding, a sparse array for the negative values and very wide(bit-width) 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":"rust/lance-encoding/src/array_encoding/strategy.rs"},"region":{"startLine":753}}}],"partialFingerprints":{"codehealthFindingId/v1":"337fc7be3961ba6653c815f4e3c1b7fc162fe9aee6471fd9f1c091f3be00c296"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: It may be a minor perf optimization, in some rare cases, if we have a separate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/logical/struct.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"22a0618472f6c0317885ea6bb6edf3e25990a618ed55cc01ff1cf0e1fc20ef46"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Test 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":"rust/lance-encoding/src/array_encoding/logical/struct.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bf50443f889a0380b759219b6e8754ad2dec169e5ca4713fb4e57a7459c78a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: If this is a primitive column we should be able to avoid 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":"rust/lance-encoding/src/array_encoding/logical/struct.rs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"678f446afa661351e40c359a4cc35b0685e8333dda2617f36563ffa29b1275b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Could potentially use filter to simplify decode, something of a micro-optimization probably \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/logical/primitive.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e1aa293c22e15bd976a5b079bc05594becdaae999598d0e6c936825b4e18fd9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: In the future, at some point, we may consider partially waiting for primitive pages by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/logical/primitive.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac564efeae535c84f24c980662e57bb9998d852fb6a595ce573323bb8a59467d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Could check here if there are any jumbo parts in the mix that need splitting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/logical/primitive.rs"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"a06ab8ab015bc0aa454409906d07589af668e5ceb844f836e3923d40e9339007"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This logic relies on row_ranges being ordered and may be a problem when we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/logical/list.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"75a9c11feb9a8f69d355a3b642bb5dd0f8a31732bfe978734350fcc2a69d94e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Maybe consider writing whether there are nulls or not as part of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/logical/list.rs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"718627883b85d564f61c15d8e2b6749b12c78664320feb8f8299fc8c9e1efce4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Test the case where a single list page has multiple items pages \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/logical/list.rs"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec005f823069cc5cc25f6c26ee67f6820b06b4e98e02e275afec0402a73c2ed3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This could be slow.  Maybe faster to start from zero or do binary search.  Investigate 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":"rust/lance-encoding/src/array_encoding/logical/list.rs"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"a358a1e110cab88226b93bfe737f8deca68fb3c723cdcbd9f2b1c071bdb239ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// as well. (TODO: Test and enable large lists) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/logical/list.rs"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"436c3e8d1906ba3b97c08a0a93377a6b4a77f3ac349db097ca83af09499bd2e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: do we really support values greater than 2^32 bytes per 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":"rust/lance-encoding/src/array_encoding/physical/value.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"81051edbf3fd07f07bf8fc76605056201be0dfbb23b118592c8928e775b53149"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Change PrimitivePageDecoder to use Vec instead of BytesMut \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/physical/fsst.rs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c751f77f501dea28c808b523b6745ce81720e4cd3c5a0d16dfdcf12184b4963"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This copy should not be 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":"rust/lance-encoding/src/array_encoding/physical/bitpack.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a84382e069124a11896a57165ea8c9431f145e265a0ad47a684a4e8ad6aa21d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // Normalize and cast (TODO: could fuse these into one pass for micro-optimization) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/physical/binary.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"89a26fd2499db1b93d079cfd4e304000b57f783743bbe0cc7a644279d017795c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add support/tests for primitive nulls \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/physical/basic.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"a781fafe32b558053d328265992b0b5b8ab451505f772e9e6aff75ac29580d34"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add tests for the all-null 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":"rust/lance-encoding/src/array_encoding/physical/basic.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"49963e8070cefe93e7d3cb3d4372527282253f6758b9aa0e6fcf8a1895324bd0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // Early exit when schedulers are exhausted prematurely (TODO: does this still happen?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/struct.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb1b5e4b73584965e1901d0db6a500e7e52eaf94addf0d76b6b2403d235afbf9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// the decoding of the block. (TODO: test this theory) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba68d2aefeff815b39f52ef362978a81a5090cf28311fe5c280d32179c3c9893"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Right now we just load the entire rep/def at initialization time and cache it.  This is a touch \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":1683}}}],"partialFingerprints":{"codehealthFindingId/v1":"90cd8c29c1381b3d3d863c66f59fc9ccd1f53a79edac450e4d7c8cc9d5ce48c2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Kind of inefficient we parse the control word twice 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":3901}}}],"partialFingerprints":{"codehealthFindingId/v1":"3132fbcba4f80eababffd1c18245235d628f1b91aef86a1397ba5cadc7f12792"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: We should concatenate metadata buffers from all pages into a single buffer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":5418}}}],"partialFingerprints":{"codehealthFindingId/v1":"e352e6574d3dd8cc85aa843090a9a87534104beef8326b34f876af8cf6ba4970"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This is a heuristic we may need to tune at some point \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":5661}}}],"partialFingerprints":{"codehealthFindingId/v1":"00dd808d11a2831df41b7a49ed1797438c3348786549e5e0ca48d9b441c7ec87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Can use unchecked 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":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":5993}}}],"partialFingerprints":{"codehealthFindingId/v1":"e642f0f9a0690946c7d6955b223d3e12b9120c2aa0ffadb7a78a37d1edc8e891"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Parquet sparsely encodes values here.  We could do the same but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6457}}}],"partialFingerprints":{"codehealthFindingId/v1":"67e8b510984266ff842da426a37315b93cff131da1e2fb7729adcfb2c61b8105"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: byte pack the item lengths with varint encoding \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":6641}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce0ae605cce4a000f9639a978e0268c7171cd27ac9684d35852f8fa157f4e31f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: https://github.com/lancedb/lance/issues/4809"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive.rs"},"region":{"startLine":7397}}}],"partialFingerprints":{"codehealthFindingId/v1":"22eb202d79372a8831dc872a285e957b923f2167ecdbcdeba13cb1c24e871e52"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: In the future we may allow metadata buffers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/logical/primitive/fullzip.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"25bc5bae3307691af693ff18728a9f58fe30a63819b43e794c4a00515815db3b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Fast path when there is only one null index? (common 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":"rust/lance-encoding/src/encodings/logical/primitive/dict.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"19aa0cb3e0a1557ac50a1afbe435de207f36f4f3d3cd764436f499dec1554885"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: a follow up PR to support \u0060FixedWidth DataBlock with bits_per_value == 256\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":"rust/lance-encoding/src/encodings/logical/primitive/dict.rs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a38bb8733fa01887a231380b69e59321bca8f50a50324f057c1d29deaff49ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //! TODO: This seems to be potentially limiting.  Perhaps we should create one symbol \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/fsst.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff2d3a3ef2a5172544ae5d2ddd712135bcff37de66badd86d94fbf0d82e8772b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Should support underlying 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":"rust/lance-encoding/src/encodings/physical/byte_stream_split.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ed36124e1c2980cc3912caa288798d914b86ac507d95f17f5f185ecab54a6ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support setting the level \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/block.rs"},"region":{"startLine":586}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5334911e380813039f223b7f767d81dca39681b99dec83bd91e1cded8a78198"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support underlying compression of data (e.g. defer to binary encoding for offset bitpacking) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/block.rs"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"40bd0f3b10451a1d9647ad1eb6926e14fcb2d12040469af8633a156925839f8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Could potentially compress the data 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":"rust/lance-encoding/src/encodings/physical/bitpacking.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"0264e2fd6cdfa5bd45b0257b5fb8ecabbc825fcfabfafc96ae404fb96a7379e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support compression of offsets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/binary.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"5776e192ab0e5b05cbb4dd708fd31304f7e3d7c941a50451b756c4e6998e8c25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support general compression of data \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/binary.rs"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6863823bc542192fd2cd06e001c34e584d9874e296d64e84716cf3fe7999cf2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (https://github.com/lance-format/lance/issues/4783)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/encodings/physical/binary.rs"},"region":{"startLine":813}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7cf048aebf0309c70b68282a042c2da05ec1806902e9ed26e3d07c67a717ea0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Caching \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/reader.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a0492fe8b1e070c009bddb04afb5a694325946e7af53d39db1062da14360fdf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Once we have coalesced I/O we should only read the column metadatas that we need \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/reader.rs"},"region":{"startLine":794}}}],"partialFingerprints":{"codehealthFindingId/v1":"73caf8ad7cf072e483bb115ee022a50a2a5ea65cabcbeac7a297ba544ca526a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add V2_1 (currently fails) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/reader.rs"},"region":{"startLine":3167}}}],"partialFingerprints":{"codehealthFindingId/v1":"58407e61279cacd2a8bc48b96e84a9a35f1d36bfc4afb65fa83dd08865f47340"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: consider read_chunk_size before submitting requests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/io.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe7354feca68420834198138c57d9e3e0cbcb7ebba6268c494632b23e0e7d511"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use tokio to make the reads in parallel. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/reader.rs"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5c6b014a8d420c27da2733a556769041e5e85b3dfe6693324332dd3409a9244"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: read them in parallel. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/reader.rs"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"124551d9d9224069d43b45a0f0690bb79ba749d24f01eb5dcc687e495006f349"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make min batch size 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":"rust/lance-file/src/versions/v1/encoding/binary.rs"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebd681ed8fcb1cef88986446d3cff619cc5c1c11193dc50d3f48c2af94bee282"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make reading positions in chunks 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":"rust/lance-file/src/versions/v1/encoding/binary.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"70bd848bda52a2bbf8057ec1ab27763dd0afca3d7b575a6aacfc3bde969d0095"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Decimal256 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/writer/statistics.rs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"7734090b7d72d5484f437fbb02f8d58612e8bab52bf4556fe23954d697f7cb90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Decimal256 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/writer/statistics.rs"},"region":{"startLine":919}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e551153acc1059c39f6632868360aa3245b72d5a4d022a4db5d83b5dbbcf563"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: these max values shouldn\u0027t be incremented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/writer/mod.rs"},"region":{"startLine":1139}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8e75838e6b725929382d42f4e620c82a81509326c924f4159a65698546a70f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Make these crate private once the migration from lance to lance-index is done. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ee9d30935749aa65aef01fc1840f18f01c3f9303794c2037d400351ffdaacda"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: should we support fraction / float number 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":"rust/lance-index/src/vector.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"e98dbae5972df3dba8161c24d9f6f8035d93ee5b5106fec186c3fd628187c9b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: In the future we should be able to do case-insensitive contains \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar.rs"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"95cd38b3bfc5f7317737e680cdeeb9b3f727ab939f823b08104559c4311d307e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Test search functionality \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/zonemap.rs"},"region":{"startLine":3132}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad757ddc5ac96cae18ebf9c59f09cf5501e004a8fa0aef71534d6e75fddac20d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: NGram index can pre-warm by loading all posting lists into 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":"rust/lance-index/src/scalar/ngram.rs"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"023b24783350c8816ed6cfb825eb587f2a4b04554f8fe5b42d401ef84826589d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support IS NULL 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":"rust/lance-index/src/scalar/ngram.rs"},"region":{"startLine":2297}}}],"partialFingerprints":{"codehealthFindingId/v1":"e67e81db781c4f8358feaee21eaa2067b59f676b739a1ca509d711a3ff1546d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This causes the index to appear as btree in list_indices call.  Need better logic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bbba5a1513889d334e21fc88840aadf4430b4204c7931f7279d99334d30a632"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We should store the target index version in the 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":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"40e9b5905e2a21c4bc0d1b51c69f8692bb734b452ebf77e41bb9a42dcc0322af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We should store the target index version in the 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":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"61db5313ff6d890ca259bb5f315a5ed92bdb389262107d587af556e75d3cf8e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Do we really need to wrap the query or could we just return the target query directly? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2aa34aaf74c6268a2ef64d4a5f14d6baf4ae65e943657e3bfba20686db06093"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: maybe we should address it by https://github.com/lance-format/lance/issues/4624"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"90b4f112a63f706decfae43026c94e84ac06048e4c79a97304a2e24f81c04bbf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Need to lookup target plugin via details to figure this out correctly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":1030}}}],"partialFingerprints":{"codehealthFindingId/v1":"a438ed9e1cc5f953913b1d0a5a67af5562761fb10266f24934c49a3ed9914357"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Allow return Result 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":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":1048}}}],"partialFingerprints":{"codehealthFindingId/v1":"8354a831badcc276dc6b8f58170b0c96ebf107e585137362c86eb2d71a150685"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Use something like ${index_name}_${path} for the index name?  Don\u0027t have access to path here tho \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/json.rs"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fc9bdb8eee7a520e889cefdb28b6d27f2c40acdfdf7b542fcbde671547129dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(low-priority): This is maybe not quite right.  We should filter down the list of parsers based \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/expression.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"869b86b6c00b05169ea6655fc36f959ca9677a5a56bed45894fee37d66e0f5db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/expression.rs"},"region":{"startLine":1391}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bf06116861d985382113cea6ddb0a8b4e74d8d128b9db12c48d75c43d7f2d1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: We could potentially try and be smarter about reusing loaded indices for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/expression.rs"},"region":{"startLine":1935}}}],"partialFingerprints":{"codehealthFindingId/v1":"23ae81bd452d1110bdf76208557ce195cf8344a6b0dabd3365e2408cb5843475"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider upstreaming 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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"f94b45f83e1ce44a5190b472940cafe0cefc728c1c6bf75f5c18c07d67fc4bfa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // \u0060Matches::Some\u0060. Refining this for low-cardinality data is the TODO 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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":814}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6fe62d498b7917412c9617b2f3b38816a156dc218a7f28662af04484c3bd90c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: the lookup batch retains a per-page \u0060null_count\u0060. A fully-covered \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":2563}}}],"partialFingerprints":{"codehealthFindingId/v1":"d62030a94237e31e2d1006d28f6f197f62b9b29274fb951eee29ec70eed12ee5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Could potentially parallelize this across parts, unclear it would be 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":"rust/lance-index/src/scalar/btree.rs"},"region":{"startLine":2690}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7ff204e97f01a67c6214435f9723ecf36cdd299d632e1aa7c41b9256fe7e7e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO use rust intrinsics instead of x86 intrinsics \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/utils.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"b974357d9d9e9b0061a3b13528c8ae0cb54dd4ee9153be7a96f9da27a8235cac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO finish 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":"rust/lance-index/src/vector/utils.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"61ad40e6088e0f62e4edee3f322761485e9174678ade6d9ce57062bf947e45ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: should we rename this to \u0022VectorDistance\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":"rust/lance-index/src/vector/storage.rs"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ea397e40948704653304401bd1d483d3f4f4fb7778de5dc0bec90c43745b715"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move this to be pub(crate) once we have a better way to test 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":"rust/lance-index/src/vector/sq.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"47354b612b2cb2c466a554e44591e54211d181baea472f7dd3424a9ab3c87925"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support SQ4 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/sq.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd044709861ccbcb73870700038e9e0bf5f4d117ea3b2b84c99d52d03b0788e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Bf16 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":"rust/lance-index/src/vector/residual.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"d559b93d60edc950b641c19629cc94b825e541d1535457ead020adb0ab10f084"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use heap to just keep nprobes smallest 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":"rust/lance-index/src/vector/kmeans.rs"},"region":{"startLine":1706}}}],"partialFingerprints":{"codehealthFindingId/v1":"877f317f10deb53ca3c7e94e4d76cbb713aa0e5abd9b46dddeac4dc754549efa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use heap to just keep nprobes smallest 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":"rust/lance-index/src/vector/kmeans.rs"},"region":{"startLine":1808}}}],"partialFingerprints":{"codehealthFindingId/v1":"b21e83d01c443000ff8907894fc20b30a86d16b2a9db969623fa71168b711256"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: This isn\u0027t actually beam search, function should probably be renamed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/graph.rs"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e49b3b4b265ed2a0e918a1cf9eb1860b198a35ef1b65eda035da27442fc40d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement 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":"rust/lance-index/src/vector/bq/storage.rs"},"region":{"startLine":2290}}}],"partialFingerprints":{"codehealthFindingId/v1":"89ae83124e5b345a33a5770cd6cfa5ff3743725c9b6d9aecccb311e834bf9508"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use chunked storage \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/flat/storage.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ee775ff9a8e2cd1ef77fcb4c80ad267bc757558c6e9e934fdda4ac8d357498b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use chunked storage \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/flat/storage.rs"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf561977eca9eb2654ab7c29c64a6bcfe63f7fb12d27e414a31db6009dfd111a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use chunked storage \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/sq/storage.rs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"067c2701e0dd3648454a1818cd320e9c6b6af7b80623e663e46815551ae4d32a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: to support other data types other than \u0060f32\u0060, make FlatDistanceCal a generic 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":"rust/lance-index/src/vector/flat/storage.rs"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c2d62313cc384ebcd85bddc9d3f5b2eb4814ca99d2c96af2120184bacf062de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move these into IVFIndex after the refactor is complete \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/hnsw/index.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"3416ed162dded2c79c6fde277d73254ff047293fa123652bac9bb2c524bea87b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: HNSW can (and should) support pre-warming \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/hnsw/index.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9d8c38e520b49fc4052eeafc093ebe4bc89ab056a0337c072fcb5c2b83f18bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use datafusion execute? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/ivf/transform.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"09c8793f658d2e2b53cb762b8c0840747926c221f4b132180dda4f470966d7da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Upstream an append_many to FSL builder \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/ivf/shuffler.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"4099c19d8608c750514c00cd35cebef5a6f62faa935c9c4efbbf929ab1057df7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: support lazy loading 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":"rust/lance-index/src/vector/pq/storage.rs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"aded8a8a67e970ce6bd45ed6161de1c8e4f00c7c96fd4b6c8f46787e5128bdb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: 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":"rust/lance-index/src/vector/pq/storage.rs"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a765d6c7791cde8e357cd9a7d06a54a7088e2f50b254df857406b74e6064ef3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support bf16 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":"rust/lance-index/src/vector/pq/builder.rs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"402b89b010903a81aba135ff26fcc4458060d56bdf0c126d025504d7bfe339e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: change to read_at()? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/traits.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"42a83c38b047bf0a7dab3316ffca281ee377b9f8ffec28cd58c1c5aac2d9d002"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: At some point it would be nice if we can optimize this away but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/scheduler.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c2fb281732ca8e363a74d012124340f05e13a568a83f49abf3197e3724aa5a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: At some point it would be nice if we can optimize this away but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/scheduler/lite.rs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"314712ece16d7fd9e57e048d488e9cc8701564e62ed334df5c6b8e14e0570a57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use constant size to support R2 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/object_writer.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"42b4a8b2cfb7c423aad30dc5001635bfc829a2e8975b9194ba5373894f4277af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Make max concurrency configurable from storage 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":"rust/lance-io/src/object_writer.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"258af5e6e2691d2ba835fc6b1e8671592b8fd3e2d2d2d732f552b001be026675"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Clean up windows/unix stuff \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/src/local.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd958cd7b1e9ebc92d437eb4ae436ab804a04fe3e7d988f39d8bde26038c95ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: improve CosConfig in opendal and add more storage_option 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":"rust/lance-io/src/object_store/providers/tencent.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"450dbbdc54fa8e5603ed8c4f33ccf5716c25d52bf153befd14c79e91accfbef1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fill in other 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":"rust/lance-io/src/utils/tracking_store.rs"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d7bd81eaf37a67f7d37d9ae2f80d5979cc31ff86082cf2222e3dcbe75553f98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Once we re-use this logic for S3, we can instead use tests against \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-io/tests/gcs_integration.rs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"7381487a8f1ea87a57ea043f028de663a147ca314054c6327807ac02c294add0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: SIMD needs generic specialization \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/benches/dot.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"9edf5e049d7d1f490de6ddc2b621a9168b7a36ae012440cb9f0c20d965d96622"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: if we detect there is a run of nulls, should we skip 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":"rust/lance-linalg/src/distance/l2.rs"},"region":{"startLine":974}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9ce90886a4a6359737dc89bf13a011c81543dcdfe0552843434532b677bf15e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: if we detect there is a run of nulls, should we skip 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":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":793}}}],"partialFingerprints":{"codehealthFindingId/v1":"10fb0b821762c614f518bcc47b84d08e5184e92f4d343f228a729f1d49838419"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: if we detect there is a run of nulls, should we skip 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":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1361}}}],"partialFingerprints":{"codehealthFindingId/v1":"a08589f1df7cdafba0c0dfd78bcedbd1df9c38d0ab241757155b205ede5a87ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We could encode timezone info 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":"rust/lance-namespace/src/schema.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a13fd284d86146cf0eb062f0fd259c07210095952d98883cfb1b3fa3757569c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/benches/row_id_index.rs"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e22cd1d5e0bcbf42b0954b4193ad686a481f115aae3a29923c90b5dc5c8f28e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: we should compare tombstoned vs compacted. We don\u0027t mind the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/benches/row_id_index.rs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"c48e9d023ca4a2f46c0dab2f46b07e92c19ea88a4e6cc129f2f5bf2383d31e12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: collect size of sequences when serialized \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/benches/row_id_index.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"f18da64051c44f1f10eb65cabd4b7f2c3e72f6a15368cbac971415964abe2bb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: also show building a BTreeMap and HashMap \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/benches/row_id_index.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"b58f5a85326ca4a8eade327dbf2b36ec09e9c8d73af616959e1a01c9999f80be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: replace this with Arrow BooleanBuffer. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"44a0f0ce449dad3806a74c016f7a741794b1edce140efe69c391140a4a001c89"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add other optimizations, such as combining two RangeWithHoles. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"07ff304e29468516d766b360e207e5666ca8eacc5ba997e410f7a6c90e87cf46"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Could probably optimize the sorted array case to be O(N) instead of O(N log N) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids.rs"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"991bd6dafaf4278a002bc77258b8a09bf6e4f016df2ba57289cf4b3a7217d0c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Optimize this so we don\u0027t have to use skip \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids.rs"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e97b96167f5a286815166595034ee116b94ec2de684f820eb3cef935bedc1a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: return an iterator. (with a good size hint?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids.rs"},"region":{"startLine":964}}}],"partialFingerprints":{"codehealthFindingId/v1":"74cb6763b32b18a1d70e834a9f3810884319bd5ff809a60eb831d61cba819227"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add isolation_level \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/io/commit.rs"},"region":{"startLine":1737}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d14798d6543d9fb6d7e0a7a7253b1dbc229c6db65070490a6da2cf991146043"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: why non-exhaustive? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids/serde.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba7780ec60658d719e5d29adb046d63e336ab6760afd6022891a38303ec2d136"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: shouldn\u0027t this enum be non-exhaustive? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids/serde.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"d02777b702d727bf1f77e255d952cf0db56d14ece229cab7c01ec2a159641c5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: we could write a more optimal version of 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":"rust/lance-table/src/rowids/segment.rs"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"8407bfbe3a5c9325352589f50e4aea97bd275a56cb6319460a3a856074ce5e27"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: can we enforce these assumptions? or make them safer? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/rowids/segment.rs"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"317d90d044ab2885b63d22e4cedba52c28c6cbb314314e52913de7cc201e07ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add additional validation. Consider consolidating with various \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/validate.rs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9bf7cb0c03787aacd10f2f83a377a4c7ac2b1cb83a7e7b3b8a32b994d8c189b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: write to a separate file if large. Possibly share a file with other fragments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/row_version.rs"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cbc950953a319c3d4eb5ba5f534dca2485e25fd08faad83dad4a4eae2392218"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: handle 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":"rust/lance-table/src/transaction/proto.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1c49dad76f0881fe09386d07fbeba857cc9ff9ae53e5bc5e99047508313d7b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: handle 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":"rust/lance-table/src/transaction/proto.rs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"07077c86b75c9f4e0b8715dab797b79a9ebbd6eee4e673f2fc6797ac0f0fde80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: handle 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":"rust/lance-table/src/transaction/proto.rs"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3ffd32d046e977516f71ab2ab40b8d4c96d7845c3c98a51cc8c6dde872005b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: handle 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":"rust/lance-table/src/transaction/proto.rs"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4f62cf4e1a7cc99caa078b996fb5c911a9f4d2a81b6bfa45faf4813328d1925"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmeng): check new file and fragment are the same length \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/manifest_build.rs"},"region":{"startLine":1299}}}],"partialFingerprints":{"codehealthFindingId/v1":"bafa4799f4a7d9fd11d036f475de0119a6072648cf6879e74100b1c9ce7da31a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: we can make it so the vecs are always constructed in order. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-table/src/transaction/conflicts.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"43edbe374bdba9b2d1f04f1112b0cb4f488c76612f81a1675ba88baa78e456f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //! TODO: Take parameterized input to specify dataset URI from command line. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/benches/scan.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"9503b3b45af3aab40e8e80ae7ed8a4f60139c30b2d02d92231685016a9edef8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: At some point we should just fail if the index details are missing and ask the user to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index.rs"},"region":{"startLine":2517}}}],"partialFingerprints":{"codehealthFindingId/v1":"dabb9e9119f0d7f5382bb74e3831f9138bd3e05399c8ebdc380bd400692acc7b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: we need to change the legacy IVF_PQ to be in lance 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":"rust/lance/src/index.rs"},"region":{"startLine":3459}}}],"partialFingerprints":{"codehealthFindingId/v1":"0080477d15ee1a28aa431f60cf986115ea5292d2a180987c20a3290e557fd814"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: once metrics are working on FTS queries, we can check the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index.rs"},"region":{"startLine":8590}}}],"partialFingerprints":{"codehealthFindingId/v1":"79b4a2a91cedc78ebf712678e0bd0665e224cdc403eebbfec922dc7a18381576"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: once metrics are working on FTS queries, we can check the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index.rs"},"region":{"startLine":8789}}}],"partialFingerprints":{"codehealthFindingId/v1":"563d525eddd0bc2cf74768b31654beb826a4e37ac1f7cf9d71bdd50c31d3d4f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: consolidate the count_rows into Scanner 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":"rust/lance/src/dataset.rs"},"region":{"startLine":1695}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a12ee85877ef67f66b773445170eaaef76b829d0a678bd130aa65475faf74b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fix scan plan to not require row_id for count_rows. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset.rs"},"region":{"startLine":1701}}}],"partialFingerprints":{"codehealthFindingId/v1":"39ef206612532251f3faccbd8d25ad8206158a3c8fd3083d4b1eca5352c0bcb2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this API should support pagination \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset.rs"},"region":{"startLine":2629}}}],"partialFingerprints":{"codehealthFindingId/v1":"71b84352b4b8c707f6681269fb8b4c4fa89c538097f88f6de4e6583e72ed97d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: In the future, we can develop different strategies for selecting target bases \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write.rs"},"region":{"startLine":2381}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2c6b8da92af0f89a266fa80188f53dbbf73a90a78dc9637b9ee3172ac8ae963"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: optimize this to use small value for each 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":"rust/lance/src/dataset/updater.rs"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe0f252c649472f8e424d8cf9708b9b297ef978b1c22b0762afd9cc0920d9995"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove this once the bug is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/take.rs"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb0c89e678d8c1fe270ee84b8a65eff20398ae0339b63998175faceb6d21a79"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: the structure of the updater prevents batch-level parallelism 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":"rust/lance/src/dataset/schema_evolution.rs"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e65fcb1d9b145a0f7519185f49e58753667fd0794f9d1ccd3cca7b94ea59e47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Make it possible to alter blob columns \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/schema_evolution.rs"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"af706d0356b58e9055275034901d75fb00fdc9a988e24b108ed9578f47830a59"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: adjust the indices here for the new 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":"rust/lance/src/dataset/schema_evolution.rs"},"region":{"startLine":1145}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc1b9df598652806f1426527db066bc5c547618b74078f03d712923100d16ca1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(datafusion-54): migrate off the deprecated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":2771}}}],"partialFingerprints":{"codehealthFindingId/v1":"009e8c55b7415ac44b0ef9e3b62f801bb8e6bd216077518020f9be28603d9368"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(datafusion-54): migrate off the deprecated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/count_from_mask.rs"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f3c6b0578674ea0db6f7c40280162a1729b8d91f643ff3f3286b0f4f539a0a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Does it always make sense to take the ordering columns here?  If there is a filter 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":3380}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d2aeb77dded236d9ea118cc340de1d42019155e03b255b9293423e17e72345f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Could maybe walk the query here to find all the indices that will be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":4820}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab7cfe30eb86a4c204faa5282cc805427e68ce0a55a8a8ef7f34894c71d9374d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: rewrite the query for better 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":5227}}}],"partialFingerprints":{"codehealthFindingId/v1":"81083e727d4bfea3de85e26dd12ad38e19184916ca85cd7992c97ce29a7d5b4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: improve the recall with WARP, expose this parameter to the 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":7755}}}],"partialFingerprints":{"codehealthFindingId/v1":"b255bcc68977bc4ad49675a58040ddc750f089c71e93843b64c6dd60e0f6b11d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We could enhance ScalarIndexExec with a fragment bitmap to filter out rows that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":7860}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e83bb9c2bc76969c62c6d398e3d77503d63d6bf7adde3b9ef78caa8eacf7cca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: re-enable diskann test when we can tune to get reproducible results. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":13358}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b84220e16c912385233bdb28653f5f9acfc2024450eaa0df138b22ab71f1dc6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // distance column if included always (TODO: it shouldn\u0027t) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":13964}}}],"partialFingerprints":{"codehealthFindingId/v1":"144e3492ee4da8a49ed1f8ccfaaf46ad03c47f8cfc094d54ec3213e0588d0477"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: enable compaction for stable row id once 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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":14203}}}],"partialFingerprints":{"codehealthFindingId/v1":"64bc521bdffc50e7b9da6f0285b6cbe8b8d952544d791592370a643764cda84a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: we could write an optimizer rule to eliminate the last Projection \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":16603}}}],"partialFingerprints":{"codehealthFindingId/v1":"2566d3d833daee1926ac67084e39b06c96085dc3003f85911245b4cbd3462e9f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: i is scanned on both sides but is projected away mid-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":"rust/lance/src/dataset/scanner.rs"},"region":{"startLine":16713}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe193d5e3349cb94426fd27a31bb41f5462d2ef2bc9a261b23330de86433fa11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: ///   TODO: Need to support schema evolution case like add column and drop 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":"rust/lance/src/dataset/optimize.rs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"edec44e6128ff03e071b574586899b0e5562fdea1d9b6a6d9a05cf89ac1a0a93"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME, change this method to streams \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":2188}}}],"partialFingerprints":{"codehealthFindingId/v1":"8748482592ef4dce35a64d9e24eccb56a7ef21346d97a0d9b26aa71e62d74c9f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(overlay perf): this could be avoided by teaching \u0060ReadBatchParams\u0060 to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/fragment.rs"},"region":{"startLine":3568}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d83a61a687c677367a994bc971e4e99eeea04571d40a29b4133e2442f21ad3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We can\u0027t cleanup invalid manifests.  There is no way to distinguish \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/cleanup.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba1505726ba5d56acdf36326b2c3f238ee5498033bab989a734fb1c5d08a79de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: provide alternative default than null. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/tests/dataset_merge_update.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"04977adfbc300db94898a0e0cf79feb339e2b914a75ffce2e9593dacc640e090"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(stable-row-id optimization): merge_insert treats the whole schema as modified \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/tests/dataset_merge_update.rs"},"region":{"startLine":2562}}}],"partialFingerprints":{"codehealthFindingId/v1":"128d4bf2e4946ba98dd0c594c22cf9bfb85b44be5aba962c32da0035a26a3209"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support nested column references. This is mostly blocked on the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/update.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"a428d76525cc1d2cc194af1c8bcb68e854d64b11535b7e4d4dfa054f692b6711"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: set write params \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/update.rs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c25a07bea4d67e92f5414a005a6d03b2d63afac104c3765a88f78c2e3a05fbd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support distributed 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":"rust/lance/src/dataset/write/update.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"fef21b050396996ee19569c7286c068f6ba0c821d50d32dcfc2d3a55e498c747"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support multiple bases for update \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/update.rs"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d215f4c67ac3ab988fba17e0c3374838327fe570963395a5112c2809720ccf5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: choose per fragment inside the write sink, where the matched row \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"c76123ded4db47d88969e94db3b33c4c6cc57ef1508165da2ecc0537c5e438a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: we could skip scanning row addresses we don\u0027t need. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":1805}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e275ab1e32cbc22bff0b53bbc6576a8a350874ea1d3ecc8d946c6267e78ff87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support write params. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":1934}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b1b014895f60e8455be866c5a86033f2702d89270bfef772e14b985224d021b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We should not be modifying the id_index here.  A merge_insert should not need \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/merge_insert.rs"},"region":{"startLine":9262}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed63f860f6e642a5e5049903e686a831fcb9292311d6a4398adbbc560af48a4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make these parameters a part of the builder, and add specific 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":"rust/lance/src/dataset/write/insert.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"35e1a6f36cbf3d4a637943848372672cfc388f6797b5b6c9f39b21b16378dd3c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This should be able to split the data up based on max_rows_per_file \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/insert.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5ce0159432c8ef67c896968199c9ad45a766750905ab1a4347d1ba57d5c22de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Reject conflicts that need to be retried. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/dataset/write/commit.rs"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ee8963a255850b0b54545efdc093d53011d11dd46fdb50f5dbad182a2a2fe53"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: support deriving all the original parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":2169}}}],"partialFingerprints":{"codehealthFindingId/v1":"495af0f3843608a8a99516afa250f8256eba27af9a89825b2aae97196ea807fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: support consistently deriving all the original parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":2191}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1a6b93c9faa00d1759e4235f4814c0b7b9dcc85a5f41d0c6acdebd9b861075a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: support consistently deriving all the original parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":2204}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a6e477cecc0f651db5bb9bcef36fc573c4ef50ff1c6505d77572dd2a343933"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: support consistently deriving all the original parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":2213}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d434b8f7a91e30220f725a73a9119bd14656b55b0f90fcb00950492fa33b7d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: support consistently deriving all the original parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector.rs"},"region":{"startLine":2224}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8838540e79198df98ade4a15549509fa7dcde22f4da2c3a59b04875031eac65"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Allow users to register their own plugins \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/scalar.rs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"509eca7c33fc0fb19a3dafd6500c1c305cceadd02a97ab7af653858a113ca1a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(row-map totals): also validate the transition\u0027s row-map label \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/frag_reuse.rs"},"region":{"startLine":1418}}}],"partialFingerprints":{"codehealthFindingId/v1":"da045c8f2762aa19ae3f13d1d32edc888c86c006f087de645550c8a50fb4a697"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fix after https://github.com/rust-lang/rust/issues/51114"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/create.rs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc8e7db61ff21c698581388b536d01fd40190851b9b8f8fd7080924f60fa2eba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Evaluate cache size accuracy versus latency impact. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/frag_reuse_reader/cache.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cf23b7634a9beb99a77db44bb7f95181baf05b2b426bf0be9f589fae3342322"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: consolidate IVF models to \u0060lance_index\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":"rust/lance/src/index/vector/pq.rs"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1ad2573b89e90a5a38572b68d948f6b5347d7db31aa1222fcf50a0ace2cc4cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support auto-remap with frag_reuse_index for HNSW \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/pq.rs"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"19f68e5625ba93c4caa00be364e51503b258325d516e3f73bd45238fdd1435fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to \u0060lance-index\u0060 crate. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"f341b6b962a6fb36671927039567d239b70cac8794d499e4067e28deaeeb8d07"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: merge \u0060lance::vector::ivf::IVF\u0060 and \u0060lance-index::vector::ivf::Ivf\u0060\u0060 implementations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":1041}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f22acec6a6e58363185644b071665ad5d5e888448788093e0b17b5fe2a70b5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: for now the IVF_PQ index file format hasn\u0027t been updated, so keep the old 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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":1101}}}],"partialFingerprints":{"codehealthFindingId/v1":"995c5b9656aa1c0aa6a232494cfb90fa87824e98a01fb88d66666e0098e0cb73"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: for now the IVF_PQ index file format hasn\u0027t been updated, so keep the old 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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":2231}}}],"partialFingerprints":{"codehealthFindingId/v1":"69d418a08fb75a679b66139970fce09489e4f123facde2ffd51c633ca99d5cde"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: for now the IVF_PQ index file format hasn\u0027t been updated, so keep the old 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":"rust/lance/src/index/vector/ivf.rs"},"region":{"startLine":2299}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e1aaf38dc5bdea513620287d32aaee7ee5cdda7895ef44d77caaf599e67a1f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: wire into a general \u0060Dataset::rebuild_index\u0060 method so users can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/details.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"78ecb7b4192938ac4d77a0604605ad1f18f6e47327084771c05db8153465c155"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: wire into a general \u0060Dataset::rebuild_index\u0060 method so users can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/details.rs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"84f8c04cfd0bfade4a829f5168e352c5237515a427136e77b76498e4e32be084"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: don\u0027t read vectors here, just read row ids \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/builder.rs"},"region":{"startLine":2780}}}],"partialFingerprints":{"codehealthFindingId/v1":"83f09a2194d3f120a0a73426f0cd974956297c29713be8a8415fd62602a20a61"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make it configurable, limit by the number of CPU cores \u0026 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":"rust/lance/src/index/vector/ivf/io.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc447a4a587a3cb56b41d1d5940d60c5ee4630516add4213e879b79be2722129"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: migrate this function to \u0060lance-index\u0060 crate. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/ivf/io.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"6521411cf0cec2f2e1a8223bd46be48ae6f44ff4017403c556c8e2fbf4508548"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extract heap sort to a separate 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":"rust/lance/src/index/vector/ivf/io.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3c9e6e299e0502acfc3e09b3d1e540016be2536902cc0da4172b54282631643"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Allow Append or Overwrite mode to retry using \u0060commit_transaction\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":"rust/lance/src/io/commit.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb2e926860bb12675e93cfa836dde476aea030d64b533c25f79e9fdfdf6c7d37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: we can reduce this by implementing a specialized CommitHandler::list_manifest_locations() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/s3_test.rs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7c561dd4629d216fb2a2556c0080ca81eb82b7262fa62cf0efb2fe3f52fbb11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fix 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":"rust/lance/src/io/commit/external_manifest.rs"},"region":{"startLine":608}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad8f84539e10de945876387987ff3e4c8744732887a4be56e895b454c05cc245"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: these tests are copied from super::external_manifest::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":"rust/lance/src/io/commit/dynamodb.rs"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b189a800ce4f5740cf6466e4abb8781f405afa65afd9e8beb76facbf83bdb77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this will change with stable row ids. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1e783e22450521a3201d838c132f264d2a1726b0e375046ea8e9d41ee6a78bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: could potentially rebase to combine both frag_reuse_indexes, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":1361}}}],"partialFingerprints":{"codehealthFindingId/v1":"23bdeb5fa7fdf113e3522dc341e8d4dd612f5df177745cd747a113fba035724b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We could potentially just drop the fragments being replaced from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":1704}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c072509c117abfdbe415c23eb1c2919301c305eeac929a765095c17ab4d0176"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: also cleanup the old deletion file. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":2373}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9b63ac193e732384c7768915cdbd97ce8452454dadf7357d3f66938b686e2f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The old deletion file should be gone. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/commit/conflict_resolver.rs"},"region":{"startLine":3478}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5e7658f27ef1381f3ac393842c98b2d0739daf14617c81cb9fcfce7e696a323"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Ideally this will eventually get tied into datafusion as a # of partitions.  This will let \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/scan.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"c45128b97938edb09a4f60ab17133ffc4ce3699e5e4bc82f4a3859036a997673"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this logs on each iteration, but maybe should 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":"rust/lance/src/io/exec/pushdown_scan.rs"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"c91c4ab59258db2a7c8aadec8ceeb60ff32e901636ecf345b93193ec977b2364"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: test pushdown with nested column once https://github.com/apache/arrow-datafusion/pull/8256"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/pushdown_scan.rs"},"region":{"startLine":1002}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe365fd775b74d64cc96e335b5b8266fe567dde11e74dda5b225244d1919c641"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: I think there\u0027s something wrong with how we handle nulls with dictionaries. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/pushdown_scan.rs"},"region":{"startLine":1686}}}],"partialFingerprints":{"codehealthFindingId/v1":"24b52a990ec36e757b04341057dc8767e72f48cd64e71bf6da5aff393a4b66d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: we could try to coalesce consecutive projections, something for 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":"rust/lance/src/io/exec/optimizer.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"67227cd5fca349b7071d308bb36979ac7f4516cc4ff5f6afce8fd296b2474252"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: We may want to search the partitions once instead of once per delta 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":"rust/lance/src/io/exec/knn.rs"},"region":{"startLine":1317}}}],"partialFingerprints":{"codehealthFindingId/v1":"5957c7a103df8da75e3d50be5adf9bde882681a3bcc49cb60344d69b438c4467"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: In the future, if we can know that a filter will be highly selective (through cost estimation or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/knn.rs"},"region":{"startLine":1543}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d8630f00f9597c2b27e15e27ed802a1a78f6c166215e7f58e172e5724d5828c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(refined-pushdown). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":1108}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bfcb427e0a9f23bfd2b1e295d5170f6a1eb4cc291d43209a031b6333aef677c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Modify the \u0022read task\u0022 concept to have a way of marking 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":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":1425}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fe6404ed73f756999e55d6ca456f795057068d39bec3070ffe375d89d89c9d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support multi partition \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":2402}}}],"partialFingerprints":{"codehealthFindingId/v1":"69c7ed33bdc64796637843acde5b1d711622ba9b34e0e62ce0b166c276fba591"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support multiple partitions in the future by coordinating limits across partitions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/io/exec/filtered_read.rs"},"region":{"startLine":3549}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b8128afa98e8ececd3b30d6dbe12bddcd49ca118d52d37c97260b4153b1e1d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this shouldn\u0027t exist, as upcasting should be well defined \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/session/index_extension.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f321e6ad21d007e276da729e247ebe28570a992ff27ae11a73c79915a3ca356"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement this trait and wire it 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":"rust/lance/src/session/index_extension.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b3c9f4d927fc81024ea359c9283f2c7684d3a0162f0279281f62f6868711b39"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: HNSW results are very flakey. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/tests/query/vectors.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5af1fa5e52c6b3de946ae86a67095308f3200c95f6d4f7cc11896345221400f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fix bug with bitmap and btree https://github.com/lancedb/lance/issues/4756"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/tests/query/primitives.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e01f74c1e2945ec2eefa28d7ef0b430447c88abe66cb4ddb087006beedc7b00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fix bug with zone map https://github.com/lancedb/lance/issues/4758"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/tests/query/primitives.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1b4218af1db0b07a36b7829d3875c2e41328ed957dbc94ce31a763dbb36cd42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add boolean to bloom filter supported types https://github.com/lancedb/lance/issues/4757"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/tests/query/primitives.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"0629ae93c9f4691432c1f23e2cc67a112271997eeeafd4145890e689fd3f1763"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // #[case::string_view(DataType::Utf8View)] // TODO: https://github.com/lancedb/lance/issues/5172"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/tests/query/primitives.rs"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd66e3b6197475ce25ca55050b44166fd7177d33350b7d46d11b7c28a16ee7b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // #[case::binary_view(DataType::BinaryView)] // TODO: https://github.com/lancedb/lance/issues/5172"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/tests/query/primitives.rs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9624afe2d09f1d12677a20470d49c40acadb6adeb29319755205ea6f1459fb3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add Decimal32 and Decimal64 https://github.com/lancedb/lance/issues/5174"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/tests/query/primitives.rs"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0fb1e75c57497f820c0bb656f6fca1e05071dd909fe3e920f85635b4c4577d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: when possible, make indices cover a portion of rows and not be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/tests/utils/mod.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d2123c5725be2b77dba7e51b9020c57c5c247358122921bff3439f4de38e2fb"}},{"ruleId":"D19","level":"note","message":{"text":"Documentation: no project overview: The document begins with a usage example and lists tracked statistics but does not state what the project is or what it does beyond its Arrow-specific purpose. Add an overview paragraph explaining that lance-arrow-stats computes page-level Arrow aggregates for Lance\u0027s columnar storage, driving predicate pushdown."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/arrow-stats/README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2b42b6c43cd24e6d8e2f1d2fffd8c72c4ce3cc900a987d9f8e4e60beb983516"}},{"ruleId":"D20","level":"note","message":{"text":"No ADRs found: No ADRs found. No recognised ADR directory (\u0060docs/adr/\u0060, \u0060docs/decisions/\u0060, \u0060adr/\u0060, \u0060docs/rfcs/\u0060, an \u0060ADR0001/\u0060 folder, or their siblings) exists anywhere in this tree. What was searched, so you can tell an empty log from a search that missed one: every directory under the tree (build output, dependencies and VCS metadata excepted), for a document that is either any non-index page inside a recognised ADR directory, whatever its name and however deeply nested (\u0060docs/adr/use-postgres.md\u0060, \u0060docs/adr/2024/0001-x.md\u0060); or a file anywhere whose name is ADR-shaped (\u00600001-use-postgres.md\u0060, \u0060adr-012-caching.md\u0060); or, when neither turned anything up, a document carrying the decision-record signature (an \u0022Architecture Decision Record\u0022 heading, or Status / Context / Decision / Consequences as section headings). A decision log that clears none of these \u2014 unnumbered files outside any recognised directory, without those headings \u2014 is not seen by this check and this row is then wrong. If that is your case, say so rather than renaming anything; otherwise, consider recording architectural decisions in \u0060docs/adr/\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2bea044ff79d7d275f5a91a6e2f548586178eaf480274c33960ad020c854631"}},{"ruleId":"D22","level":"warning","message":{"text":"Redundant methods with identical signatures and likely identical implementation logic. The distinction between \u0060_size\u0060 and \u0060_size_bytes\u0060 is semantically unclear for \u0060usize\u0060 types, suggesting copy-paste errors or legacy remnants.: Remove the \u0060_size\u0060 variants and keep only \u0060_size_bytes\u0060 (or vice versa, but \u0060_bytes\u0060 is more explicit for memory sizes). Ensure the remaining method name is consistent across both index and metadata caches. (signatures: DatasetBuilder.with_index_cache_size_bytes(cache_size: usize) | DatasetBuilder.with_index_cache_size(cache_size: usize) | DatasetBuilder.with_metadata_cache_size_bytes(cache_size: usize) | DatasetBuilder.with_metadata_cache_size(cache_size: usize))"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"18ef1f61e15f6249d4e02ee6f08dd3149b90702588218b1b962287097d1b8b68"}},{"ruleId":"D22","level":"warning","message":{"text":"Ambiguous distinction between \u0060update_columns\u0060 and \u0060update_columns_with_offsets\u0060. Without documentation, it is unclear if the latter is a performance optimization, a different join strategy, or a bug-prone variant. They appear to do the same high-level operation (updating columns via join) but with a signature difference that isn\u0027t self-explanatory.: Rename \u0060update_columns_with_offsets\u0060 to \u0060update_columns_with_row_offsets\u0060 if it specifically handles row offsets, or merge them if the offset handling is internal. If they are distinct operations, ensure the naming clearly reflects the difference (e.g., \u0060update_columns_standard\u0060 vs \u0060update_columns_offset_based\u0060). (signatures: FileFragment.update_columns(right_stream: ..., left_on: ..., right_on: ...) | FileFragment.update_columns_with_offsets(right_stream: ..., left_on: ..., right_on: ...))"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"36157f2f87b84950daa83bf9530162fed72be7ad6368ce4346c74f7e8401b18a"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent constructor naming pattern. While \u0060new_inline\u0060, \u0060new_dedicated\u0060, and \u0060new_packed\u0060 follow a pattern, \u0060new_external\u0060 breaks the pattern slightly by using a different semantic category (storage location vs storage format). More importantly, \u0060BlobDescriptorArrayBuilder\u0060 uses \u0060push_external\u0060 and \u0060push_inline\u0060/\u0060push_dedicated\u0060/\u0060push_packed\u0060, creating a naming mismatch between the builder and the file constructor for the \u0027external\u0027 case.: Align the naming. If \u0060BlobDescriptorArrayBuilder\u0060 uses \u0060push_external\u0060, \u0060BlobFile\u0060 should arguably use \u0060new_external\u0060 (which it does), but ensure the semantic grouping is clear. Consider if \u0060new_external\u0060 should be \u0060new_remote\u0060 or similar to match \u0060inline/dedicated/packed\u0060 as storage *types* rather than locations, or rename the builder methods to match the file constructors exactly. (signatures: BlobFile.new_inline(...) | BlobFile.new_dedicated(...) | BlobFile.new_packed(...) | BlobFile.new_external(...))"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce04aa5fdb307889398415704f1b3fa96fcd9b5a374692fcf4740b0500c1a455"}},{"ruleId":"D26","level":"note","message":{"text":"Split rust/lance: A catch-all name whose namespaces are dataset/mem_wal/scanner/exec and io/exec scattered across unrelated data layers. Suggested: dataset/mem_wal/scanner/exec"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"873aaf37647b2e36f806322394057f7abc0a120219edc1ece08d330c4a90900a"}},{"ruleId":"D26","level":"note","message":{"text":"Split rust/lance-encoding: A catch-all name whose namespaces encodings/physical/logical/primitive/sparse are all encoding submodules. Suggested: encodings/physical"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ebab78b34348f431ba9696b7e1ac3e5696c4418223c4136d59315b2375f96c40"}},{"ruleId":"D26","level":"note","message":{"text":"Split rust/lance-index: A catch-all name whose namespaces scalar/inverted/index and vector/bq/v3 are all index submodules. Suggested: scalar/inverted/index"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"63562388e8d9470b965bc2b6c50647de5057fcd3a27e75088fc365fd685aafc9"}},{"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":"8a2a94180680e374506b5bed794d43b8a71836765460cafdee5c9d2666727380"},"properties":{"commitSha":"e3ce8c021310b8501fe4ddb727480b5429e3312e"}},{"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":"d8040da5799144b177acc1924ed35106c41bf15c6d3b017ec4a5a23e63a50ead"},"properties":{"commitSha":"7f09191003b7c9feb0f2f75d2baec9bf36aa6c4a"}},{"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":"35424c36d54e028627926faf52a5ba56d43364bc237ab146a21064dbfa04ef4f"},"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":"d5b8f11381d61a58459ffc7c595fd52d09c03c711894a63a9578043d2338412b"},"taxa":[{"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":"ab6a2493c55d19a655268bd1fdd490362e6185e32d0d4cc231a795be70a0ca74"},"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":"67267509788958157a5eb44107ec65e73c149a221096df3377d03b65538fe691"},"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":"025c6c9adcc14e60badb01ea25d14061894f962060931604db275f2c184ce2d6"},"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":"7e58f76cabe74ae821b0c2f44fa7f1a0de480fc6ef6fa11ebb119b6d8bb8bb0c"},"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":"05396d2a42d09d25401e7f645b2df28ab7d9245a49891a99885c317d19150bfc"},"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":"403620abc74a8156182e01004c2ddc478077fafede3b664f06b6617264265b33"},"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":"941dcd35e714337e82a0451fb3dd7ff0854bd25f02217ffcd7e4e07be3db60c9"},"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":"fc34e30ba30c7c14b8480d8595fa61b87a997bf9b6ce9c3951e9d5e1219ef55c"},"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":"98f92ec644e693637c5a9a66800eca7754ed7b4c680e314afa29b27595cb3a06"},"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":"844ec5888480b5e3532c0840c13bc2e5caa6134b551c40eb6287d7eac595782a"},"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":"d5d3e90d7cfde82c55e8cfcd1331e9ee2bca00e60dd3b83ed68900a225ed634a"},"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":"d34416b167b540ac9c645a75271becd6fe162ccf274423933e569d4c8a066c2c"},"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":"b1757cfc9c6dc48970ff7d9938d941c49c14bdb8be99f8686179f192ede7f2a1"},"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":"6007de2588146d5875d19e2d56593df46b102305a36ceb460d8c4c87e968c236"},"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":"9f3e56c645cffeeac46102d1d94aa04af3c51dc25ba89f226c6cb0ba2ea0c248"},"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":"44e04a9eb90bc92ad99900081058ce1385a44cd9840f8d5142454bfd2fb10060"},"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":"1b1f17ed938fc0a95057e5015b63c031fa049d4eee2bae2908c8c33ee3f5de08"},"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":"59cc961c9fad65916bf4bb277d8e6ccdbb34fd978f86ec8c6a9fcbabb842ac79"},"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":"edcf3649751be579e3051b4cff8c4f001d010e1a175b270414e0d3e29e2eeaf3"},"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":"b9c6d567f7c0c65a58006507d8937e968c3a227428269683fcd26a3d5f28c146"},"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":"f7c00fe2c7928db50ec39d326b3969fc9bc20430cfc3857922c48d6679d77e9a"},"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":"0a75d7c252b8b3cbdf26f56d34b89df156e608bf7ab50ff4aef45c14d959f41e"},"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":"d94abc9f7a4fc68b7675af0b3649a79973184b93a5db11a610e6d64fec1dad00"},"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":"9855cec16f4635c6179aa281cdf48b1afc54e9287712230444be18f3cb2a7ad0"},"taxa":[{"id":"CWE-214","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-532","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1dc281ebff34b846ebc23b927e88a24124b43c4745b9c03b0fda7277e90bdc19"},"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":"d527c151c9ea57bc69aeee8f2f59de7c6973b6c548efad9c7c83b4c700401fae"},"taxa":[{"id":"CWE-214","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-532","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"41fe0443a9fe093075c7cee2a6fe569143990ac5d2cb44df39e28038922822b5"},"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":"bf907fde6dbe5fc81767baa51649b034d623726094186e5c261e693a88378b4f"},"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":"dec82c80711d7d98dd6838ae8c7a087658542165d959d6a3781691d4334da292"},"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":"b758b841eacf9de7256051fa3aa53ad5a0bb02610998f5eea584491d7c794662"},"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":"0264d371effee7360907bbb12375edfc2697e0092a057e7a96a0a9460062a700"},"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":"37357205fda757dc8fc483c86aee716cca3c873a7dbd11e9c9751873349e72aa"},"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":"795d240dacbcd9654dd98c8b82cc5834c4dfaeed912a12d440f9a264e3f38bdd"},"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":"272c81e013916aa115ac30897ad8919f349e23ebe1b41fc3dcb4cbc8893f5d1c"},"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":"440e5cace23c87b0c5536014492969a0e288526595b54ccfaa8fe21accd48044"},"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":"b4c7bd43c7872a2070f5a2a9dc8cb48c3461493f4d83ee4b2d109571af61a6cc"},"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":"bb736d06daf02ac7ae266756938cde3832e8ae07869ce6484a9fb0c6828d5159"},"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":"4c41c686c7c7e6553ad5b25f80fbfdf8cf9318441f7e75b1b8214aff9fb0f5e8"},"taxa":[{"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":"7b7c6834272b8368c3a4c4ea2f470af22200223f9627b87fb4f31f93cbec7cf5"},"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":"5ea7d2e3091076a6e9a06d36c3f89b120ff4549f32d90b7e0a215f13b5268a45"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","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":"d74e9d2aa8ccdf627275f914485b0d7be6f5b71014353a4698909795747625e2"},"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":"7524e7cb3c11ed3c0d6e9fc7390f98d72d3cd8046f3cc3258c448a7737175d4f"},"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":"397efe3154fa9f44aa89b0c5df1411c29a7886288da39f83603040b59d660e6d"},"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":"0378320e7af56d3d8c5ff967411af0d7f1bebe67185b8d39b40ebb7f0dbadbc5"},"taxa":[{"id":"CWE-79","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":"c167c0230705f033914571c145956453ac72e3c2a749af2e9de6ea541682a4e0"},"taxa":[{"id":"CWE-502","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":"42a7425a98ebddc080e115930f6690b4037d83ae31e1db6d313a589c4351d081"},"taxa":[{"id":"CWE-502","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":"7f7542b1c13bb9710d0644162b08c305db1f2afc9a7611a7f639620513816c2e"},"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":"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":"ce195d67bffad9b6172e2a75b99016b3b7fd4996839e30f154424dcd082ddaeb"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2066fd406960cc71e2ec19edc8442019809740fbfc57f6ff6bf144dc9c7a4ddf"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3f30724d0750aa1777332b2dbd0ec776269ba5f10d443a7a6083f504074b5716"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"61b506507e3848b40bbd9511f0a0ef6073215d973afcda51471233f3783750e8"},"taxa":[{"id":"CWE-939","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":"7387c59605952116a0677b2a80f7034584496cb9c0f28fb5fe898f063918ff6a"},"properties":{"dependency":{"package":"io.netty:netty-handler","version":"4.1.86.Final","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE 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":"b1410849fad4b2055d9a31f0619365cc81b65413c67990d2d975fd12d64d0c77"},"properties":{"dependency":{"package":"io.netty:netty-codec","version":"4.1.86.Final","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE 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":"882cf4766731cda40a5921a2310a336567d9ff3c1437b636165d9583484f3f01"},"properties":{"dependency":{"package":"io.netty:netty-codec-http","version":"4.1.86.Final","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]","[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":"dafc014fe5f25afedb642cd62cc7e452f7997057e5af1c8c43f0941360bb1d35"},"properties":{"dependency":{"package":"io.netty:netty-codec-http2","version":"4.1.86.Final","advisory":"[GHSA redacted]","aliases":["[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]"],"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":"54835da2c44a6a05971a8ea0d6f8b131f70dfb8fe695e0cb86456c27c2e3ea51"},"properties":{"dependency":{"package":"org.apache.httpcomponents.core5:httpcore5","version":"5.2","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":"2af3dd11904338141ff3d419df911c4d030895856aa93211def2ba8f37ae0ddf"},"properties":{"dependency":{"package":"com.fasterxml.jackson.core:jackson-databind","version":"2.15.2","advisory":"[GHSA redacted]","aliases":["[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]"],"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":"ecc211eeb1b34a4afa73826304cde264adc2f705c7e530dd5903e0fd4dd5a3d3"},"properties":{"dependency":{"package":"org.apache.httpcomponents.core5:httpcore5-h2","version":"5.2","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":"620b499ff5f2ff3989ba6f12b91e9fa0fc1f341ffdd248c5da19be9dc547182d"},"properties":{"dependency":{"package":"com.fasterxml.jackson.core:jackson-core","version":"2.18.3","advisory":"[GHSA redacted]","aliases":["[CVE 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":"aa866f79d9a4eff6b0997d4884781b62b176151ccaded3e0a770a6a3b7eeca93"},"properties":{"dependency":{"package":"pyo3","version":"0.28.3","advisory":"[GHSA redacted]","aliases":["[GHSA redacted]","RUSTSEC-2026-0176","RUSTSEC-2026-0177"],"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":"e43d6ec1f77bab131c342ba47a193ef236e89c81eaa6646effc4201a3bd14002"},"properties":{"dependency":{"package":"pillow","version":"11.3.0","advisory":"[GHSA redacted]","aliases":["BIT-pillow-2026-25990","BIT-pillow-2026-40192","BIT-pillow-2026-42308","BIT-pillow-2026-42309","BIT-pillow-2026-42310","BIT-pillow-2026-42311","BIT-pillow-2026-54058","BIT-pillow-2026-54059","BIT-pillow-2026-54060","BIT-pillow-2026-55379","BIT-pillow-2026-55380","BIT-pillow-2026-55798","BIT-pillow-2026-59197","BIT-pillow-2026-59198","BIT-pillow-2026-59199","BIT-pillow-2026-59200","BIT-pillow-2026-59204","BIT-pillow-2026-59205","[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]","PYSEC-2026-165","PYSEC-2026-2249","PYSEC-2026-2250","PYSEC-2026-2251","PYSEC-2026-2252","PYSEC-2026-2253","PYSEC-2026-2254","PYSEC-2026-2255","PYSEC-2026-2256","PYSEC-2026-2257","PYSEC-2026-2874","PYSEC-2026-3451","PYSEC-2026-3453","PYSEC-2026-3454","PYSEC-2026-3493","PYSEC-2026-3494","PYSEC-2026-3495","PYSEC-2026-3496"],"reachability":{"kind":"production","file":"python/python/lance/arrow.py","line":308}}}},{"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":"7d2426d5480a67430a5a5164904af1f58c7597ccee6faf733bc3babe7c942932"},"properties":{"dependency":{"package":"aiohttp","version":"3.14.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","PYSEC-2026-3545","PYSEC-2026-3546","PYSEC-2026-3547"],"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":"5c430f51c25d079e0fdc603f98de7a08790e1dfa5aeeb424f2d1aba5456169e1"},"properties":{"dependency":{"package":"thrift","version":"0.17.0","advisory":"[GHSA redacted]","aliases":["BIT-thrift-2026-43868","[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":"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":"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":"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":"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":"b66268e31417d3ec1d9cad1dbd17d7e4341c8e05f14a9c25f464279a01a178bc"},"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":"37f5ad79463258399d3219bebbc47ad65b891b554adca380bce7fe368c434b63"},"properties":{"dependency":{"package":"quick-xml","version":"0.40.1","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":"173b17e381ab5fe0680729f221f0da84289848bb73cab721e9a37c3c74e3f96e"},"properties":{"dependency":{"package":"org.apache.httpcomponents.client5:httpclient5","version":"5.2.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":"6c3db367eaba5269fb1b20ed9ee2ab85a753d0d303d333782461c2549a41399a"},"properties":{"dependency":{"package":"pytest","version":"8.4.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","PYSEC-2026-1845"],"reachability":{"kind":"production","file":"python/python/ci_benchmarks/benchmark.py","line":25}}}},{"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":"4b9c1205545c4e01fedb4fbbb01580b6d6d3083fd1fd3c059f9eb3a2d75a111f"},"properties":{"dependency":{"package":"datasets","version":"4.4.0","advisory":"PYSEC-2026-3716","aliases":["[CVE redacted]"],"reachability":{"kind":"production","file":"python/python/ci_benchmarks/datagen/wikipedia.py","line":13}}}},{"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":"476176a40f7dde5968156df41a3ad51fabec36db7b9ad2c78af7fdee298fccfb"},"taxa":[{"id":"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":"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":"3b1568673c97a5ce9b1ec5a08dba083d705b7ca92047378b6f33333438b27491"},"taxa":[{"id":"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":"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":"c790f76cf70ef3b7e11b2b2e046aa998549442297137ee1873617b41f8d8e165"}},{"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":"a0253cdb433485d93f1259fe935cad7c5df0486a99bae72ae65dbbacb158f6f3"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D34","level":"note","message":{"text":"Orphaned files with no living knowledge: 26 of 809 analysed file(s) have no living knowledge left \u2014 their last meaningful change has decayed away, so if one breaks, no one currently understands it (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; 809 of the 1014 production source files in this repository met that bar). None is large enough to earn a read-through of its own, so this row stands in for the per-file rows rather than raising one each \u2014 most significant first: benchmarks/hd-vila/datagen.py, python/python/lance/_arrow/bf16.py, benchmarks/sift/metrics.py, java/src/main/java/org/lance/index/IndexOptions.java, benchmarks/sift/perf.py, python/python/lance/_dataset/sharded_batch_iterator.py, rust/lance-core/src/levenshtein.rs, benchmarks/full_report/vbench/runner.py (and 18 more). 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: __init__.py \u2194 index.rs: \u0060python/python/lance/indices/__init__.py\u0060 (context python) and \u0060rust/lance/src/index.rs\u0060 (context rust) sit in DIFFERENT parts of the tree yet 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) \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 \u0060f317dd18\u0060 feat!: migrate bitmap to index segment based (#6869); \u00608ada2e9a\u0060 refactor!: remove index segment builder (#6997); \u00608962655c\u0060 feat: support segmented inverted index build and search (#6305) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/indices/__init__.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e1d835ca47968468f88681bccbe2d0de47048e5c7f59fed16f3e27f1c0481c2"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: __init__.py \u2194 dataset.rs: \u0060python/python/lance/indices/__init__.py\u0060 (context python) and \u0060rust/lance/src/dataset.rs\u0060 (context rust) 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 \u0060f317dd18\u0060 feat!: migrate bitmap to index segment based (#6869); \u006057d2aad9\u0060 feat: support distributed bitmap index build (#6598); \u00601ef63109\u0060 refactor!: align distributed index build around segments (#6313) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/indices/__init__.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7548ce768f96929c62d1b7154b5b40a43a9f3b353ed0b80816ddb8687c223aba"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: fixed_size_list.rs \u2194 value.rs: \u0060rust/lance-encoding/src/array_encoding/physical/fixed_size_list.rs\u0060 and \u0060rust/lance-encoding/src/encodings/physical/value.rs\u0060 change together 92% of the time (12 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 12 shared commits counted here, the most recent 3 are \u0060310950db\u0060 feat: add a packed struct encoding to lance (#2593) (at that commit the file was still \u0060rust/lance-encoding/src/encodings/physical/fixed_size_list.rs\u0060); \u00604a114b2e\u0060 feat: enhance binary array encoding, make it the default (#2521) (at that commit the file was still \u0060rust/lance-encoding/src/encodings/physical/fixed_size_list.rs\u0060); \u006095f98a90\u0060 refactor: combined capacity updates and decoding for all physical dec\u2026 (at that commit the file was still \u0060rust/lance-encoding/src/encodings/physical/fixed_size_list.rs\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/physical/fixed_size_list.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"be27f2c285fbff2ed58be6e37635733c9504b315b236a7feb524e5e1d9fda96e"}},{"ruleId":"D35","level":"warning","message":{"text":"Change-coupling hub: bitmap.rs \u2192 fixed_size_list.rs, list.rs, value.rs: \u0060rust/lance-encoding/src/array_encoding/physical/bitmap.rs\u0060 changes together with 3 other files \u2014 \u0060rust/lance-encoding/src/array_encoding/physical/fixed_size_list.rs\u0060, \u0060rust/lance-encoding/src/encodings/logical/list.rs\u0060, \u0060rust/lance-encoding/src/encodings/physical/value.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":"rust/lance-encoding/src/array_encoding/physical/bitmap.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"79792ca9087f8907eb156e95187abe5519da564431aa475b60ba61efecc7bc5c"}},{"ruleId":"D35","level":"warning","message":{"text":"Change-coupling hub: basic.rs \u2192 bitmap.rs, fixed_size_list.rs, fixed_size_list.rs, list.rs, value.rs: \u0060rust/lance-encoding/src/array_encoding/physical/basic.rs\u0060 changes together with 5 other files \u2014 \u0060rust/lance-encoding/src/array_encoding/physical/bitmap.rs\u0060, \u0060rust/lance-encoding/src/array_encoding/physical/fixed_size_list.rs\u0060, \u0060rust/lance-encoding/src/encodings/logical/fixed_size_list.rs\u0060, \u0060rust/lance-encoding/src/encodings/logical/list.rs\u0060, \u0060rust/lance-encoding/src/encodings/physical/value.rs\u0060 \u2014 none of which declares a dependency on it: one file is the hub of 5 separate couplings, not 5 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 5."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-encoding/src/array_encoding/physical/basic.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1b867778852978b23305ea0b4caa0c30b6eaa3ab0383f08eaf4e34e25ab7b72"}},{"ruleId":"D35","level":"warning","message":{"text":"Change-coupling hub: binary.rs \u2192 encoder.rs, fixed_size_list.rs, list.rs: \u0060rust/lance-encoding/src/array_encoding/logical/binary.rs\u0060 changes together with 3 other files \u2014 \u0060rust/lance-encoding/src/encoder.rs\u0060, \u0060rust/lance-encoding/src/encodings/logical/fixed_size_list.rs\u0060, \u0060rust/lance-encoding/src/encodings/logical/list.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":"rust/lance-encoding/src/array_encoding/logical/binary.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"18798005bcf5dad0adadea661abb3e06e12d4686b14c34c72b4089d6bc844a27"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: transform.rs \u2194 ivf.rs: \u0060rust/lance-index/src/vector/pq/transform.rs\u0060 and \u0060rust/lance/src/index/vector/ivf.rs\u0060 change together 75% of the time (9 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 9 shared commits counted here, the most recent 3 are \u0060201a94d9\u0060 fix: respect precomputed partitions and shuffle buffers for v3 index \u2026; \u006015420d54\u0060 perf: improve v3 indexing perf (#3525); \u00608c695718\u0060 refactor: remove generic PQ impl and trait (#2529) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/pq/transform.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9df3ba7f350780fa2a9f920e236bd3e772d74cd17600675713d4b3d5893fdb89"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: binary.rs \u2194 dictionary.rs: \u0060rust/lance-file/src/versions/v1/encoding/binary.rs\u0060 and \u0060rust/lance-file/src/versions/v1/encoding/dictionary.rs\u0060 change together 73% of the time (16 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 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 16 shared commits counted here, the most recent 3 are \u0060c878af43\u0060 perf: create local writer for efficient local writes (#5939) (at that commit the files were still \u0060rust/lance-io/src/encodings/binary.rs\u0060 and \u0060rust/lance-io/src/encodings/dictionary.rs\u0060); \u006050e00d65\u0060 perf: use an asynchronous open function even for local files (#1721) (at that commit the files were still \u0060rust/lance-core/src/encodings/binary.rs\u0060 and \u0060rust/lance-core/src/encodings/dictionary.rs\u0060); \u00609a6e5683\u0060 test: fix flaky tests involving tokio::fs::File (#1430) (at that commit the files were still \u0060rust/lance-core/src/encodings/binary.rs\u0060 and \u0060rust/lance-core/src/encodings/dictionary.rs\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/encoding/binary.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"492aed38846ffb5744874a27a497b37a83fd3a0c30827f87a923e2a589c1d1fe"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: pq.rs \u2194 index_extension.rs: \u0060rust/lance/src/index/vector/pq.rs\u0060 and \u0060rust/lance/src/session/index_extension.rs\u0060 change together 62% of the time (8 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 8 shared commits counted here, the most recent 3 are \u0060417b9a83\u0060 fix: panic if only one partition and split is triggered (#5241); \u0060a767eda4\u0060 feat!: add minimum probes and maximum probes to IVF search (#3903); \u006059b414b5\u0060 feat: support to read IVF partitions (#3462) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/vector/pq.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6042486f75b7c9088171842e3dbc6bea26e6c21eef18e384909dff3a723dc5b"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: __init__.py \u2194 indices.rs: \u0060python/python/lance/indices/__init__.py\u0060 and \u0060python/src/indices.rs\u0060 change together 60% of the time (6 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) and are written in DIFFERENT LANGUAGES, so no import can join them and they cannot be co-located into one unit \u2014 they compile and ship as separate artifacts. What binds them is a CONTRACT across that boundary \u2014 an event or message name, a route, a serialised shape \u2014 that each side currently spells out on its own, which is exactly why a change to one drags the other. Declare that contract once where both sides read it (a shared schema, a generated constants file, an interface-definition file) so a change on one side fails the other\u0027s build instead of drifting silently; where the surface is too small to be worth that, name the counterpart in a comment on both sides so the next reader finds it. There is nothing here to merge. You can check this without leaving the row: of the 6 shared commits counted here, the most recent 3 are \u00608ada2e9a\u0060 refactor!: remove index segment builder (#6997); \u00608962655c\u0060 feat: support segmented inverted index build and search (#6305); \u00601ef63109\u0060 refactor!: align distributed index build around segments (#6313) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/indices/__init__.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5df0e69adb7907d0d42593ec1235e52891e78d86da564804e7ba2e3f702776dd"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: quantizer.rs \u2194 subindex.rs: \u0060rust/lance-index/src/vector/quantizer.rs\u0060 and \u0060rust/lance-index/src/vector/v3/subindex.rs\u0060 change together 60% of the time (6 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 6 shared commits counted here, the most recent 3 are \u0060774d1bd9\u0060 feat: introduce \u0060CacheCodec\u0060 for serializing index cache entries (#6223); \u006072ae3554\u0060 feat: support remapping for IVF_FLAT, IVF_PQ and IVF_SQ (#2708); \u0060d830c380\u0060 refactor: impl the sub index trait for HNSW and clean code (#2462) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/quantizer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"896b23c3bdb70231faab638a1dc9c1fdad192ef71a424cb3a69ad6cde8167479"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: cosine.rs \u2194 l2.rs: \u0060rust/lance-linalg/src/distance/cosine.rs\u0060 and \u0060rust/lance-linalg/src/distance/l2.rs\u0060 change together 59% of the time (19 of the 32 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 19 shared commits counted here, the most recent 3 are \u00608c392b28\u0060 fix(linalg): reject a null Int8 query instead of panicking (#8884); \u0060ab268baa\u0060 fix: fall back to AVX2 f16 kernels on AVX-512 CPUs (#7428); \u0060fe875b70\u0060 fix: compile AVX-512 dist table for target CPU (#7121) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f12c46fde3a3daa50b115d6f7e5792b1ca021779775eb73514765e122dc34752"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: blocking_dataset.rs \u2194 WriteDatasetBuilder.java: \u0060java/lance-jni/src/blocking_dataset.rs\u0060 and \u0060java/src/main/java/org/lance/WriteDatasetBuilder.java\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) and are written in DIFFERENT LANGUAGES, so no import can join them and they cannot be co-located into one unit \u2014 they compile and ship as separate artifacts. What binds them is a CONTRACT across that boundary \u2014 an event or message name, a route, a serialised shape \u2014 that each side currently spells out on its own, which is exactly why a change to one drags the other. Declare that contract once where both sides read it (a shared schema, a generated constants file, an interface-definition file) so a change on one side fails the other\u0027s build instead of drifting silently; where the surface is too small to be worth that, name the counterpart in a comment on both sides so the next reader finds it. There is nothing here to merge. You can check this without leaving the row: of the 7 shared commits counted here, the most recent 3 are \u0060d143ca29\u0060 feat!: expose file writer page options in dataset APIs (#9192); \u0060fd076b19\u0060 feat: expose base scoped store bindings to java (#6548); \u006096725732\u0060 feat: add configurable blob v2 pack file size (#6508) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/lance-jni/src/blocking_dataset.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e925d31f70f5a41c29f1af2bb483b028759dae23886e86bb5c1d4a0f533bc3d2"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: binary.rs \u2194 page_table.rs: \u0060rust/lance-file/src/versions/v1/encoding/binary.rs\u0060 and \u0060rust/lance-file/src/versions/v1/page_table.rs\u0060 change together 56% of the time (10 of the 18 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 \u0060c878af43\u0060 perf: create local writer for efficient local writes (#5939) (at that commit the files were still \u0060rust/lance-io/src/encodings/binary.rs\u0060 and \u0060rust/lance-file/src/previous/page_table.rs\u0060); \u006050e00d65\u0060 perf: use an asynchronous open function even for local files (#1721) (at that commit the files were still \u0060rust/lance-core/src/encodings/binary.rs\u0060 and \u0060rust/lance-core/src/format/page_table.rs\u0060); \u006057f9269a\u0060 refactor: move reader trait to lance-core (#1393) (at that commit the files were still \u0060rust/lance/src/encodings/binary.rs\u0060 and \u0060rust/lance/src/format/page_table.rs\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-file/src/versions/v1/encoding/binary.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"85210200773b5910fd56bb33a60aa8a92d6671ba40954f5e5df94f4c4679f6a1"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: datagen.rs \u2194 dataset.rs: \u0060rust/lance-testing/src/datagen.rs\u0060 and \u0060rust/lance/src/dataset.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 \u006053382381\u0060 feat: int8 support for distance functions (#3605); \u006063227f4e\u0060 feat: stable row id support in queries (#2452); \u00609c9ac515\u0060 feat: once a table has been created with v1 or v2 format then it shou\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-testing/src/datagen.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c8d379dbf7c1d06c450ccc4c981fa7dab0c69dad7ede7270cef7dd93003d70"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: dot.rs \u2194 norm_l2.rs: \u0060rust/lance-linalg/src/distance/dot.rs\u0060 and \u0060rust/lance-linalg/src/distance/norm_l2.rs\u0060 change together 54% of the time (15 of the 28 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 15 shared commits counted here, the most recent 3 are \u0060ab268baa\u0060 fix: fall back to AVX2 f16 kernels on AVX-512 CPUs (#7428); \u0060fe875b70\u0060 fix: compile AVX-512 dist table for target CPU (#7121); \u0060d0124edf\u0060 perf: add SIMD kernels for bf16 distance functions (#6510) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7d9c4b2d1757a8f92da1f97f763c859ff134bbcdd39ea78e0873e15a5827e36"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: residual.rs \u2194 ivf.rs: \u0060rust/lance-index/src/vector/residual.rs\u0060 and \u0060rust/lance/src/index/vector/ivf.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 \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 \u0060201a94d9\u0060 fix: respect precomputed partitions and shuffle buffers for v3 index \u2026; \u006053382381\u0060 feat: int8 support for distance functions (#3605); \u00604444c60b\u0060 feat!: support hamming distance \u0026 binary vector (#3198) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/residual.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"57f62f95855c490d2364fa7056596f4f15fd7cdd1e479651720c6045aab64597"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: manifest.rs \u2194 rest_adapter.rs: \u0060rust/lance-namespace-impls/src/dir/manifest.rs\u0060 and \u0060rust/lance-namespace-impls/src/rest_adapter.rs\u0060 change together 53% of the time (10 of the 19 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 \u0060e100ce5e\u0060 refactor(namespace): remove table_version_storage_enabled and __manif\u2026; \u0060000de656\u0060 feat: update lance-namespace to 0.7.2 and align namespace declared ta\u2026; \u00605b9f8690\u0060 fix(namespace): align error handling with namespace spec (#6575) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/dir/manifest.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"719cbec71f8719bb7275df8981d7588917facc4591d0acbf1869450b8ecc4a0c"}},{"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":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c5928b81075799790cb18fed2980a6b6e8aa5072772041c9951633efe8eb3542"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d657599f6f99da1927d3377533dfc0888b34c4d84aa7d5579841fd72d0e39bce"}},{"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":"35f64a0396611dfd8e0191313b0d7cdc759890497b52affaaa727cf6ce876cfd"}},{"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":"c593d4dbd23724f337bfb8d2c1653812f143ae255bd9b59d4b3e9c37779fa6f4"}},{"ruleId":"AC3","level":"error","message":{"text":"\u003Chtml\u003E without a lang: The page declares no language, so assistive tech can\u0027t pick the right pronunciation. Add lang (e.g. lang=\u0022en\u0022)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"RUST_THIRD_PARTY_LICENSES.html"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c37b6284be74bca60e2f6a03b072231530ae3c6f892d24cfe78d55b57b5bd97b"}},{"ruleId":"AC3","level":"error","message":{"text":"Document without a \u003Ctitle\u003E: A page with no \u003Ctitle\u003E gives no name in the tab, history or screen-reader page list. Add a descriptive \u003Ctitle\u003E in \u003Chead\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"RUST_THIRD_PARTY_LICENSES.html"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b813c1bd6d0b1edd7f0d2ee914ad82e7e7a3df39db1fde41c3c1f646d79f9f9d"}},{"ruleId":"AC3","level":"error","message":{"text":"\u003Chtml\u003E without a lang: The page declares no language, so assistive tech can\u0027t pick the right pronunciation. Add lang (e.g. lang=\u0022en\u0022)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"about.hbs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4645ccdad85c641ed98932d9b7b967497baf0e80b41d02f797f2d949165dd800"}},{"ruleId":"AC3","level":"error","message":{"text":"Document without a \u003Ctitle\u003E: A page with no \u003Ctitle\u003E gives no name in the tab, history or screen-reader page list. Add a descriptive \u003Ctitle\u003E in \u003Chead\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"about.hbs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ef3ce0cb42653a7a48e00d850869bc680d9f3046fca6b02816ed72483801084"}},{"ruleId":"AC3","level":"error","message":{"text":"\u003Chtml\u003E without a lang: The page declares no language, so assistive tech can\u0027t pick the right pronunciation. Add lang (e.g. lang=\u0022en\u0022)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/RUST_THIRD_PARTY_LICENSES.html"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"81671d23d615f615b5248c74544a13b73f97bb2b3e27d3f56f33c0be32f12019"}},{"ruleId":"AC3","level":"error","message":{"text":"Document without a \u003Ctitle\u003E: A page with no \u003Ctitle\u003E gives no name in the tab, history or screen-reader page list. Add a descriptive \u003Ctitle\u003E in \u003Chead\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"java/RUST_THIRD_PARTY_LICENSES.html"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b3dcd43acc5b364dfac48d206e57b164776e606e7f38506d84aff0513c7d9b6"}},{"ruleId":"AC3","level":"error","message":{"text":"\u003Chtml\u003E without a lang: The page declares no language, so assistive tech can\u0027t pick the right pronunciation. Add lang (e.g. lang=\u0022en\u0022)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/RUST_THIRD_PARTY_LICENSES.html"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1d716759f735914f08c6e70443828e3e61bae8b8ea4a5227403b76f82e034b7"}},{"ruleId":"AC3","level":"error","message":{"text":"Document without a \u003Ctitle\u003E: A page with no \u003Ctitle\u003E gives no name in the tab, history or screen-reader page list. Add a descriptive \u003Ctitle\u003E in \u003Chead\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/RUST_THIRD_PARTY_LICENSES.html"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa6ecf5209e7af25f943213d249d199f9107a5ffc6f4bc8d902cf98bd2c030dc"}},{"ruleId":"AC7","level":"warning","message":{"text":"Accessibility enforcement below the top rung: No accessibility enforcement found \u2014 no accessibility linting at author time and no automated accessibility check in tests or CI. Add your UI toolkit\u0027s own accessibility assertion to the test suite (Flutter \u0060meetsGuideline\u0060, Espresso \u0060AccessibilityChecks\u0060, XCTest \u0060performAccessibilityAudit\u0060), then gate that test in the pipeline. What was searched, so you can tell an absence from a miss: the 5 markup file(s) this pass actually assessed, the linter configuration checked in beside them, and this repository\u0027s test and CI files \u2014 matched by name against the accessibility checkers this dimension carries. An audit run outside the repository, a hosted scanner, or a check whose name is not one of those, is not seen here."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d46019b86eff5ddad9db289e6802ac158899e980df54c34f67722442787ead62"}},{"ruleId":"M2","level":"note","message":{"text":"No ADRs: No Architecture Decision Records found \u2014 no conventional ADR directory, no numbered \u0060NNNN-title\u0060 documents in any markup this check reads, and nothing ADR-shaped by content. Design rationale recorded elsewhere (a design-notes tree, a mailing list, pull-request discussion) is not visible to this check and is not re-findable per decision, so a future maintainer cannot ask why one choice was made and get an answer."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"670b3d6e36a756d63097d0dfbf90afd5fc761308800b9354894a07c3f4e4aa14"}},{"ruleId":"P1","level":"warning","message":{"text":"CI formatting step cannot fail: \u00608. Run \u0022cargo fmt --all\u0022 to ensure formatting is correct.\u0060 invokes cargo fmt in the mode that REWRITES the files it reformats and exits 0 whatever it changed. The rewrite happens inside the runner\u0027s throwaway checkout and is then discarded, so the step passes on a badly-formatted change exactly as it passes on a clean one \u2014 it enforces nothing, and no other step in this file reads the result. \u0060--check\u0060 is the flag that turns the same invocation into a gate: it leaves the files alone and exits non-zero when anything would have been reformatted."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".github/workflows/codex-backport-pr.yml"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"c75a1698b156d918f0e8016af93723244d87b58b3dac5fb58a36dab6471af30f"}},{"ruleId":"P1","level":"warning","message":{"text":"CI formatting step cannot fail: \u0060- For formatting issues: Run \u0022cargo fmt --all\u0022\u0060 invokes cargo fmt in the mode that REWRITES the files it reformats and exits 0 whatever it changed. The rewrite happens inside the runner\u0027s throwaway checkout and is then discarded, so the step passes on a badly-formatted change exactly as it passes on a clean one \u2014 it enforces nothing, and no other step in this file reads the result. \u0060--check\u0060 is the flag that turns the same invocation into a gate: it leaves the files alone and exits non-zero when anything would have been reformatted."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".github/workflows/codex-fix-ci.yml"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"78652a047027ea2c3855a3c102e7e828f3fdc2e808bfb61ee5983436025ff6e2"}},{"ruleId":"P1","level":"warning","message":{"text":"CI formatting step cannot fail: \u0060- Run \u0022cargo fmt --all\u0022 to ensure formatting is correct\u0060 invokes cargo fmt in the mode that REWRITES the files it reformats and exits 0 whatever it changed. The rewrite happens inside the runner\u0027s throwaway checkout and is then discarded, so the step passes on a badly-formatted change exactly as it passes on a clean one \u2014 it enforces nothing, and no other step in this file reads the result. \u0060--check\u0060 is the flag that turns the same invocation into a gate: it leaves the files alone and exits non-zero when anything would have been reformatted."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".github/workflows/codex-fix-ci.yml"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"442ed47ca360a833138e38a9ae2bd5a6f9f9303a0e685e2ace0e1b8a821caabc"}},{"ruleId":"P12","level":"warning","message":{"text":"Coverage collected but not gated: CI collects a coverage report but no step enforces a minimum \u2014 coverage could halve and CI stays green. Add a step that fails the build when coverage drops below a floor (your coverage tool\u0027s minimum-threshold flag, or a coverage-gate action) so the number guards something. What was searched, so you can tell an absence from a miss: this repository\u0027s CI files AND its coverage configuration \u2014 the well-known coverage and test-runner config files, read at the repository root and inside workspace package directories two levels down, so a floor declared beside the tests rather than in the pipeline is credited \u2014 matched against the threshold settings this check knows by name. A floor set in your coverage service\u0027s web UI rather than in a committed file, or under a setting whose name is not one of those, is not seen here."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7f63c06044cf998d9a0698692df30d8873e29bc9b0c98ee829255017c1193d33"}},{"ruleId":"P2","level":"note","message":{"text":"Logging is not universal: Only 15/17 runnable modules use logging (modules with no entry point or server are excluded \u2014 they are libraries a runnable module hosts). Silent: \u0060memtest\u0060, \u0060rust/lance-tools\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"91a94e21d6d4d0e6a2003f94505b0b02b157176f0b24c4820f3f82b4447a97fe"}},{"ruleId":"P7","level":"warning","message":{"text":"Outbound HTTP without resilience: \u0060urlopen(\u0060 makes an outbound HTTP call, and nothing bounds it: no timeout, deadline, retry or circuit breaker is set for it here, and the client has no process-wide default. A slow or failing dependency will hold this service\u0027s request, thread or connection until the call gives up on its own \u2014 or never, for a client with no default timeout. 4 of the 7 files that make outbound calls are unbounded; the first 4 are listed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/arrow.py"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4f1852262f8afa30b5687aae71cd1b76745e9d71937e9379a8d20e3a113954f"}},{"ruleId":"P7","level":"warning","message":{"text":"Outbound HTTP without resilience: \u0060requests.get(\u0060 makes an outbound HTTP call, and nothing bounds it: no timeout, deadline, retry or circuit breaker is set for it here, and the client has no process-wide default. A slow or failing dependency will hold this service\u0027s request, thread or connection until the call gives up on its own \u2014 or never, for a client with no default timeout."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"python/python/lance/download.py"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"cde46431757f5436eb7e46bbd84394d282475ba3343e554585e7a7eb35b467f1"}},{"ruleId":"P7","level":"warning","message":{"text":"Outbound HTTP without resilience: \u0060reqwest::Client::new(\u0060 makes an outbound HTTP call, and nothing bounds it: no timeout, deadline, retry or circuit breaker is set for it here, and the client has no process-wide default. A slow or failing dependency will hold this service\u0027s request, thread or connection until the call gives up on its own \u2014 or never, for a client with no default timeout."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/credentials/azure.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac43a903b1847079bf49582280ed1ff8c2257de98c75589ae469378693de461b"}},{"ruleId":"P7","level":"warning","message":{"text":"Outbound HTTP without resilience: \u0060reqwest::Client::builder(\u0060 makes an outbound HTTP call, and nothing bounds it: no timeout, deadline, retry or circuit breaker is set for it here, and the client has no process-wide default. A slow or failing dependency will hold this service\u0027s request, thread or connection until the call gives up on its own \u2014 or never, for a client with no default timeout."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-namespace-impls/src/rest/tls.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"23048f4296622b0083906b8d2cecff8df0201f213f4dc95aff23a3bc8da49a5d"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060!std::is_x86_feature_detected!(\u0022avx\u0022) || !std::is_x86_feature_detected!(\u0022fma\u0022)\u0060 appears character-identically in 4 files \u2014 rust/lance-linalg/src/distance/dot.rs, rust/lance-linalg/src/distance/l2.rs, rust/lance-linalg/src/simd/f32.rs, rust/lance-linalg/src/simd/f64.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/dot.rs"},"region":{"startLine":1221}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e98f172b28bcd692cc679e8d2a27d06bbf770d6814da70740bb47faa2d7bb1b"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060is_x86_feature_detected!(\u0022avx512f\u0022) \u0026\u0026 is_x86_feature_detected!(\u0022avx512bw\u0022) \u0026\u0026 is_x86_feature_detected!(\u0022avx512vnni\u0022)\u0060 appears character-identically in 4 files \u2014 rust/lance-index/src/vector/bq/pairwise.rs, rust/lance-linalg/src/distance/cosine_u8.rs, rust/lance-linalg/src/distance/dot_u8.rs, rust/lance-linalg/src/distance/l2_u8.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/vector/bq/pairwise.rs"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d6d99b5f47b01289c8c5fd33c51ebcf9aee083f1b59cf6fb3bfbaf9c8d6d2e4"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060params.index_type.eq_ignore_ascii_case(\u0022inverted\u0022) || params.index_type.eq_ignore_ascii_case(\u0022fts\u0022)\u0060 appears character-identically in 2 files \u2014 rust/lance/src/index/create.rs, rust/lance/src/index/scalar.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance/src/index/create.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"17ea8a830ab66c90abda0245807e4186173bca1621d7e76cf4ad45b0f65556e1"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060std::is_x86_feature_detected!(\u0022avx\u0022) \u0026\u0026 std::is_x86_feature_detected!(\u0022fma\u0022)\u0060 appears character-identically in 4 files \u2014 rust/lance-linalg/src/distance/cosine.rs, rust/lance-linalg/src/distance/dot.rs, rust/lance-linalg/src/distance/l2.rs, rust/lance-linalg/src/distance/norm_l2.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-linalg/src/distance/cosine.rs"},"region":{"startLine":1662}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d19dd27395ea2de7364a0cbb2d074c4e933ab1662df04ff2eb2da73eba16c3"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060value == \u00220\u0022 || value.eq_ignore_ascii_case(\u0022off\u0022)\u0060 appears character-identically in 2 files \u2014 rust/lance-index/src/scalar/inverted.rs, rust/lance-index/src/scalar/inverted/index/search.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"rust/lance-index/src/scalar/inverted.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"50006056635f533d149944fab5cb51f4e508c48e0bfb3b67edbb8511f7c8981e"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060lowercase.contains(\u0022429 too many requests\u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060lowercase.contains(\u0022429 too many requests\u0022)\u0060 also satisfies \u0060lowercase.contains(\u0022too many requests\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":"rust/lance-io/src/object_store/throttle.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"affbdb8376ee999b0746e196457fd33899628a34059d349e2dc629ea6be6ce5d"}}],"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-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-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-214","guid":"b10ad120-fb22-1351-9348-aa23b453e815","name":"CWE-214","shortDescription":{"text":"CWE-214"},"helpUri":"https://cwe.mitre.org/data/definitions/214.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-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-319","guid":"7af97476-9f0d-4458-9163-3d2043918a1a","name":"CWE-319","shortDescription":{"text":"CWE-319"},"helpUri":"https://cwe.mitre.org/data/definitions/319.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-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-502","guid":"f7d3b296-aac0-5c5a-b706-e07faba26c36","name":"CWE-502","shortDescription":{"text":"CWE-502"},"helpUri":"https://cwe.mitre.org/data/definitions/502.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-532","guid":"1cd8877a-76e8-ce54-b40b-779af23364a0","name":"CWE-532","shortDescription":{"text":"CWE-532"},"helpUri":"https://cwe.mitre.org/data/definitions/532.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-939","guid":"12397742-f2c4-8254-8012-482c3356c551","name":"CWE-939","shortDescription":{"text":"CWE-939"},"helpUri":"https://cwe.mitre.org/data/definitions/939.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"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":87,"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."]}]}