{"$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":"D7","name":"Architectural Integrity","shortDescription":{"text":"Architectural Integrity"},"helpUri":"https://codehealth.canine.dev/dimensions/D7"},{"id":"D8","name":"Code Coverage","shortDescription":{"text":"Code Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/D8"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"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":"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":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D27","name":"Navigability","shortDescription":{"text":"Navigability"},"helpUri":"https://codehealth.canine.dev/dimensions/D27"},{"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":"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"]}}]}},"results":[{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (202 lines \u00D7 2): gluten-celeborn/src/main/java/org/apache/spark/shuffle/gluten/celeborn/CelebornUtils.java:447-648 | gluten-celeborn/src/main/java/org/apache/spark/shuffle/gluten/celeborn/CelebornUtils.java:708-597"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-celeborn/src/main/java/org/apache/spark/shuffle/gluten/celeborn/CelebornUtils.java"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c178094ac59d848fb05d69379cd5f8202c7eb8ecab260a336106f6283a68007"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (108 lines \u00D7 2): gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1477-1551 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1697-1804"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java"},"region":{"startLine":1477}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0d33d74bd8c86ab00d5793462d0a2ea0e6be4f931ae80ad29b69f50e1c26a5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (104 lines \u00D7 2): gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1639-1742 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:2045-2077"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java"},"region":{"startLine":1639}}}],"partialFingerprints":{"codehealthFindingId/v1":"783272ed83009ef1828ee93f3117be4426d10895761213945886e302e1c62093"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (103 lines \u00D7 2): shims/spark35/src/main/java/org/apache/spark/sql/execution/vectorized/WritableColumnVectorShim.java:75-45 | shims/spark35/src/main/java/org/apache/spark/sql/execution/vectorized/WritableColumnVectorShim.java:78-180"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"shims/spark35/src/main/java/org/apache/spark/sql/execution/vectorized/WritableColumnVectorShim.java"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"f67b608be4663ece8533c009962f2d9a901941f67871659707397f31d5f6021f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (82 lines \u00D7 5): backends-clickhouse/src/main/java/org/apache/gluten/metrics/MetricsStep.java:70-151 | backends-clickhouse/src/main/java/org/apache/gluten/metrics/MetricsStep.java:158-119 | backends-clickhouse/src/main/java/org/apache/gluten/metrics/MetricsStep.java:166-143 | backends-clickhouse/src/main/java/org/apache/gluten/metrics/MetricsStep.java:174-103 | backends-clickhouse/src/main/java/org/apache/gluten/metrics/MetricsStep.java:182-95"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-clickhouse/src/main/java/org/apache/gluten/metrics/MetricsStep.java"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ffc9a09c152954116ab0e6ad6f857148a14314e396d722f9414f65ce17a2b02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (81 lines \u00D7 2): gluten-arrow/src/main/java/org/apache/gluten/columnarbatch/PlaceholderVector.java:35-115 | gluten-arrow/src/main/java/org/apache/gluten/columnarbatch/PlaceholderVector.java:116-75"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/columnarbatch/PlaceholderVector.java"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b7bd024a83a4e36458512cf4ff014690a5b283f2fa72806f628fb7b93f3c81d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (80 lines \u00D7 2): gluten-arrow/src/main/java/org/apache/gluten/columnarbatch/IndicatorVectorBase.java:55-134 | gluten-arrow/src/main/java/org/apache/gluten/columnarbatch/IndicatorVectorBase.java:135-94"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/columnarbatch/IndicatorVectorBase.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"1191806f813405bfbc66e306a9df190543f7a72a1d4d589ac27cffbb5fc2c7f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (64 lines \u00D7 2): backends-clickhouse/src/main/java/org/apache/gluten/metrics/MetricsData.java:48-111 | backends-clickhouse/src/main/java/org/apache/gluten/metrics/MetricsData.java:128-1"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-clickhouse/src/main/java/org/apache/gluten/metrics/MetricsData.java"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"b822e6ad2f614e7c97a7f13be5e25affe3bee77e6bcd6c7919a737aed7c2da0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (59 lines \u00D7 18): gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:807-865 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:871-821 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:875-809 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:879-813 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:883-817 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1296-1342 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1352-1370 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1372-1390 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1392-1354 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1396-1358 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1400-1362 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1404-1366 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1408-1394 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1412-1398 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1416-1402 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1420-1406 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1424-1430 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1436-1418"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"d32dd3b80f2c1d3a2db23cc5ca71f68c84857b30a97e45d475d32f047a0a1665"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (52 lines \u00D7 3): gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowColumnVector.java:276-327 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowColumnVector.java:336-387 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowColumnVector.java:421-472"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowColumnVector.java"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"88d93ca5f455cc53bd6c9da8a0e179e7a4dee866f32b2b2a6a77d2c0ae47ce52"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42 lines \u00D7 2): gluten-arrow/src/main/java/org/apache/spark/sql/execution/unsafe/UnsafeByteArray.java:61-80 | gluten-arrow/src/main/java/org/apache/spark/sql/execution/unsafe/UnsafeByteArray.java:86-127"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/spark/sql/execution/unsafe/UnsafeByteArray.java"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5bfc9271ff37eda1efa1a00c98f2322b98c31689eac5643757c29a12d083fde"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (40 lines \u00D7 2): gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1034-1073 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:1118-1127"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java"},"region":{"startLine":1034}}}],"partialFingerprints":{"codehealthFindingId/v1":"46939d5f5bff3348f67de37d0a2e5cbe9f6ef475b3bf4dbf2728fa5fcad9ff69"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 3): gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowColumnVector.java:220-252 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowColumnVector.java:260-244 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowColumnVector.java:264-248"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowColumnVector.java"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"bafbea952eb3607a246ebcb7ad371822ed415c3ba2886cd9b115df5edaaef46f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 2): gluten-flink/runtime/src/main/java/org/apache/gluten/client/OffloadedJobGraphGenerator.java:523-553 | gluten-flink/runtime/src/main/java/org/apache/gluten/client/OffloadedJobGraphGenerator.java:572-439"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-flink/runtime/src/main/java/org/apache/gluten/client/OffloadedJobGraphGenerator.java"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfd2b1df176f3e8aba0fc25a49161681f4315cd91984659db879950f94541c21"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:2014-2040 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:2057-2083"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java"},"region":{"startLine":2014}}}],"partialFingerprints":{"codehealthFindingId/v1":"2843c2cfb43f7cb4c60274c12074973b8c55cc2820ce5a0daedc673c9498e287"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): gluten-flink/runtime/src/main/java/org/apache/gluten/util/VectorOutputBridge.java:109-133 | gluten-flink/runtime/src/main/java/org/apache/gluten/util/VectorOutputBridge.java:139-153"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-flink/runtime/src/main/java/org/apache/gluten/util/VectorOutputBridge.java"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"5427aa515798abd5be2c38ece743dbbdc26ba4e421f77b7375f324680b08c2c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): gluten-flink/planner/src/main/java/org/apache/gluten/rexnode/functions/BasicCompareOperatorConverters.java:44-59 | gluten-flink/planner/src/main/java/org/apache/gluten/rexnode/functions/BasicCompareOperatorConverters.java:75-94"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-flink/planner/src/main/java/org/apache/gluten/rexnode/functions/BasicCompareOperatorConverters.java"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"a106ee96f2183c4e1f682fe0a154f98b94a1b6975f4689e76b468161af1cfc22"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): backends-clickhouse/src/main/java/org/apache/gluten/vectorized/CHNativeExpressionEvaluator.java:75-92 | backends-clickhouse/src/main/java/org/apache/gluten/vectorized/CHNativeExpressionEvaluator.java:104-74"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-clickhouse/src/main/java/org/apache/gluten/vectorized/CHNativeExpressionEvaluator.java"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"b36cb576a0dd7903f963d1fb43cc22e7913b359863ba0e7f77a102553cbac781"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:167-182 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:780-160"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8788aa5989d621d414694a66b71e6a27d3485f87276bed0a8a99a7c470dd0b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:2179-2191 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:2193-2200"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java"},"region":{"startLine":2179}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e721b525a7d3d2e937570f3a72ff84524f1cfa5bf789c0ed48ba2ad2a8de9fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): backends-velox/src/main/java/org/apache/gluten/metrics/OperatorMetrics.java:116-126 | backends-velox/src/main/java/org/apache/gluten/metrics/OperatorMetrics.java:127-137 | backends-velox/src/main/java/org/apache/gluten/metrics/OperatorMetrics.java:138-148 | backends-velox/src/main/java/org/apache/gluten/metrics/OperatorMetrics.java:149-159"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/main/java/org/apache/gluten/metrics/OperatorMetrics.java"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"d26e5b7d4ce195de86d38372041322463528931392e6ca7be9f7bdf29285646a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:2129-2138 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:2139-2108"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java"},"region":{"startLine":2129}}}],"partialFingerprints":{"codehealthFindingId/v1":"263c25f856d3470815583cd6111f17cb5010c47fb456645d2a1b4dd6f70330da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:2239-2245 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:2252-2259"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java"},"region":{"startLine":2239}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f6eb47b42af6600b69c8a03a6d0371ef112b786d7a8357a8d3f9df408a8fea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:156-162 | gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java:178-184"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/gluten/vectorized/ArrowWritableColumnVector.java"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"53a8b8c220e8b164a5debac3b1d79178609d01e3328340cd07e9809d000af18a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): gluten-arrow/src/main/java/org/apache/spark/sql/execution/vectorized/ArrowColumnVectorUtils.java:52-58 | gluten-arrow/src/main/java/org/apache/spark/sql/execution/vectorized/ArrowColumnVectorUtils.java:87-93"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-arrow/src/main/java/org/apache/spark/sql/execution/vectorized/ArrowColumnVectorUtils.java"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"b600c879bb5ee1fc2dc4f4c788e61121fb22a5c9960f90ff7e8e19b0d8454ec0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): gluten-substrait/src/main/java/org/apache/gluten/test/TestStats.java:120-125 | gluten-substrait/src/main/java/org/apache/gluten/test/TestStats.java:130-135 | gluten-substrait/src/main/java/org/apache/gluten/test/TestStats.java:163-168 | gluten-substrait/src/main/java/org/apache/gluten/test/TestStats.java:183-188"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-substrait/src/main/java/org/apache/gluten/test/TestStats.java"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ba22579c22dd1cba0a3a2911a3c6dfd9e548d39a6e0e83042b8ca2830a16fe3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): gluten-flink/runtime/src/main/java/org/apache/gluten/velox/VeloxSourceSinkFactory.java:121-126 | gluten-flink/runtime/src/main/java/org/apache/gluten/velox/VeloxSourceSinkFactory.java:135-140"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-flink/runtime/src/main/java/org/apache/gluten/velox/VeloxSourceSinkFactory.java"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"430c321cb67553e78646f02adb83008c3868a38a9cfcfb3435a719ef491ad7f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): gluten-substrait/src/main/java/org/apache/gluten/substrait/rel/LocalFilesNode.java:178-183 | gluten-substrait/src/main/java/org/apache/gluten/substrait/rel/LocalFilesNode.java:195-200"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-substrait/src/main/java/org/apache/gluten/substrait/rel/LocalFilesNode.java"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"422c8fc12347e895f69963a4780d5f36127070f37442a653eac5eb2bb14dd6d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): gluten-core/src/main/java/org/apache/gluten/memory/memtarget/DynamicOffHeapSizingMemoryTarget.java:191-195 | gluten-core/src/main/java/org/apache/gluten/memory/memtarget/DynamicOffHeapSizingMemoryTarget.java:216-220"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"gluten-core/src/main/java/org/apache/gluten/memory/memtarget/DynamicOffHeapSizingMemoryTarget.java"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"776593a906fff8fe4c97a00654b460b55c09b0792c78dad78e84eae0d4e18ab5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): tools/qualification-tool/src/main/java/org/apache/gluten/qt/support/NodeSupportVisitor.java:136-140 | tools/qualification-tool/src/main/java/org/apache/gluten/qt/support/NodeSupportVisitor.java:142-146"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/qualification-tool/src/main/java/org/apache/gluten/qt/support/NodeSupportVisitor.java"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5203e206a115e780688cd0a36d1c349c1265ddef5983767fe8e43ce7a6e92a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): backends-clickhouse/src/main/java/org/apache/spark/storage/CHShuffleReadStreamFactory.java:128-132 | backends-clickhouse/src/main/java/org/apache/spark/storage/CHShuffleReadStreamFactory.java:169-173"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-clickhouse/src/main/java/org/apache/spark/storage/CHShuffleReadStreamFactory.java"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b878daee8f4cf29238ba414d3d606b152d4f3ae5b82cc6329c65acbcf82d996"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): backends-clickhouse/src/main/java/org/apache/spark/storage/CHShuffleReadStreamFactory.java:151-155 | backends-clickhouse/src/main/java/org/apache/spark/storage/CHShuffleReadStreamFactory.java:171-175"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-clickhouse/src/main/java/org/apache/spark/storage/CHShuffleReadStreamFactory.java"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b878daee8f4cf29238ba414d3d606b152d4f3ae5b82cc6329c65acbcf82d996"}},{"ruleId":"D8","level":"warning","message":{"text":"Coverage not measured \u2014 test suite did not build: Coverage NOT MEASURED: the repo\u0027s own test suite did not build (a C#/MSBuild compiler error in the test code), so no coverage could be collected. It is excluded from the score rather than counted as a near-zero defect. Fix the test build, or commit the Cobertura/OpenCover/lcov report your CI already produces, and real coverage will be measured."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8beb176c604706486df63d2215f767f50520c8d949b1d464345de14ded442c69"}},{"ruleId":"D9","level":"note","message":{"text":"No tests found: No test projects found in the repository."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c9bf64cbb5a4ae13d6bcd01fa3bc8d2879d860c73bc67f176ee3c2cecb8adce3"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan trace showing ShuffleQueryStage and BroadcastHashJoin stages with FileSourceScanExecTransformer parquet nodes but no context/problem statement or consequences/trade-offs: Add the problem (e.g. joining on c_custkey#X across two tables) and the decision (pushed filters, in-memory index) along with trade-offs such as batched output ordering and memory cost"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark33/10.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"032440673b666c06b88c3d7d66ebea7873a9d7b99abbcf51ba8ef561cf0e7725"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision and consequences are absent; only a detailed physical-plan breakdown with output/columns, batched status, pushed-filters, and scan details is present: Add the decision (e.g. which data source/transform path to use) and its trade-offs (in-memory vs disk cost, shuffle overhead) so consequences are visible"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark33/11.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"687811d40aef5d8d4e877b4979591f05e741db11907cfa73a2579ff60ff7becf"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan detail (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage hierarchies) is a query execution description rather than context/problem or the explicit decision; no consequences/trade-offs: Add Context/Problem: why this physical plan was chosen over alternatives, what data it processes, and any constraints (e.g. batched vs streaming). Then state the explicit decision (e.g. use ColumnarBroadcastExchange for left join) and its consequences such as shuffle cost or memory usage."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark33/12.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5069e2b3101e298a2ed42cef0ff2072f7feb253d5dd452fa68c90dcd74d567b6"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with child stages and Output/Argument annotations) plus one FileSourceScanExecTransformer parquet line for each stage in the plan; there is no context/problem statement or consequences section: Add an Context section explaining why this scan order matters (e.g. join/left-side ordering, push-down of IsNotNull filters on a large table), and a Consequences section noting trade-offs such as shuffled hash-aggregation cost vs batched scans"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark33/13.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e6d5e14831a20c6e9bc3b7385c6e70567ab536f299dacadae1bfbc9b793ed6d"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are absent from the visible text: Add a Context section explaining why this physical-plan breakdown matters (e.g. query cost, shuffle behavior), then a Consequences section covering trade-offs like pushed-filter ordering vs join reordering, codegen overhead, and batched scan semantics."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark33/14.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3c8c64ff8bbdee68a48ed5695018b6fba306809bc3fcf16af5e840588758e07"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are absent from the visible text: Add a Context section explaining why this physical-plan breakdown matters (e.g. query cost, data-shape requirements), then a Consequences section covering trade-offs such as codegen complexity or shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark33/15.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7101e0bc9f06d1fd9cdfe6c424cb0eed4338ecc01a00d76b5f922206645552c"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing query transformations and scan/transformer details (FileSourceScanExecTransformer parquet, FilterExecTransformer), but no context/problem or explicit decision beneath the plan; only one numbered subsection (1) gives any concrete content: Add an Context section explaining why this plan was chosen over alternatives and a Decision section stating what it accomplishes"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark33/16.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"29ab0f6ff5c207a12d5c2402d75371c3640ef261bb2ab4a25fbe9bb0b4822bdc"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan representation (AdaptiveSparkPlan with ShuffleQueryStage and InputIteratorTransformer nodes), but no context/problem or decision statement describing what the plan does and why it was chosen; consequences/trade-offs are absent: Add an Context section explaining the data source, the query\u0027s purpose, and the problem being solved. Add a Decision section stating what this physical plan accomplishes (e.g., computing avg_yearly l_extendedprice per partkey). Conclude with a Consequences section on trade-offs such as shuffle cost or batched scan behavior"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark33/17.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9873620c65a620856df68b33b9005895429596f2be2d7b0f18895a23e6d7fcd6"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing AdaptiveSparkPlan and VeloxColumnarToRow transformations with no context/problem or consequences: Replace the plan dump with an explicit Context (why shuffle/broadcast joins are needed) and Decision (the transformation/optimizer change being documented) plus Consequences/trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark33/18.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f4a4718054ee93c62fa3055ea1ebc6905d925ea71508fed3e226424034b0110"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with child stages and scan/filter/project transformers) plus output/column metadata for each stage; no context/problem or explicit decision beneath the plan dump: Add an explanatory Context section describing why this query/hierarchy was chosen and what it addresses, then document the Decision (e.g. which physical pattern is mandated by the rule), followed by Consequences such as cost/scan-memory trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark33/19.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c259b0bd7844b2d73894d909b105d213c1e2f1f03e10cb41e8463944bbe0fdc6"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), revealing no context/problem or explicit decision beneath the scanner clip: "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark33/20.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a64d14c0c9d1eea9ea12c0fee189e4b0ab37d1ec48777df6d3dde5d75430ffc"}},{"ruleId":"D20","level":"warning","message":{"text":"A physical plan diagram (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes) is shown but no context/problem or decision statement appears in the visible text: Add a Context section explaining why this query rewrites to a columnar-to-row format (e.g. data size, join pattern), then an explicit Decision stating the transformation path used, and a Consequences section noting trade-offs like shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark33/21.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d424104b1c15a31e9ae96aab502c8411862614df5a9e67fa528f458b849a877"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan representation (AdaptiveSparkPlan with ShuffleQueryStage and InputIteratorTransformer nodes plus output/column metadata for each node), but no context/problem or explicit decision appears in the visible text: Add a Context section explaining why this plan shape was chosen over alternatives, and a Decision section stating what trade-offs are accepted"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark33/22.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d78d99d07b831c03df780c9529f74e1cdb9328f6b877756bddc3e8f7ba5e3c9"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan trace showing ShuffleQueryStage and BroadcastHashJoin stages with FileSourceScanExecTransformer parquet nodes but no context/problem statement or consequences/trade-offs: Add the problem (e.g. joining on c_custkey#X across two tables) and the decision (pushed filters, in-memory index) along with trade-offs such as batched output ordering and memory cost"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark34/10.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ce9a60268ca6459556b19bc8f40ee7c8df40204d7ce592b23e7dd63de58e32d"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision and consequences are absent; only a detailed physical-plan breakdown with output/columns, batched status, pushed-filters, and scan details is present: Add the decision (e.g. which data source/transform path to use) and its trade-offs (in-memory vs disk cost, shuffle overhead) so consequences are visible"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark34/11.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7398c89427d34706cd0574871f5b00dd6d6ec3f1a146287c48f10982b357ad55"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan detail (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage hierarchies) is a query execution description rather than context/problem or the explicit decision; no consequences/trade-offs: Add Context/Problem: why this physical plan was chosen over alternatives, what data it processes, and any constraints (e.g. batched vs streaming). Then state the explicit decision (e.g. use ColumnarBroadcastExchange for left join) and its consequences such as shuffle cost or memory usage."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark34/12.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0544bce6f6f0e3b43895b5bfe80f0f24c0b0d9a93e416b2319ba0705a0fbcbce"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with child stages and Output/Argument annotations) plus one FileSourceScanExecTransformer parquet line for each stage in the plan; there is no context/problem statement or consequences section: Add an Context section explaining why this scan order matters (e.g. join/left-side ordering, push-down of IsNotNull filters on a large table), and a Consequences section noting trade-offs such as shuffled hash-aggregation cost vs batched scans"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark34/13.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"df78e179e7a83a8f830b4502d33d24c7c9a2c133500bb9c760ca39fc11838908"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan breakdown with output/column metadata and execution order for VeloxColumnarToRow and ShuffleQueryStage stages; no context/problem statement or consequences/trade-offs are present: Add the problem being optimized (e.g. large parquet table needing efficient join/aggregate) and the trade-offs of pushing filters vs. in-memory filtering, plus any performance goals that drove this plan selection"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark34/14.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6227a4fe9f82211fe41d6fd6478fa7ea8b195c44ebd4a477afef5c398e6d7abc"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing query transformations and scan/transformer details (FileSourceScanExecTransformer parquet, FilterExecTransformer), but no context/problem or explicit decision beneath the plan; only one numbered subsection (1) gives any concrete content: Add an Context section explaining why this plan was chosen over alternatives and a Decision section stating what it accomplishes"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark34/16.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e96b64048c855601e0f923707672f6a3db8af3c6fab862d920a8beb072ded719"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan breakdown (AdaptiveSparkPlan with ShuffleQueryStage and InputIteratorTransformer nodes), showing input/output shapes, arguments, and codegen details for each stage. No context/problem statement or explicit decision appears in the visible text.: Add an Context section explaining why this plan was chosen over alternatives and a Decision section stating what it accomplishes (e.g., optimized aggregation, shuffled join, batched scan). Consequences/trade-offs could follow."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark34/17.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2da4b7cb4e9f4bcf724e8ce8a515f43aba6b3c06a361465024a501e034dd84ec"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing AdaptiveSparkPlan and VeloxColumnarToRow transformations with no context/problem or consequences: Replace the plan dump with an explicit Context (why shuffle/broadcast joins are needed) and Decision (the transformation/optimizer change being documented) plus Consequences/trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark34/18.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"58bba0b609d65841d97b705b653e5e5f5ec804eed85c5d2493e2b212e23a6561"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with child stages and scan/filter/project transformers) plus output/column metadata for each stage; no context/problem or explicit decision beneath the plan dump: Add an explanatory Context section describing why this query/hierarchy was chosen and what it addresses, then document the Decision (e.g. which physical pattern is mandated by the rule), followed by Consequences such as cost/scan-memory trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark34/19.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a36550fbaf65a74742a3f820181abf5b978437e8d98d19528e0eac27594fca91"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical plan dump showing query execution (AdaptiveSparkPlan -\u003E VeloxColumnarToRow -\u003E AQEShuffleRead -\u003E ShuffleQueryStage -\u003E ColumnarExchange -\u003E VeloxResizeBatches -\u003E ProjectExecTransformer -\u003E BroadcastHashJoin...), with no context/problem and no consequences; the title \u002220\u0022 gives no signal: Add a Context section explaining why this plan was chosen (e.g. data size, join ordering) and a Consequences section noting trade-offs like shuffle cost or memory usage"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark34/20.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"43e5c003639b1c91fd3aedc1b9306f8c61a9dde0f0790fa0289372715d8e0519"}},{"ruleId":"D20","level":"warning","message":{"text":"A physical plan diagram (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes) is shown but no context/problem or decision statement appears in the visible text: Add a Context section explaining why this query rewrites to a columnar-to-row format (e.g. data size, join pattern), then an explicit Decision stating the transformation path used, and a Consequences section noting trade-offs like shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark34/21.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3e0bfcf5377eeb8f377255e79ae5077f4745f9c7f15f2838a8b1da6030eb558"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan dump showing every node in a query plan plus its arguments and output schema (e.g. FileSourceScanExecTransformer parquet with [c_custkey#X, c_phone#X, c_acctbal#X], FilterExecTransformer with the join condition), but there is no context/problem statement or consequences section: Add a Context/Problem section explaining why this query (or these joins) were chosen and what trade-offs they carry, then a Consequences section covering any performance/memory cost of the plan\u0027s batching/pushdown"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark34/22.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"17e869cd58dad8c641266e90d75d484029bf486018f35e8819de68e0f15039c9"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan trace showing ShuffleQueryStage and BroadcastHashJoin stages with FileSourceScanExecTransformer parquet nodes but no context/problem statement or consequences/trade-offs: Add the problem (e.g. joining on c_custkey#X across two tables) and the decision (pushed filters, in-memory index) along with trade-offs such as batched output ordering and memory cost"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark35/10.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"33130859d0300df5ace647d9c11ee2f124ca6aa920db8712e754a0112491c626"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision and consequences are absent; only a detailed physical-plan breakdown with output/columns, batched status, pushed-filters, and scan details is present: Add the decision (e.g. which data source/transform path to use) and its trade-offs (in-memory vs disk cost, shuffle overhead) so consequences are visible"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark35/11.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0d651ac20c9da99ffe0782a36733908a2dacd8129c97c6a2e3376a5d87eccdf"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan detail (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage hierarchies) is a query execution description rather than context/problem or the explicit decision; no consequences/trade-offs: Add Context/Problem: why this physical plan was chosen over alternatives, what data it processes, and any constraints (e.g. batched vs streaming). Then state the explicit decision (e.g. use ColumnarBroadcastExchange for left join) and its consequences such as shuffle cost or memory usage."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark35/12.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"186da487d42c22935e8e8eeeb5d839aa85f2baec9ae113eb619fc01c7ca58646"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with child stages and Output/Argument annotations) plus one FileSourceScanExecTransformer parquet line for each stage in the plan; there is no context/problem statement or consequences section: Add an Context section explaining why this scan order matters (e.g. join/left-side ordering, push-down of IsNotNull filters on a large table), and a Consequences section noting trade-offs such as shuffled hash-aggregation cost vs batched scans"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark35/13.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"03158524ba6ff7f17a49d75bd701a54f5e6d44ad0e815e23203df61d9a0e5970"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan breakdown with output/column metadata and execution order for VeloxColumnarToRow and ShuffleQueryStage stages; no context/problem statement or consequences/trade-offs are present: Add the problem being optimized (e.g. large parquet table needing efficient join/aggregate) and the trade-offs of pushing filters vs. in-memory filtering, plus any performance goals that drove this plan selection"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark35/14.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8fe50924bd41c88a8157e15927cdd3861a9ba6d1b310f9d33d2ca1f14023976"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing query transformations and scan/transformer details (FileSourceScanExecTransformer parquet, FilterExecTransformer), but no context/problem or explicit decision beneath the plan; only one numbered subsection (1) gives any concrete content: Add an Context section explaining why this plan was chosen over alternatives and a Decision section stating what it accomplishes"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark35/16.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0af01fb373c57d9f1da94ee3323fe4d43e7adec0d5d25f11d44860356d95e96"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan dump showing every node in a ShuffleQueryStage with input/output and arguments, but no context/problem or explicit decision (the plan itself is the rationale), and consequences/trade-offs are entirely absent: Replace the physical-plan dump with an explanatory Context section describing why this query shape was chosen and what it solves, then add a Decision section stating the main transformation path and any trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark35/17.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6894fa7f85792421533b356df840de347e82d21dfc6f221309051017fa4efdf1"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing AdaptiveSparkPlan and VeloxColumnarToRow transformations with no context/problem or consequences: Replace the plan dump with an explicit Context (why shuffle/broadcast joins are needed) and Decision (the transformation/optimizer change being documented) plus Consequences/trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark35/18.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e19646aa670d4793671665188238e3918f49781b5c7b2991aa258977f1ba300"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with child stages and scan/filter/project transformers) plus output/column metadata for each stage; no context/problem or explicit decision beneath the plan dump: Add an explanatory Context section describing why this query/hierarchy was chosen and what it addresses, then document the Decision (e.g. which physical pattern is mandated by the rule), followed by Consequences such as cost/scan-memory trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark35/19.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"be61ae97bdb0df3b76b310db88e77838f3712eee3654bbd7e0f8ec1aa8a79446"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical plan dump showing query execution (AdaptiveSparkPlan -\u003E VeloxColumnarToRow -\u003E AQEShuffleRead -\u003E ShuffleQueryStage -\u003E ColumnarExchange -\u003E VeloxResizeBatches -\u003E ProjectExecTransformer -\u003E BroadcastHashJoin...), with no context/problem and no consequences; the title \u002220\u0022 gives no signal: Add a Context section explaining why this plan was chosen (e.g. data size, join ordering) and a Consequences section noting trade-offs like shuffle cost or memory usage"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark35/20.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1f30631da1860ad60f8d9b6a603b92880401afdc28fc33c7535a34e6456e7c2"}},{"ruleId":"D20","level":"warning","message":{"text":"A physical plan diagram (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes) is shown but no context/problem or decision statement appears in the visible text: Add a Context section explaining why this query rewrites to a columnar-to-row format (e.g. data size, join pattern), then an explicit Decision stating the transformation path used, and a Consequences section noting trade-offs like shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj-ras/spark35/21.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a78dc1d57df27cbb66a8bd4190c9fe111fcd7fd58826d8f8db58fbc0cbbde7c"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan trace showing ShuffleQueryStage and BroadcastHashJoin stages with FileSourceScanExecTransformer parquet nodes but no context/problem statement or consequences/trade-offs: Add the problem (e.g. joining on c_custkey#X across two tables) and the decision (pushed filters, in-memory index) along with trade-offs such as batched output ordering and memory cost"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark33/10.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8707b72f97d2b35e3d2dcce0803d963c963d2668d888111cf3a95a2c7024545c"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision and consequences are absent; only a detailed physical-plan breakdown with output/columns, batched status, pushed-filters, and scan details is present: Add the decision (e.g. which data source/transform path to use) and its trade-offs (in-memory vs disk cost, shuffle overhead) so consequences are visible"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark33/11.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d2675e49e887198dd82eb67c3746e6014cd0b8f311d711cf9d3a63125703487"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan detail (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage hierarchies) is a query execution description rather than context/problem or the explicit decision; no consequences/trade-offs: Add Context/Problem: why this physical plan was chosen over alternatives, what data it processes, and any constraints (e.g. batched vs streaming). Then state the explicit decision (e.g. use ColumnarBroadcastExchange for left join) and its consequences such as shuffle cost or memory usage."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark33/12.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"65c6b2a64c91f94a7bb784e7ce63ae5607a22a87c96347470f7b46617ed7068c"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with child stages and Output/Argument annotations) plus one FileSourceScanExecTransformer parquet line for each stage in the plan; there is no context/problem statement or consequences section: Add an Context section explaining why this scan order matters (e.g. join/left-side ordering, push-down of IsNotNull filters on a large table), and a Consequences section noting trade-offs such as shuffled hash-aggregation cost vs batched scans"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark33/13.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"957405c1dabedba08dfe833e2382a16afb4729b57f908a593c74cc29f92d79d4"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are absent from the visible text: Add a Context section explaining why this physical-plan breakdown matters (e.g. query cost, shuffle behavior), then a Consequences section covering trade-offs like pushed-filter ordering vs join reordering, codegen overhead, and batched scan semantics."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark33/14.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c0b5c024a8a8488b0b3365040ff0758b02c2bdbad8ab3d3df34baa2cc3754cc"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are absent from the visible text: Add a Context section explaining why this physical-plan breakdown matters (e.g. query cost, data-shape requirements), then a Consequences section covering trade-offs such as codegen complexity or shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark33/15.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d7639f5b404200205dd17b542218c56427d20aa0be036b052ef4e90b7074d2b"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing query transformations and scan/transformer details (FileSourceScanExecTransformer parquet, FilterExecTransformer), but no context/problem or explicit decision beneath the plan; only one numbered subsection (1) gives any concrete content: Add an Context section explaining why this plan was chosen over alternatives and a Decision section stating what it accomplishes"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark33/16.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aac3b115c40d7ba1de1698f5afdafedcbf94990ab0cee76a6415215d75dc381f"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing query transformations and execution plan nodes (AdaptiveSparkPlan, VeloxColumnarToRow, ShuffleQueryStage), with no context/problem statement or decision, only the data flow; consequences/trade-offs are absent: Add an Context section explaining what problem this resolves (e.g. a slow join over parquet tables) and a Decision section stating which plan is adopted and why, plus Consequences covering trade-offs like shuffle cost"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark33/17.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a7f275c40642c79a94e95571fc433c92f8d99273f53419191062cfac98f0008"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing AdaptiveSparkPlan and VeloxColumnarToRow transformations with no context/problem or consequences: Replace the plan dump with an explicit Context (why shuffle/broadcast joins are needed) and Decision (the transformation/optimizer change being documented) plus Consequences/trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark33/18.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a78265f44bc2417cee0b9bc029fb8685177bf4a25775c15c5b2f6c7cf966d473"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with child stages and scan/filter/project transformers) plus output/column metadata for each stage; no context/problem or explicit decision beneath the plan dump: Add an explanatory Context section describing why this query/hierarchy was chosen and what it addresses, then document the Decision (e.g. which physical pattern is mandated by the rule), followed by Consequences such as cost/scan-memory trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark33/19.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"afad3e5e6d10158f7f4f28d44710cba507d37463494e9f8b49cee1aaafba5b43"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), revealing no context/problem or explicit decision beneath the scanner clip: "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark33/20.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"37d68db95c7824fb2afa7f105259dbd1e28dda37d0bd3adaabfb0b8f52024a0e"}},{"ruleId":"D20","level":"warning","message":{"text":"A physical plan diagram (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes) is shown but no context/problem or decision statement appears in the visible text: Add a Context section explaining why this query rewrites to a columnar-to-row format (e.g. data size, join pattern), then an explicit Decision stating the transformation path used, and a Consequences section noting trade-offs like shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark33/21.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"af21c0a29fc7b70cc739f724ccba09e5dcea47e1bebec54b2cc32008bd142f48"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan dump showing every node in a query plan plus its arguments and output schema (e.g. FileSourceScanExecTransformer parquet with [c_custkey#X, c_phone#X, c_acctbal#X], FilterExecTransformer with the join condition), but there is no context/problem statement or consequences section: Add a Context/Problem section explaining why this query (or these joins) were chosen and what trade-offs they carry, then a Consequences section covering any performance/memory cost of the plan\u0027s batching/pushdown"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark33/22.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a112f2b560aa53f07e3fd850d7a96625ae43ba715aa13a6d430d10d53e9c950"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan trace showing ShuffleQueryStage and BroadcastHashJoin stages with FileSourceScanExecTransformer parquet nodes but no context/problem statement or consequences/trade-offs: Add the problem (e.g. joining on c_custkey#X across two tables) and the decision (pushed filters, in-memory index) along with trade-offs such as batched output ordering and memory cost"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark34/10.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bd1e376a84632d2355d1c7e8c3c808c85e43bad829a6a2cb022528ec78df991"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision and consequences are absent; only a detailed physical-plan breakdown with output/columns, batched status, pushed-filters, and scan details is present: Add the decision (e.g. which data source/transform path to use) and its trade-offs (in-memory vs disk cost, shuffle overhead) so consequences are visible"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark34/11.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d61ca39bf5332c16f0725e050c851893766f8ae4b4b73d0de23ec872afcaef3"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan detail (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage hierarchies) is a query execution description rather than context/problem or the explicit decision; no consequences/trade-offs: Add Context/Problem: why this physical plan was chosen over alternatives, what data it processes, and any constraints (e.g. batched vs streaming). Then state the explicit decision (e.g. use ColumnarBroadcastExchange for left join) and its consequences such as shuffle cost or memory usage."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark34/12.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"daadccd8d71bf80325b89e245d53c0694e7e814d180cef0d0153fcf7871a3b11"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with child stages and Output/Argument annotations) plus one FileSourceScanExecTransformer parquet line for each stage in the plan; there is no context/problem statement or consequences section: Add an Context section explaining why this scan order matters (e.g. join/left-side ordering, push-down of IsNotNull filters on a large table), and a Consequences section noting trade-offs such as shuffled hash-aggregation cost vs batched scans"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark34/13.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2e071fae179b08bd818549f2cfad8c91d026263265bad6d361e348e48395801"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing all stages and their children with input/output schemas plus push-filter details (stages (1)-(16), output [4], pushedFilters [...] IsNotNull(p_partkey)), but there is no context/problem statement or consequences/trade-offs section: Add an Context/Problem section explaining why the physical plan matters (e.g. a join between l_shipdate and p_partkey on parquet tables) and a Consequences section covering trade-offs such as pushed-filter ordering, codegen cost, and batched vs non-batched behavior"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark34/14.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d8fb919eb3e6a2c0e7303dd59990fb0550c75a7ecf7300c09377118b094bc7a"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing query transformations and scan/transformer details (FileSourceScanExecTransformer parquet, FilterExecTransformer), but no context/problem or explicit decision beneath the plan; only one numbered subsection (1) gives any concrete content: Add an Context section explaining why this plan was chosen over alternatives and a Decision section stating what it accomplishes"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark34/16.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"07e2a2defa63962c29f43582be3c8c1acaa721469eb6ac362a9921eafd40b866"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan dump showing every node in a ShuffleQueryStage with input/output and arguments, but no context/problem or explicit decision (the plan itself is the rationale), and consequences/trade-offs are entirely absent: Replace the physical-plan dump with an explanatory Context section describing why this query shape was chosen and what it solves, then add a Decision section stating the main transformation (e.g. columnar-to-row aggregation) and its purpose, followed by Consequences covering trade-offs like shuffle cost or data movement"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark34/17.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"90fe9502e99f3b68fb6468c971f86084c6d314d5afe278314ae00cff482959d0"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing AdaptiveSparkPlan and VeloxColumnarToRow transformations with no context/problem or consequences: Replace the plan dump with an explicit Context (why shuffle/broadcast joins are needed) and Decision (the transformation/optimizer change being documented) plus Consequences/trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark34/18.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3abd6ab097c008d38a3fbc50217f1e52ba8e2a802ebba98c6ad9820ddc7fd29"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with child stages and scan/filter/project transformers) plus output/column metadata for each stage; no context/problem or explicit decision beneath the plan dump: Add an explanatory Context section describing why this query/hierarchy was chosen and what it addresses, then document the Decision (e.g. which physical pattern is mandated by the rule), followed by Consequences such as cost/scan-memory trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark34/19.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d557daed83b996af5dc47c95cef488c096517021e197c365ff8633a679d47b53"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical plan dump showing query execution (AdaptiveSparkPlan -\u003E VeloxColumnarToRow -\u003E AQEShuffleRead -\u003E ShuffleQueryStage -\u003E ColumnarExchange -\u003E VeloxResizeBatches -\u003E ProjectExecTransformer -\u003E BroadcastHashJoin...), with no context/problem and no consequences; the title \u002220\u0022 gives no signal: Add a Context section explaining why this plan was chosen (e.g. data size, join ordering) and a Consequences section noting trade-offs like shuffle cost or memory usage"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark34/20.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbf6c8423b00429daf2db3a480f5519fa12f1eefcfc16d51ab26b18719268ceb"}},{"ruleId":"D20","level":"warning","message":{"text":"A physical plan diagram (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes) is shown but no context/problem or decision statement appears in the visible text: Add a Context section explaining why this query rewrites to a columnar-to-row format (e.g. data size, join pattern), then an explicit Decision stating the transformation path used, and a Consequences section noting trade-offs like shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark34/21.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"851c56a1805271f5834d9a99a6a4916a036bbc55a36b539daed9ae43c74cdd4e"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan dump showing every node in a query plan plus its arguments and output schema (e.g. FileSourceScanExecTransformer parquet with [c_custkey#X, c_phone#X, c_acctbal#X], FilterExecTransformer with the join condition), but no context/problem or consequences/trade-offs are present: Add a Context section explaining why this query is being rewritten (e.g. batched scan vs hash join cost) and a Consequences section on trade-offs like shuffled stages, codegen overhead, and data movement"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark34/22.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"92867fb770a9640b825ba0351ad61e8cf2a63705bfff85fb7dbac07d6c7b079b"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan trace showing ShuffleQueryStage and BroadcastHashJoin stages with FileSourceScanExecTransformer parquet nodes but no context/problem statement or consequences/trade-offs: Add the problem (e.g. joining on c_custkey#X across two tables) and the decision (pushed filters, in-memory index) along with trade-offs such as batched output ordering and memory cost"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark35/10.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d283480a0a97afd7d4392eb7bb7a6888d850c4d5afa60231b20873da31a6494"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision and consequences are absent; only a detailed physical-plan breakdown with output/columns, batched status, pushed-filters, and scan details is present: Add the decision (e.g. which data source/transform path to use) and its trade-offs (in-memory vs disk cost, shuffle overhead) so consequences are visible"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark35/11.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d79f33021c3ab5afcf1645a3f10348a930f34cd05b73dba9924314f626a7c3e"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan detail (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage hierarchies) is a query execution description rather than context/problem or the explicit decision; no consequences/trade-offs: Add Context/Problem: why this physical plan was chosen over alternatives, what data it processes, and any constraints (e.g. batched vs streaming). Then state the explicit decision (e.g. use ColumnarBroadcastExchange for left join) and its consequences such as shuffle cost or memory usage."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark35/12.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc519489204f4b17523cba533667a9859366bbf3b8f5a36d7a981207f2a683da"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with child stages and Output/Argument annotations) plus one FileSourceScanExecTransformer parquet line for each stage in the plan; there is no context/problem statement or consequences section: Add an Context section explaining why this scan order matters (e.g. join/left-side ordering, push-down of IsNotNull filters on a large table), and a Consequences section noting trade-offs such as shuffled hash-aggregation cost vs batched scans"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark35/13.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e86cce1cac764bf932f98848210e35dd2c43f743aa29df8384da0c79fa89d71"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing all stages and their children with input/output schemas plus push-filter details (stages (1)-(16), output [4], pushedFilters [...] IsNotNull(p_partkey)), but there is no context/problem statement or consequences/trade-offs section: Add an Context/Problem section explaining why the physical plan matters (e.g. a join between l_shipdate and p_partkey on parquet tables) and a Consequences section covering trade-offs such as pushed-filter ordering, codegen cost, and batched vs non-batched behavior"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark35/14.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a8556f9f44f57101456bfb3a484f62e40eca26852e93a73f56935cb334f3288"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing query transformations and scan/transformer details (FileSourceScanExecTransformer parquet, FilterExecTransformer), but no context/problem or explicit decision beneath the plan; only one numbered subsection (1) gives any concrete content: Add an Context section explaining why this plan was chosen over alternatives and a Decision section stating what it accomplishes"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark35/16.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6984510ddf41e211e00303936035f153f1eb88a39a8a71f4e5a7bc784c2d38a"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan dump showing every node in a ShuffleQueryStage with input/output and arguments, but no context/problem or explicit decision (the plan itself is the rationale), and consequences/trade-offs are entirely absent: Replace the physical-plan dump with an explanatory Context section describing why this query shape was chosen and what it solves, then add a Decision section stating the main transformation (e.g. columnar-to-row aggregation) and its purpose, followed by Consequences covering trade-offs like shuffle cost or data movement"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark35/17.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fde35d09222b4c505dd3012ef3702df508d9747f7bd43edf587182b28ba96d5"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing AdaptiveSparkPlan and VeloxColumnarToRow transformations with no context/problem or consequences: Replace the plan dump with an explicit Context (why shuffle/broadcast joins are needed) and Decision (the transformation/optimizer change being documented) plus Consequences/trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark35/18.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"590068f448cc7ac0cf922730b9fac9bd062059b027f91df1277875a03ce4dd16"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with child stages and scan/filter/project transformers) plus output/column metadata for each stage; no context/problem or explicit decision beneath the plan dump: Add an explanatory Context section describing why this query/hierarchy was chosen and what it addresses, then document the Decision (e.g. which physical pattern is mandated by the rule), followed by Consequences such as cost/scan-memory trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark35/19.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ff65ec3317658e6b95de564a774b7c77bc2d487ad3a9c9bf20f14762baf31d7"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical plan dump showing query execution (AdaptiveSparkPlan -\u003E VeloxColumnarToRow -\u003E AQEShuffleRead -\u003E ShuffleQueryStage -\u003E ColumnarExchange -\u003E VeloxResizeBatches -\u003E ProjectExecTransformer -\u003E BroadcastHashJoin...), with no context/problem and no consequences; the title \u002220\u0022 gives no signal: Add a Context section explaining why this plan was chosen (e.g. data size, join ordering) and a Consequences section noting trade-offs like shuffle cost or memory usage"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark35/20.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3051a30e6d81bf79966f97af763ad44f6d9b25ce76fe2a7285f93724894c6b78"}},{"ruleId":"D20","level":"warning","message":{"text":"A physical plan diagram (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes) is shown but no context/problem or decision statement appears in the visible text: Add a Context section explaining why this query rewrites to a columnar-to-row format (e.g. data size, join pattern), then an explicit Decision stating the transformation path used, and a Consequences section noting trade-offs like shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark35/21.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"db22fffbc0e11400f7f72f88bfdb4dccd25348d3519608f85aa9ba5be8ec36c4"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan representation (AdaptiveSparkPlan with ShuffleQueryStage and InputIteratorTransformer nodes), complete to the point that it would be a Plan document rather than an ADR; no context/problem or consequences are present: Convert this into an ADR by adding Context/Problem (why columnar-to-row conversion is needed) and Consequences/trade-offs (memory cost, shuffle overhead) above the plan dump"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-bhj/spark35/22.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"08a9d8d9f791c3c3c504ae8440a96364dd2b6e0496f044a82bf53a317382fbd7"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan -\u003E VeloxColumnarToRow -\u003E TakeOrderedAndProjectExecTransformer -\u003E ... ShuffleQueryStage), with no context/problem and no consequences; the title \u0027Physical Plan\u0027 gives nothing away: Replace with an actual ADR describing what decision was made, why it matters, and its trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark33/10.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e059a23b93c1e4a8c6b35f110a3c812080ea3aa7037ab32a5ec0a39952b7ca55"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical plan dump showing AdaptiveSparkPlan and ShuffleQueryStage nodes with no context/problem statement or consequences: Add the problem (e.g. shuffle cost, join ordering) that drove this plan and note any trade-offs such as increased memory usage from ShuffleQueryStages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark33/11.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac60bdbb52ac1239f5f54af2ce71db24c65604d348840c9326425adf84d14818"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are absent (only a detailed physical-plan breakdown with scan/transformer details appears): Add a Context section explaining why the parquet scans were moved to InputAdapter/InputIteratorTransformer rather than being pushed down into FilterExec or ProjectExec"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark33/12.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f74ae7e06e469048b4340ded45324f88a80cea2e1a1c476ba3e5e4d2673a6aa0"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing all stages and their children (AdaptiveSparkPlan -\u003E VeloxColumnarToRow -\u003E SortExecTransformer -\u003E InputIteratorTransformer -\u003E ShuffleQueryStage -\u003E Statistics(X) -\u003E ColumnarExchange -\u003E VeloxResizeBatches -\u003E RegularHashAggregateExecTransformer -\u003E ...), with output/column metadata for each stage, but no context/problem statement or consequences/trade-offs: Add a Context section explaining why the physical plan is being documented (e.g. query optimization, cost estimation) and a Consequences section on trade-offs such as the high fan-in of ShuffleQueryStage stages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark33/13.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a862d84c57f4a48b9b5b42131960214fe308b840a87542a6a646c24b7411688d"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a detailed physical-plan breakdown (AdaptiveSparkPlan with VeloxColumnarToRow and InputIteratorTransformer nodes), showing output/columns, pushedfilters, arguments, and the actual data types of each node\u0027s input/output. There is no context/problem statement or decision in any form; only an unstructured plan dump appears.: Add a Context section explaining why this physical-plan structure matters (e.g., join/ordering/scan cost) and a Decision section stating what change was made to arrive at the shown plan, plus Consequences noting trade-offs like increased shuffle or memory usage."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark33/14.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8866283f7dc2e189bae61a5aae690a591f770a56101c97f11601b5a002a5d2d5"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan breakdown (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), showing each ExecTransformer\u0027s input/output schema, arguments, and location, but there is no context/problem statement or consequences/trade-offs section: Add an Context/Problem section explaining why the shuffle-based plan was chosen over a simpler one (e.g. join/ordering) and a Consequences section covering trade-offs like memory usage and shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark33/15.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"15377cf6ce175d390028f2545a2260627432421cafca6f4d045bbc2fc7f358ad"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan dump showing AdaptiveSparkPlan and ShuffleQueryStage nodes with no context/problem statement or consequences: Add the problem (e.g. shuffle cost, join ordering) that drove this plan and note any trade-offs such as memory pressure from ShuffleQueryStages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark33/16.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"09287525899b93ece11eba14035cd5b1dfd2c10e0bdb956cf42f72cb8c67b73d"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan with exec-transformer breakdown and output/column metadata is present but there is no context/problem statement (why ShuffleQueryStage or VeloxResizeBatches was chosen over alternatives), no explicit decision, and no consequences/trade-offs: Add a Context section explaining the dataflow bottleneck being addressed (e.g. in-memory shuffle for SortMergeJoin) and an Explicit Decision stating which physical plan is adopted and why; add Consequences noting trade-offs like increased ShuffleQueryStage overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark33/17.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e317184ef30df327de8276ca7c3e60e283ee418ff5f013112bad4e7a2eb3dbfe"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), which is diagnostic output rather than context/problem and the explicit decision: Replace with an ADR describing the problem being addressed by this plan (e.g. data-shape mismatch, shuffle cost) and the concrete decision (change to a columnar format or join order) along with its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark33/18.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d950b9b8b040f78011277344b926b50024a28cdffa275ba5ef9714dcfa8d939"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan detail (AdaptiveSparkPlan with VeloxColumnarToRow and InputIteratorTransformer nodes) is diagnostic output; no context/problem statement or explicit decision describing what the physical reordering accomplishes: Add a Context section explaining why ShuffleQueryStage Inner BuildRight was chosen over the original HashAggregate path, and a Decision section stating the reordered plan\u0027s purpose (e.g. optimized join on l_shipmode with pushed filters). Consequences could note any performance trade-offs of shuffled joins."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark33/19.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"42431b46572cf368def4c05ecb36d111a78dd583b27b07344c706120f84199a3"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), revealing no context/problem or explicit decision beneath the scanner clip: Add an Context section explaining why this query structure was chosen and what problem it solves; add a Decision section stating the transformation/optimizer rule applied; and a Consequences section noting any trade-offs (e.g. shuffle cost, memory usage)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark33/20.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"223f1b1f04909116e6a0161456e6e7ad230d7412bfaa455f6b4ba3ce12c42473"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and InputIteratorTransformer nodes), revealing no context/problem or explicit decision; the title \u002221\u0022 gives no information: Replace with an ADR describing the problem being solved (e.g. slow join over parquet tables) and the concrete decision (e.g. switch to a new shuffle/resize/batch plan, add a cost threshold), plus its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark33/21.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b21a5117d6fb87f44b7d3930575e792bb2472318fb9380f226073c79ece99733"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are absent; only a detailed physical plan with input/output schema and each node\u0027s arguments is present: Add the problem being solved (e.g. left-anti SortMergeJoin on parquet scan) and the trade-offs of pushing filters to the file source vs filtering in memory, plus any consequences like shuffle cost"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark33/22.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b859e6bd9134e12b162ab6bf71e4260d143b6c54e817d9f7dd206f6c100cb0f"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan -\u003E VeloxColumnarToRow -\u003E TakeOrderedAndProjectExecTransformer -\u003E ... ShuffleQueryStage), with no context/problem and no consequences; the title \u0027Physical Plan\u0027 gives nothing away: Replace with an actual ADR describing what decision was made, why it matters, and its trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark34/10.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d21238c853a66467b815fa7acda312d43a0e3d32a82cf19ebe3969e85e16501"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical plan dump showing AdaptiveSparkPlan and ShuffleQueryStage nodes with no context/problem statement or consequences: Add the problem (e.g. shuffle cost, join ordering) that drove this plan and note any trade-offs such as increased memory usage from ShuffleQueryStages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark34/11.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0839a42ea6c28563f94ff0fde9b63ef24d922ae99056903d1bcd29523af218f5"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are absent (only a detailed physical-plan breakdown with scan/transformer details appears): Add a Context section explaining why the parquet scans were moved to InputAdapter/InputIteratorTransformer rather than being pushed down into FilterExec or ProjectExec"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark34/12.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"69c8415afb3b7df66851499bd25bd6738add33394955e01b20dfe267700e4576"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing all stages and their children (AdaptiveSparkPlan -\u003E VeloxColumnarToRow -\u003E SortExecTransformer -\u003E InputIteratorTransformer -\u003E ShuffleQueryStage -\u003E Statistics(X) -\u003E ColumnarExchange -\u003E VeloxResizeBatches -\u003E RegularHashAggregateExecTransformer -\u003E ...), with output/column metadata for each stage, but no context/problem statement or consequences/trade-offs: Add a Context section explaining why the physical plan is being documented (e.g. query optimization, cost estimation) and a Consequences section on trade-offs such as the high fan-in of ShuffleQueryStage stages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark34/13.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e9a9bba92bac9f635f2df45f0237ae91fe4eca43d3567e384e9765e45d74217"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a detailed physical-plan breakdown (AdaptiveSparkPlan with VeloxColumnarToRow and InputIteratorTransformer nodes), showing output/columns, pushedfilters, arguments, and the actual data types of each node\u0027s input/output. There is no context/problem statement or decision in any form; only an unstructured plan dump appears.: Add a Context section explaining why this physical-plan structure matters (e.g., join/ordering/scan cost) and a Decision section stating what change was made to arrive at the shown plan, plus Consequences noting trade-offs like increased shuffle or memory usage."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark34/14.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8c0cc1d3803fc0a9ab78489478732ce232fbaf3331a20a3d625ad53d977e185"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan breakdown (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), showing each ExecTransformer\u0027s input/output schema, arguments, and location, but there is no context/problem statement or consequences/trade-offs section: Add an Context/Problem section explaining why the shuffle-based plan was chosen over a simpler one (e.g. join/ordering) and a Consequences section covering trade-offs like memory usage and shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark34/15.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"393cd5e0c138174989ef35c82dac031e8a2af46dc6a94687749cfed5902459f8"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan dump showing AdaptiveSparkPlan and ShuffleQueryStage nodes with no context/problem statement or consequences: Add the problem (e.g. shuffle cost, join ordering) that drove this plan and note any trade-offs such as memory pressure from ShuffleQueryStages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark34/16.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"718bd7db70efd2a2c8296a2015f5237fccbeecd8c8613a53d4c3f08ef61ad61f"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan with exec-transformer breakdown and output/column metadata is present but there is no context/problem statement (why ShuffleQueryStage or VeloxResizeBatches was chosen over alternatives), no explicit decision, and no consequences/trade-offs: Add a Context section explaining the dataflow bottleneck being addressed (e.g. in-memory shuffle for SortMergeJoin) and an Explicit Decision stating which physical plan is adopted and why; add Consequences noting trade-offs like increased ShuffleQueryStage overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark34/17.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ca7dc4d28ca86f747f3dbf246b0ac3bd3a3e0f4073ef08bdf1b822f790fc819"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), which is diagnostic output rather than context/problem and the explicit decision: Replace with an ADR describing the problem being addressed by this plan (e.g. data-shape mismatch, shuffle cost) and the concrete decision (change to a columnar format or join order) along with its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark34/18.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"84004db814b83cd559979afc15d498e43bde77d08749080fdb7d9f6fe5acb747"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan detail (AdaptiveSparkPlan with VeloxColumnarToRow and InputIteratorTransformer nodes) is diagnostic output; no context/problem statement or explicit decision describing what the physical reordering accomplishes: Add a Context section explaining why ShuffleQueryStage Inner BuildRight was chosen over the original HashAggregate path, and a Decision section stating the reordered plan\u0027s purpose (e.g. optimized join on l_shipmode with pushed filters). Consequences could note any performance trade-offs of shuffled joins."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark34/19.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed9d5a60d1d627751a241793f79d69b010b1f0cd4cdbafc80a7d661a4de0d910"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), revealing no context/problem or explicit decision beneath the scanner clip: Add an Context section explaining why this query structure was chosen and what problem it solves; add a Decision section stating the transformation/optimizer rule applied; and a Consequences section noting any trade-offs (e.g. shuffle cost, memory usage)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark34/20.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"16969cd9a42bd456d4c21c69d75cdf4d0be76cbf4ec90bd7768745bd52efa889"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and InputIteratorTransformer nodes), revealing no context/problem or explicit decision; the title \u002221\u0022 gives no information: Replace with an ADR describing the problem being solved (e.g. slow join over parquet tables) and the concrete decision (e.g. switch to a new shuffle/resize/batch plan, add a cost threshold), plus its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark34/21.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"48a6a2b84bc240d71f075aeac4ee79d375384c5805179acc35eebc12eaaa4b69"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are absent (only a physical-plan breakdown with input/output schema details appear): Add a Context section explaining why the parquet scan was moved to the left anti join and the cost of pushing filters vs. moving it"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark34/22.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"00bc71bedcb317a904e413a96b7619640286b9736f3e547086a52d2e29a69eed"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan -\u003E VeloxColumnarToRow -\u003E TakeOrderedAndProjectExecTransformer -\u003E ... ShuffleQueryStage), with no context/problem and no consequences; the title \u0027Physical Plan\u0027 gives nothing away: Replace with an actual ADR describing what decision was made, why it matters, and its trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark35/10.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"25dfc5e6727a4cd8972bd627a6a4e55bdd6ffbb22c0b7b220e2d9db97c2e7c0a"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical plan dump showing AdaptiveSparkPlan and ShuffleQueryStage nodes with no context/problem statement or consequences: Add the problem (e.g. shuffle cost, join ordering) that drove this plan and note any trade-offs such as increased memory usage from ShuffleQueryStages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark35/11.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f93739016b4903ec33d8f7abc74f5fcba853e684f089b57dc6b0fe376f31d491"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are absent (only a detailed physical-plan breakdown with scan/transformer details appears): Add a Context section explaining why the parquet scans were moved to InputAdapter/InputIteratorTransformer rather than being pushed down into FilterExec or ProjectExec"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark35/12.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c41f055b334c6ebdd8b33203ae888ddc27bf6bd34389dd23435b012c39ad295a"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing all stages and their children (AdaptiveSparkPlan -\u003E VeloxColumnarToRow -\u003E SortExecTransformer -\u003E InputIteratorTransformer -\u003E ShuffleQueryStage -\u003E Statistics(X) -\u003E ColumnarExchange -\u003E VeloxResizeBatches -\u003E RegularHashAggregateExecTransformer -\u003E ...), with output/column metadata for each stage, but no context/problem statement or consequences/trade-offs: Add a Context section explaining why the physical plan is being documented (e.g. query optimization, cost estimation) and a Consequences section on trade-offs such as the high fan-in of ShuffleQueryStage stages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark35/13.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"73ba6df2064a61587276741898fb6fb5df572f5dc83b672d31062eae7820e21e"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a detailed physical-plan breakdown (AdaptiveSparkPlan with VeloxColumnarToRow and InputIteratorTransformer nodes), showing output/columns, pushedfilters, arguments, and the actual data types of each node\u0027s input/output. There is no context/problem statement or decision in any form; only an unstructured plan dump appears.: Add a Context section explaining why this physical-plan structure matters (e.g., join/ordering/scan cost) and a Decision section stating what change was made to arrive at the shown plan, plus Consequences noting trade-offs like increased shuffle or memory usage."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark35/14.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ca0d256bbe7abe53e3bfa5eccda13c60fe9004a7bcd8b348a7d23ea22a4ec8e"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan breakdown (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), showing each ExecTransformer\u0027s input/output schema, arguments, and location, but there is no context/problem statement or consequences/trade-offs section: Add an Context/Problem section explaining why the shuffle-based plan was chosen over a simpler one (e.g. join/ordering) and a Consequences section covering trade-offs like memory usage and shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark35/15.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae91ff7a6435990f449e42ec5ef328c74f0f138f17de3926ac341a8670f8b323"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan dump showing AdaptiveSparkPlan and ShuffleQueryStage nodes with no context/problem statement or consequences: Add the problem (e.g. shuffle cost, join ordering) that drove this plan and note any trade-offs such as memory pressure from ShuffleQueryStages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark35/16.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"36ee6be608fad2b1c8c850aa6a01a29e17b987a30344189a901f7c1009807303"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan with exec-transformer breakdown and output/column metadata is present but there is no context/problem statement (why ShuffleQueryStage or VeloxResizeBatches was chosen over alternatives), no explicit decision, and no consequences/trade-offs: Add a Context section explaining the dataflow bottleneck being addressed (e.g. in-memory shuffle for SortMergeJoin) and an Explicit Decision stating which physical plan is adopted and why; add Consequences noting trade-offs like increased ShuffleQueryStage overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark35/17.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2eb19a97a2104eb77a420156cf50464d1952940130bf1bfaabc513e2febeebd0"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), which is diagnostic output rather than context/problem and the explicit decision: Replace with an ADR describing the problem being addressed by this plan (e.g. data-shape mismatch, shuffle cost) and the concrete decision (change to a columnar format or join order) along with its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark35/18.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4c41c53f7fc948642f3cdb895629b57b7e4c68aff5c5574131d2ad4dbc9f72c"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan detail (AdaptiveSparkPlan with VeloxColumnarToRow and InputIteratorTransformer nodes) is diagnostic output; no context/problem statement or explicit decision describing what the physical reordering accomplishes: Add a Context section explaining why ShuffleQueryStage Inner BuildRight was chosen over the original HashAggregate path, and a Decision section stating the reordered plan\u0027s purpose (e.g. optimized join on l_shipmode with pushed filters). Consequences could note any performance trade-offs of shuffled joins."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark35/19.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"50bc311aaf7514231185693c483630aee87f7099e43f2dceb1e8debd70c68c86"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), revealing no context/problem or explicit decision beneath the scanner clip: Add an Context section explaining why this query structure was chosen and what problem it solves; add a Decision section stating the transformation/optimizer rule applied; and a Consequences section noting any trade-offs (e.g. shuffle cost, memory usage)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark35/20.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f18564cc689623a1abdbccd7fe77b114a071248d65463998409750a98e9a9ac"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and InputIteratorTransformer nodes), revealing no context/problem or explicit decision; the title \u002221\u0022 gives no information: Replace with an ADR describing the problem being solved (e.g. slow join over parquet tables) and the concrete decision (e.g. switch to a new shuffle/resize/batch plan, add a cost threshold), plus its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark35/21.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c7150c39c8c54966803bf805f106dee52091502e08bca36d984c093ab538116"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are absent; only a detailed physical plan with input/output schema and each node\u0027s arguments is present: Add the problem being solved (e.g. left-anti SortMergeJoin on parquet scan) and the trade-offs of pushing filters to the file source vs filtering in memory, plus any consequences like shuffle cost"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1-ras/spark35/22.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"426ba98c2033f33d81fd018770069fd8d1968b1760ad5cdafd2183919b193618"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan -\u003E VeloxColumnarToRow -\u003E TakeOrderedAndProjectExecTransformer -\u003E ... ShuffleQueryStage), with no context/problem and no consequences; the title \u0027Physical Plan\u0027 gives nothing away: Replace with an actual ADR describing what decision was made, why it matters, and its trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark33/10.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"18507ac766ac64dd67372e577cba958fcfe50700d578809b2a09ec7fbf736c9b"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical plan dump showing AdaptiveSparkPlan and ShuffleQueryStage nodes with no context/problem statement or consequences: Add the problem (e.g. shuffle cost, join ordering) that drove this plan and note any trade-offs such as increased memory usage from ShuffleQueryStages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark33/11.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"731f191ded146a5ea87ba08df46aa113fb02bdf84f21bad25e9993f2802f9a25"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan with execution path and component annotations (FileSourceScanExecTransformer parquet, FilterExecTransformer, ProjectExecTransformer, VeloxResizeBatches, ColumnarExchange, ShuffleQueryStage) is a diagnostic/optimization tool trace; the ADR\u0027s title \u002212\u0022 plus no context/problem and no explicit decision/consequences: Give this an A rating if it is a physical-plan dump with rationale for each component (why shuffle, why resize batches), but as written it is only a plan listing with no problem statement or consequences. The visible content alone cannot be used."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark33/12.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0cd0b28b5a441cd54f764bb6980abd2ca750fbb5d7694119727f279dd225ed8"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing execution trees and metadata (e.g. FileSourceScanExecTransformer parquet with read schema struct\u003Cc_custkey:bigint\u003E), but no context/problem statement or consequences/trade-offs: Add the problem being addressed (e.g. performance bottleneck, scan order) and the trade-offs of the chosen physical plan (in-memory vs disk-resized batches, shuffle overhead)}"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark33/13.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"730fa517aee2335e36ec4bd45b2e5730a125a32d2bb0697d74399eba495b1f20"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan breakdown with input/output/columnar descriptions and codegen/transformer arguments for each node in the query plan (14 nodes), but no context/problem statement or consequences/trade-offs are present: Add an Context section explaining why this reordering of the hash-aggregate to shuffle join is needed (e.g. better parallelism, memory usage) and a Consequences section noting trade-offs like shuffled ordering and increased shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark33/14.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"28c3b5cd1d131c327feb95ebf8e2d98baf145bbfba10fb0905dc38695f53a54f"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan breakdown (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), showing each ExecTransformer\u0027s input/output schema, pushed filters, and arguments, but there is no context/problem statement or consequences/trade-offs section: Add an Context/Problem section explaining why the shuffle-based plan was chosen over a simpler one (e.g. join/ordering) and a Consequences section covering trade-offs like memory usage and shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark33/15.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9730b3f2bca2d1ebe352dad2db6858e90cf2250beb1be9d9583bd65f6adf8998"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan dump showing AdaptiveSparkPlan and ShuffleQueryStage nodes with no context/problem statement or consequences: Add the problem (e.g. shuffle cost, join ordering) that drove this plan and note any trade-offs such as memory pressure from ShuffleQueryStages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark33/16.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c6833b2fb6baedeaf1de3f1141ef4a1ef04d969c6ede0afa54ae5ec8d0156d1"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan with exec-transformer breakdown and output/column metadata is present but no context/problem or consequences/trade-offs are stated: Add a Context/Problem section explaining why the ShuffleQueryStage pattern (with its nested ProjectExecTransformer layers) was chosen over alternatives like a single HashAggregate, and a Consequences section noting trade-offs such as shuffle cost and memory usage for large joins"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark33/17.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"74d3ce651ff432e961b79d444ff72d921e1ccba8ba9440b86f59b541933765a9"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), which is diagnostic output rather than context/problem and the explicit decision: Replace with an ADR describing the problem being addressed by this plan (e.g. data-shape mismatch, shuffle cost) and the concrete decision (change to a columnar format or join order) along with its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark33/18.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eec2fea062f1f577051e82236af5d8f26188dac911575ae7a5be9e7b5dc7275"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are absent; only the physical plan (with input/output schema, pushedfilters, and exec-transformer breakdowns) is shown: Add a Context section explaining why Parquet scans were chosen over in-memory tables and what trade-offs they carry (e.g. shuffle cost, batched vs. streaming behavior). Then document Consequences covering the performance/latency impact of each stage"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark33/19.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c0a2a9c0674825d8f1672e78b826326156cf9255329c45143eca4012e3824c5"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), revealing no context/problem or explicit decision beneath the scanner clip: Add an Context section explaining why this query structure was chosen and what problem it solves; add a Decision section stating the transformation/optimizer rule applied; and a Consequences section noting any trade-offs (e.g. shuffle cost, memory usage)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark33/20.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ad141a868f625d07e1e37f0d9f32f0e48ba868360de79b161c269c3d4bb4ce8"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and InputIteratorTransformer nodes), revealing no context/problem or explicit decision; the title \u002221\u0022 gives no information: Replace with an ADR describing the problem being solved (e.g. slow join over parquet tables) and the concrete decision (e.g. switch to a new shuffle/resize/batch plan, add a cost threshold), plus its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark33/21.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a9b32f79d4910f565698d380303ade1cf22ac14e07fa50b6ecfeba840e64238"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan with detailed node definitions and output/column metadata (FileSourceScanExecTransformer parquet, FilterExecTransformer, ProjectExecTransformer) is a diagnostic/execution trace; no context/problem or explicit decision beneath the plan: Add an Context section stating why this physical-plan structure matters (e.g. a join/left-anti pattern over a Parquet scan) and a Decision section naming the transformation/relation change being documented, along with its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark33/22.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5028fe27bed7d46ce2e59d9e1a1bb0f8704af13fa285c338d7c11dcb1d0cfb8e"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan -\u003E VeloxColumnarToRow -\u003E TakeOrderedAndProjectExecTransformer -\u003E ... ShuffleQueryStage), with no context/problem and no consequences; the title \u0027Physical Plan\u0027 gives nothing away: Replace with an actual ADR describing what decision was made, why it matters, and its trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark34/10.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a7094e8f2f2240ec1fd3295a809e05ad7b87448d139e0d1e4514086492891a2"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical plan dump showing AdaptiveSparkPlan and ShuffleQueryStage nodes with no context/problem statement or consequences: Add the problem (e.g. shuffle cost, join ordering) that drove this plan and note any trade-offs such as increased memory usage from ShuffleQueryStages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark34/11.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"93ea07b94d5e9130b8d7761daac9a090e4343bf73b8510723e8f06b695f5f2f0"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan with execution path and component annotations (FileSourceScanExecTransformer parquet, FilterExecTransformer, ProjectExecTransformer, VeloxResizeBatches, ColumnarExchange, ShuffleQueryStage) is a diagnostic/optimization tool trace; the ADR\u0027s title \u002212\u0022 plus no context/problem and no explicit decision/consequences: Give this an A rating if it is a physical-plan dump with rationale for each component (why shuffle, why resize batches), but as written it is only a plan listing with no problem statement or consequences. The visible content alone cannot be used."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark34/12.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b3b7d9401fc6d507ba1d995edd3d60f5f9f988dbc7fe31c56c2a9cac8a1ec50"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing execution trees and metadata (e.g. FileSourceScanExecTransformer parquet with read schema struct\u003Cc_custkey:bigint\u003E), but no context/problem statement or consequences/trade-offs: Add the problem being addressed (e.g. performance bottleneck, scan order) and the trade-offs of the chosen physical plan (in-memory vs disk-resized batches, shuffle overhead)}"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark34/13.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0daad08f9a60d321823b6813db63af8748dcace9240d4d342eb1a63351a1f7f7"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan breakdown with input/output/columnar descriptions and codegen/transformer arguments for each node in the query plan (14 nodes), but no context/problem statement or consequences/trade-offs are present: Add an Context section explaining why this reordering of the hash-aggregate to shuffle join is needed (e.g. better parallelism, memory usage) and a Consequences section noting trade-offs like shuffled ordering and increased shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark34/14.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ab2878248569c208bfc9698aa4528b0745aea5db2ccacf687df76ab292fafcc"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan breakdown (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), showing each ExecTransformer\u0027s input/output schema, pushed filters, and arguments, but there is no context/problem statement or consequences/trade-offs section: Add an Context/Problem section explaining why the shuffle-based plan was chosen over a simpler one (e.g. join/ordering) and a Consequences section covering trade-offs like memory usage and shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark34/15.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1da74664855106a721ae1bcaf7c43ce6e6ec2c244471f1c4af0df3b86e19e157"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan dump showing AdaptiveSparkPlan and ShuffleQueryStage nodes with no context/problem statement or consequences: Add the problem (e.g. shuffle cost, join ordering) that drove this plan and note any trade-offs such as memory pressure from ShuffleQueryStages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark34/16.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7385a5056b5b85fb2abccd641e290705749652398eeefb8c67bc296d59b2a57f"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan with exec-transformer breakdown and output/column metadata is present but no context/problem or consequences/trade-offs are stated: Add a Context/Problem section explaining why the ShuffleQueryStage pattern (with its nested ProjectExecTransformer layers) was chosen over alternatives like a single HashAggregate, and a Consequences section noting trade-offs such as shuffle cost and memory usage for large joins"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark34/17.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"72c82a6728555a20460c21de0577e1f419b89c9718d27a4cbf6e5e55c5e37294"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), which is diagnostic output rather than context/problem and the explicit decision: Replace with an ADR describing the problem being addressed by this plan (e.g. data-shape mismatch, shuffle cost) and the concrete decision (change to a columnar format or join order) along with its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark34/18.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f092537f628ccbe866b7854ee67946b39ae220d1b62982bf12b6f7e8eee6eec1"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are absent; only the physical plan (with input/output schema, pushedfilters, and exec-transformer breakdowns) is shown: Add a Context section explaining why Parquet scans were chosen over in-memory tables and what trade-offs they carry (e.g. shuffle cost, batched vs. streaming behavior). Then document Consequences covering the performance/latency impact of each stage"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark34/19.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce3b74d0361664c1626e85bc487c765a2535016720bf9f0573330a8875d8adea"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), revealing no context/problem or explicit decision beneath the scanner clip: Add an Context section explaining why this query structure was chosen and what problem it solves; add a Decision section stating the transformation/optimizer rule applied; and a Consequences section noting any trade-offs (e.g. shuffle cost, memory usage)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark34/20.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e9752ffff032c4c3fce3dd1373527458419d80a383538b1cb2717d9f37de7e9"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and InputIteratorTransformer nodes), revealing no context/problem or explicit decision; the title \u002221\u0022 gives no information: Replace with an ADR describing the problem being solved (e.g. slow join over parquet tables) and the concrete decision (e.g. switch to a new shuffle/resize/batch plan, add a cost threshold), plus its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark34/21.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"59f9f5168c50e33f93d681770a88823305f944420245b10292da4788165daf1a"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan with detailed node definitions and output/column metadata (FileSourceScanExecTransformer parquet, FilterExecTransformer, ProjectExecTransformer) is a diagnostic/execution trace; no context/problem or explicit decision beneath the plan: Add an Context section stating why this physical-plan structure matters (e.g. a join/left-anti pattern over a Parquet scan) and a Decision section naming the transformation/relation change being documented, along with its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark34/22.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a9b96ee861d68f1fc2ea22fbcbfea9d2d55a2ecf0d55970a312d506f67301cd"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan -\u003E VeloxColumnarToRow -\u003E TakeOrderedAndProjectExecTransformer -\u003E ... ShuffleQueryStage), with no context/problem and no consequences; the title \u0027Physical Plan\u0027 gives nothing away: Replace with an actual ADR describing what decision was made, why it matters, and its trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark35/10.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f403c4a3ca799024a57c74220a4c078358e7d125d6ad3a9e2d67e5bade8f175f"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical plan dump showing AdaptiveSparkPlan and ShuffleQueryStage nodes with no context/problem statement or consequences: Add the problem (e.g. shuffle cost, join ordering) that drove this plan and note any trade-offs such as increased memory usage from ShuffleQueryStages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark35/11.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ad2dd631a803d70f6533db3bbb0a2b7d20f24f5705e937a6cc28587c871861a"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan with execution path and component annotations (FileSourceScanExecTransformer parquet, FilterExecTransformer, ProjectExecTransformer, VeloxResizeBatches, ColumnarExchange, ShuffleQueryStage) is a diagnostic/optimization tool trace; the ADR\u0027s title \u002212\u0022 plus no context/problem and no explicit decision/consequences: Give this an A rating if it is a physical-plan dump with rationale for each component (why shuffle, why resize batches), but as written it is only a plan listing with no problem statement or consequences. The visible content alone cannot be used."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark35/12.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc32e0e9d61870b8df109015d2b4fb1cfdcd3fb03c8b0c58191ff2e4e97f904"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan dump showing execution trees and metadata (e.g. FileSourceScanExecTransformer parquet with read schema struct\u003Cc_custkey:bigint\u003E), but no context/problem statement or consequences/trade-offs: Add the problem being addressed (e.g. performance bottleneck, scan order) and the trade-offs of the chosen physical plan (in-memory vs disk-resized batches, shuffle overhead)}"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark35/13.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d46f4e0254ba288ffbd6c3205097fa20902dc2dd164ffdc45512e0ff83d3cb5a"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan breakdown with input/output/columnar descriptions and codegen/transformer arguments for each node in the query plan (14 nodes), but no context/problem statement or consequences/trade-offs are present: Add an Context section explaining why this reordering of the hash-aggregate to shuffle join is needed (e.g. better parallelism, memory usage) and a Consequences section noting trade-offs like shuffled ordering and increased shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark35/14.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed63b109767f470fd88713f9d06cb59a040883e9065836c0c8b2e4b3e7b738cf"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan breakdown (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), showing each ExecTransformer\u0027s input/output schema, pushed filters, and arguments, but there is no context/problem statement or consequences/trade-offs section: Add an Context/Problem section explaining why the shuffle-based plan was chosen over a simpler one (e.g. join/ordering) and a Consequences section covering trade-offs like memory usage and shuffle overhead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark35/15.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1abd81593e3541a50f952ffa8c7bc2fadabc4978342d46f10a10c3df48a6f936"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a full physical-plan dump showing AdaptiveSparkPlan and ShuffleQueryStage nodes with no context/problem statement or consequences: Add the problem (e.g. shuffle cost, join ordering) that drove this plan and note any trade-offs such as memory pressure from ShuffleQueryStages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark35/16.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"172094ac32a05a2224e0d6a2f3f021d89e85b46b96d3ab7a96f0a0b74fafbc47"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan with exec-transformer breakdown and output/column metadata is present but no context/problem or consequences/trade-offs are stated: Add a Context/Problem section explaining why the ShuffleQueryStage pattern (with its nested ProjectExecTransformer layers) was chosen over alternatives like a single HashAggregate, and a Consequences section noting trade-offs such as shuffle cost and memory usage for large joins"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark35/17.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"76defb35e9b9104bc24980f700607dd743ff21d789ba12ed3658f626274d8d76"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical-plan representation (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), which is diagnostic output rather than context/problem and the explicit decision: Replace with an ADR describing the problem being addressed by this plan (e.g. data-shape mismatch, shuffle cost) and the concrete decision (change to a columnar format or join order) along with its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark35/18.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b138c90c93bae953f2aa7b762892ede9175e6834bdc79b60b05f501a7251795"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are absent; only the physical plan (with input/output schema, pushedfilters, and exec-transformer breakdowns) is shown: Add a Context section explaining why Parquet scans were chosen over in-memory tables and what trade-offs they carry (e.g. shuffle cost, batched vs. streaming behavior). Then document Consequences covering the performance/latency impact of each stage"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark35/19.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ec51197b272d7a4271207e8a018dc631da319209f9a12bf05f9dcbf5a20cbfe"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and ShuffleQueryStage nodes), revealing no context/problem or explicit decision beneath the scanner clip: Add an Context section explaining why this query structure was chosen and what problem it solves; add a Decision section stating the transformation/optimizer rule applied; and a Consequences section noting any trade-offs (e.g. shuffle cost, memory usage)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark35/20.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdff3e0688682a230251d562a084322a0486e1dd7e8fc408e3d4d06de8ea9426"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a physical plan dump (AdaptiveSparkPlan with VeloxColumnarToRow and InputIteratorTransformer nodes), revealing no context/problem or explicit decision; the title \u002221\u0022 gives no information: Replace with an ADR describing the problem being solved (e.g. slow join over parquet tables) and the concrete decision (e.g. switch to a new shuffle/resize/batch plan, add a cost threshold), plus its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark35/21.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"943242cec1b97aa9c8ba9145d18f00d42a49786baa200d7f78ec6348b7c81008"}},{"ruleId":"D20","level":"warning","message":{"text":"Physical plan with detailed node definitions and output/column metadata (FileSourceScanExecTransformer parquet, FilterExecTransformer, ProjectExecTransformer) is a diagnostic/execution trace; no context/problem or explicit decision beneath the plan: Add an Context section stating why this physical-plan structure matters (e.g. a join/left-anti pattern over a Parquet scan) and a Decision section naming the transformation/relation change being documented, along with its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"backends-velox/src/test/resources/tpch-approved-plan/v1/spark35/22.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"94b0a4015c84dd162f967cf82c6222b939b2563f53774e514af11680829ff294"}},{"ruleId":"D29","level":"error","message":{"text":"A security 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":"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":"831b1748ffacdf584c0ec917a04324357dc0d9c650517735f8b5363426359a77"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"831b1748ffacdf584c0ec917a04324357dc0d9c650517735f8b5363426359a77"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"831b1748ffacdf584c0ec917a04324357dc0d9c650517735f8b5363426359a77"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"831b1748ffacdf584c0ec917a04324357dc0d9c650517735f8b5363426359a77"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"831b1748ffacdf584c0ec917a04324357dc0d9c650517735f8b5363426359a77"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"831b1748ffacdf584c0ec917a04324357dc0d9c650517735f8b5363426359a77"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"831b1748ffacdf584c0ec917a04324357dc0d9c650517735f8b5363426359a77"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8f47a39d55ea55905132d4e6d76700168ede7aff261fd1b7fce328fe844e8d38"},"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":"831b1748ffacdf584c0ec917a04324357dc0d9c650517735f8b5363426359a77"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b0b08fd47f953543dac29e04c5910799afab5ed367485393c9d972d6e8ba6823"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b0b08fd47f953543dac29e04c5910799afab5ed367485393c9d972d6e8ba6823"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b194cf9fdd8084adc900eae226d32c821f94f1da6ef15640b83c5b0f87db01ad"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b194cf9fdd8084adc900eae226d32c821f94f1da6ef15640b83c5b0f87db01ad"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b194cf9fdd8084adc900eae226d32c821f94f1da6ef15640b83c5b0f87db01ad"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"37a58812c8cd8871f99bfcf031a4c347ce380d1c77d2ddb60a8d4eb048ad6256"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2b954c8cbf31e1f1fc7980eae29c56014724b3218a2f38df34a09e99578942c8"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2b954c8cbf31e1f1fc7980eae29c56014724b3218a2f38df34a09e99578942c8"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a1c104dfd84390001fa1d710327696ccd77ea28cd4da9c60294ad33d0e07784d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"db07638a70bfd26c91deb99332a24102e0f6df0930cfdfeaf765001e9f3b136e"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"db07638a70bfd26c91deb99332a24102e0f6df0930cfdfeaf765001e9f3b136e"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fe9e7da047e9c4bb3f755fd143e050e0b077d465b5d4b6b48bbdd789c6f1685"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9a1b37243da4e3afb692859a403b4fb91bafb182d0557a75d8d4a803e1ad72d4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9a1b37243da4e3afb692859a403b4fb91bafb182d0557a75d8d4a803e1ad72d4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9a1b37243da4e3afb692859a403b4fb91bafb182d0557a75d8d4a803e1ad72d4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"93742162474e4148e8194d0b70c9fbff1205923e16a50b29a9d7773e3de227bc"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"93742162474e4148e8194d0b70c9fbff1205923e16a50b29a9d7773e3de227bc"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6312978db261336cfd1fb88a042b9a386f434c86c2533afff86c688600db4cc3"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6312978db261336cfd1fb88a042b9a386f434c86c2533afff86c688600db4cc3"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6312978db261336cfd1fb88a042b9a386f434c86c2533afff86c688600db4cc3"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"21ee1525fc16050f122b02caa9bafba9c6a2c8cec0d9893ba14a04455ad9352c"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ab8d83539c5ebe567cb6deae98d392d6617f9ea4001a34a9a21fb3f393c0be8f"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2688137d7a5867b81521c20ab2ba174c854266637e1b2dc91c319aef1dbc5327"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"56de348c52d39db1705aff6cd049dda4555821a47e5c8d6de9f41482eded87e6"},"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":"8a4a7ab784c6dd1cd94244fc95688d2d35a7eb05819c7c1645131e480bd6f4fe"},"taxa":[{"id":"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":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"34eb3b8473de04d5bcf312a9d07e30bab8dd747487a92447161d20d63cd4cc28"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b2c597dea959790ea0d2de62172a366f69ec00c40d78b6ebd64d2b5af5a31224"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"36dc40cc1aae1ebc31e3d42b0eaa48eabdfbba6e89cabae4e76530af58d55189"}},{"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":"552045bef7b675d6163129d0e13e6ffcf7140baf1a9d7b76c7e57d91d8ff0fc2"}},{"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":"56f808cd32123c7774537c35d58e17dffc7101f7cc571e79b9bcd6d879fb7887"}},{"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":"4e5832bf27aefe5f0f5ad8590f13faec08e857a4225289e2613edf2cddc88256"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0e17f71490e4d120a48b2b2881ab866c93b272bef2febb673a3e8e42b2c288ab"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"90f83b4fa27db32740afe9540c905f3c0499caed87f61049a8a903ecc95b41c3"}}],"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-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-16","guid":"659db3ea-affc-8453-8add-c1218fbfcb92","name":"Configuration","shortDescription":{"text":"Configuration"},"helpUri":"https://cwe.mitre.org/data/definitions/16.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"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-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-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":60,"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."]}]}