sparkforensics-server 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/index.js +8 -4
  2. package/package.json +1 -1
  3. package/public/assets/AutoscalingChurn-9Zo6IMGS.js +1 -0
  4. package/public/assets/CacheUtilization-MBDfMsKC.js +1 -0
  5. package/public/assets/CachingOpportunity-Cfw3wAFa.js +1 -0
  6. package/public/assets/ColdStart-BtS12b6_.js +1 -0
  7. package/public/assets/ConfigAudit-DNPV6EQg.js +1 -0
  8. package/public/assets/CoreUsageArea-BObEeenE.js +1 -0
  9. package/public/assets/Dashboard-CC_BXrNy.js +2 -0
  10. package/public/assets/DisclosureContext-Ds0hcZFn.js +1 -0
  11. package/public/assets/DuplicatePlanSubtree-vN3zqRsi.js +1 -0
  12. package/public/assets/ExecutorUtilization-CZObSLIj.js +1 -0
  13. package/public/assets/GcPressure-ByJlLOua.js +1 -0
  14. package/public/assets/IncompleteRun-MzqV4W8y.js +1 -0
  15. package/public/assets/JobFailures-LbMvAwAb.js +1 -0
  16. package/public/assets/MemoryUtilization-DH4jYvJK.js +1 -0
  17. package/public/assets/OverBroadcast-euk6HKg4.js +1 -0
  18. package/public/assets/PartitionHint-DThaMMRT.js +1 -0
  19. package/public/assets/PartitionSizing-yIN-iZzx.js +1 -0
  20. package/public/assets/PlanExplorer-Dd9WPK4S.js +1 -0
  21. package/public/assets/PlanGraphRoute-NV5mCXRm.js +1 -0
  22. package/public/assets/RetryWaste-CXH4D-xH.js +1 -0
  23. package/public/assets/ShuffleIO-CW7U68ph.js +1 -0
  24. package/public/assets/Skew-PL79TppX.js +1 -0
  25. package/public/assets/SlowHost-GBO73hCi.js +1 -0
  26. package/public/assets/SmallFiles-B5cUjEav.js +1 -0
  27. package/public/assets/SpeculationWaste-mxi3jgb0.js +1 -0
  28. package/public/assets/Spill-CH1bNpxL.js +1 -0
  29. package/public/assets/StageFailed-YvxC11ii.js +1 -0
  30. package/public/assets/StageFindingGroup-B1A0nf-e.js +1 -0
  31. package/public/assets/StageHeader-BMNmUy-s.js +1 -0
  32. package/public/assets/StageShape-DO3mQ6NS.js +1 -0
  33. package/public/assets/StageSlowness-SwRxfAEx.js +1 -0
  34. package/public/assets/Straggler-DHLTiBY-.js +1 -0
  35. package/public/assets/TaskFailures-Bj0QxiOc.js +1 -0
  36. package/public/assets/{TinyTask-Be-pvTjJ.js → TinyTask-COUQQ5bQ.js} +1 -1
  37. package/public/assets/UnderBroadcast-RAUbQ6vw.js +1 -0
  38. package/public/assets/{finding-anchor-vVODA_VC.js → finding-anchor-Dl8mIHiU.js} +1 -1
  39. package/public/assets/impact-sort-Eihua9dY.js +1 -0
  40. package/public/assets/index-BcqTLKFp.css +2 -0
  41. package/public/assets/index-DaC8A2FS.js +13 -0
  42. package/public/assets/{parser-worker-jAP0kWvS.js → parser-worker-CfDvPkwF.js} +9 -9
  43. package/public/assets/react-vendor-BAKt3vny.js +9 -0
  44. package/public/assets/select-DkjFHlXR.js +1 -0
  45. package/public/assets/usePagedRows-Bo-aSztx.js +1 -0
  46. package/public/assets/useRecentFiles-Bb4-ukVz.js +11 -0
  47. package/public/assets/useSortMode-lDedD5a3.js +1 -0
  48. package/public/docs/404.html +4 -3
  49. package/public/docs/assets/{app.C5E-wy6e.js → app.yjczoibf.js} +1 -1
  50. package/public/docs/assets/chunks/@localSearchIndexroot.r9imX8Aq.js +1 -0
  51. package/public/docs/assets/chunks/{VPLocalSearchBox.DtyygpbL.js → VPLocalSearchBox.DOBbPfix.js} +1 -1
  52. package/public/docs/assets/chunks/{theme.DQS9-w_Z.js → theme.DFcAl8Ws.js} +2 -2
  53. package/public/docs/assets/contributor-guide_architecture_board-widgets.md.D0Kkk_r5.js +1 -0
  54. package/public/docs/assets/contributor-guide_architecture_board-widgets.md.D0Kkk_r5.lean.js +1 -0
  55. package/public/docs/assets/contributor-guide_architecture_detector-contract.md.caA46z-u.js +1 -0
  56. package/public/docs/assets/{contributor-guide_architecture_detector-contract.md.CsCytCho.lean.js → contributor-guide_architecture_detector-contract.md.caA46z-u.lean.js} +1 -1
  57. package/public/docs/assets/contributor-guide_architecture_drill-down.md.CdtlKHl-.js +1 -0
  58. package/public/docs/assets/contributor-guide_architecture_impact-estimation.md.BNp14LtL.js +1 -0
  59. package/public/docs/assets/contributor-guide_architecture_impact-estimation.md.BNp14LtL.lean.js +1 -0
  60. package/public/docs/assets/contributor-guide_architecture_index.md.B9yZieYL.js +1 -0
  61. package/public/docs/assets/{contributor-guide_architecture_index.md.3TO9ic6w.lean.js → contributor-guide_architecture_index.md.B9yZieYL.lean.js} +1 -1
  62. package/public/docs/assets/contributor-guide_architecture_overview.md.DBGo-bwn.js +1 -0
  63. package/public/docs/assets/contributor-guide_architecture_overview.md.DBGo-bwn.lean.js +1 -0
  64. package/public/docs/assets/contributor-guide_architecture_state-and-history.md.w4lwybdh.js +1 -0
  65. package/public/docs/assets/{contributor-guide_architecture_state-and-history.md.B8Wc_ZTg.lean.js → contributor-guide_architecture_state-and-history.md.w4lwybdh.lean.js} +1 -1
  66. package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.CcvqxnZI.js +1 -0
  67. package/public/docs/assets/{contributor-guide_architecture_widget-rendering.md.DYwFeyjV.lean.js → contributor-guide_architecture_widget-rendering.md.CcvqxnZI.lean.js} +1 -1
  68. package/public/docs/assets/contributor-guide_architecture_worker-protocol.md.CKeFttKj.js +6 -0
  69. package/public/docs/assets/contributor-guide_architecture_worker-protocol.md.CKeFttKj.lean.js +1 -0
  70. package/public/docs/assets/contributor-guide_contributing.md.CQMvGwFt.js +1 -0
  71. package/public/docs/assets/{contributor-guide_contributing.md.B2E9ni79.lean.js → contributor-guide_contributing.md.CQMvGwFt.lean.js} +1 -1
  72. package/public/docs/assets/contributor-guide_development-setup.md.D9bu4j_c.js +15 -0
  73. package/public/docs/assets/contributor-guide_development-setup.md.D9bu4j_c.lean.js +1 -0
  74. package/public/docs/assets/contributor-guide_testing.md.By6XGR9a.js +1 -0
  75. package/public/docs/assets/{contributor-guide_testing.md.Cnn6gz1C.lean.js → contributor-guide_testing.md.By6XGR9a.lean.js} +1 -1
  76. package/public/docs/assets/{style.DSixAiZE.css → style.tmDhD3c8.css} +1 -1
  77. package/public/docs/assets/tuning-reference_anti-patterns.md.D08Uaod7.js +1 -0
  78. package/public/docs/assets/tuning-reference_anti-patterns.md.D08Uaod7.lean.js +1 -0
  79. package/public/docs/assets/tuning-reference_aqe.md.C1Ae6A8u.js +1 -0
  80. package/public/docs/assets/tuning-reference_aqe.md.C1Ae6A8u.lean.js +1 -0
  81. package/public/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.6wjKuJNE.js +1 -0
  82. package/public/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.6wjKuJNE.lean.js +1 -0
  83. package/public/docs/assets/tuning-reference_bottleneck-cold-start.md.BVQbsuHP.js +7 -0
  84. package/public/docs/assets/tuning-reference_bottleneck-cold-start.md.BVQbsuHP.lean.js +1 -0
  85. package/public/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.DtaYnaiF.js +1 -0
  86. package/public/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.DtaYnaiF.lean.js +1 -0
  87. package/public/docs/assets/{tuning-reference_bottleneck-failures.md.CAsFf3RR.js → tuning-reference_bottleneck-failures.md.Z1Tdmdd3.js} +2 -2
  88. package/public/docs/assets/tuning-reference_bottleneck-failures.md.Z1Tdmdd3.lean.js +1 -0
  89. package/public/docs/assets/tuning-reference_bottleneck-gc.md.BCnXLf1n.js +6 -0
  90. package/public/docs/assets/tuning-reference_bottleneck-gc.md.BCnXLf1n.lean.js +1 -0
  91. package/public/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.CcvQj2g9.js +8 -0
  92. package/public/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.CcvQj2g9.lean.js +1 -0
  93. package/public/docs/assets/tuning-reference_bottleneck-memory-utilization.md.B-C0-8h-.js +7 -0
  94. package/public/docs/assets/tuning-reference_bottleneck-memory-utilization.md.B-C0-8h-.lean.js +1 -0
  95. package/public/docs/assets/tuning-reference_bottleneck-retry-waste.md.DCnhWiqj.js +1 -0
  96. package/public/docs/assets/tuning-reference_bottleneck-retry-waste.md.DCnhWiqj.lean.js +1 -0
  97. package/public/docs/assets/{tuning-reference_bottleneck-shuffle.md.DDMQVOW6.js → tuning-reference_bottleneck-shuffle.md.B5OMJCd3.js} +2 -2
  98. package/public/docs/assets/tuning-reference_bottleneck-shuffle.md.B5OMJCd3.lean.js +1 -0
  99. package/public/docs/assets/{tuning-reference_bottleneck-skew.md.B0MzhWcX.js → tuning-reference_bottleneck-skew.md.Cvo6NQm_.js} +1 -1
  100. package/public/docs/assets/tuning-reference_bottleneck-skew.md.Cvo6NQm_.lean.js +1 -0
  101. package/public/docs/assets/{tuning-reference_bottleneck-slow-host.md.BlIo6UDW.js → tuning-reference_bottleneck-slow-host.md.ja5qr3wq.js} +1 -1
  102. package/public/docs/assets/tuning-reference_bottleneck-slow-host.md.ja5qr3wq.lean.js +1 -0
  103. package/public/docs/assets/tuning-reference_bottleneck-small-files.md.Crjtb0i2.js +5 -0
  104. package/public/docs/assets/tuning-reference_bottleneck-small-files.md.Crjtb0i2.lean.js +1 -0
  105. package/public/docs/assets/tuning-reference_bottleneck-spill.md.Bl8KtSRg.js +6 -0
  106. package/public/docs/assets/tuning-reference_bottleneck-spill.md.Bl8KtSRg.lean.js +1 -0
  107. package/public/docs/assets/tuning-reference_bottleneck-straggler.md.B0VN8reT.js +7 -0
  108. package/public/docs/assets/tuning-reference_bottleneck-straggler.md.B0VN8reT.lean.js +1 -0
  109. package/public/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.DQCftGhu.js +8 -0
  110. package/public/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.DQCftGhu.lean.js +1 -0
  111. package/public/docs/assets/{tuning-reference_bottleneck-utilization.md.DqC_iGkw.js → tuning-reference_bottleneck-utilization.md.BXDl30f9.js} +1 -1
  112. package/public/docs/assets/tuning-reference_bottleneck-utilization.md.BXDl30f9.lean.js +1 -0
  113. package/public/docs/assets/tuning-reference_caching.md.CcaiMn_7.js +1 -0
  114. package/public/docs/assets/tuning-reference_caching.md.CcaiMn_7.lean.js +1 -0
  115. package/public/docs/assets/tuning-reference_cluster-config.md.DbWG1yZq.js +1 -0
  116. package/public/docs/assets/tuning-reference_cluster-config.md.DbWG1yZq.lean.js +1 -0
  117. package/public/docs/assets/tuning-reference_config.md.YUqSpwFB.js +1 -0
  118. package/public/docs/assets/tuning-reference_config.md.YUqSpwFB.lean.js +1 -0
  119. package/public/docs/assets/tuning-reference_data-formats.md.C5DX5xL4.js +1 -0
  120. package/public/docs/assets/tuning-reference_data-formats.md.C5DX5xL4.lean.js +1 -0
  121. package/public/docs/assets/tuning-reference_index.md.ZVIpQ6Dk.js +1 -0
  122. package/public/docs/assets/tuning-reference_index.md.ZVIpQ6Dk.lean.js +1 -0
  123. package/public/docs/assets/tuning-reference_intro.md.BSSaDlqx.js +1 -0
  124. package/public/docs/assets/tuning-reference_intro.md.BSSaDlqx.lean.js +1 -0
  125. package/public/docs/assets/tuning-reference_joins.md.BVhNCDnE.js +1 -0
  126. package/public/docs/assets/tuning-reference_joins.md.BVhNCDnE.lean.js +1 -0
  127. package/public/docs/assets/tuning-reference_memory-model.md.CfjFdgbl.js +1 -0
  128. package/public/docs/assets/tuning-reference_memory-model.md.CfjFdgbl.lean.js +1 -0
  129. package/public/docs/assets/tuning-reference_metrics.md.C64VNEL4.js +1 -0
  130. package/public/docs/assets/tuning-reference_metrics.md.C64VNEL4.lean.js +1 -0
  131. package/public/docs/assets/tuning-reference_partitioning.md.CtLK0xsS.js +1 -0
  132. package/public/docs/assets/tuning-reference_partitioning.md.CtLK0xsS.lean.js +1 -0
  133. package/public/docs/assets/tuning-reference_pyspark.md.D-92XgF8.js +6 -0
  134. package/public/docs/assets/tuning-reference_pyspark.md.D-92XgF8.lean.js +1 -0
  135. package/public/docs/assets/tuning-reference_shuffle.md.Iq2v1oHJ.js +1 -0
  136. package/public/docs/assets/tuning-reference_shuffle.md.Iq2v1oHJ.lean.js +1 -0
  137. package/public/docs/assets/tuning-reference_spark-architecture.md._qwnE_Sc.js +1 -0
  138. package/public/docs/assets/tuning-reference_spark-architecture.md._qwnE_Sc.lean.js +1 -0
  139. package/public/docs/assets/tuning-reference_table-formats.md.BSYEK-eN.js +1 -0
  140. package/public/docs/assets/tuning-reference_table-formats.md.BSYEK-eN.lean.js +1 -0
  141. package/public/docs/assets/user-guide_alternative-log-retrieval.md.z-8npxNk.js +7 -0
  142. package/public/docs/assets/user-guide_alternative-log-retrieval.md.z-8npxNk.lean.js +1 -0
  143. package/public/docs/assets/user-guide_getting-started.md.BJW5oVhe.js +24 -0
  144. package/public/docs/assets/user-guide_getting-started.md.BJW5oVhe.lean.js +1 -0
  145. package/public/docs/assets/user-guide_mcp-tools.md.DcLiOa9t.js +148 -0
  146. package/public/docs/assets/user-guide_mcp-tools.md.DcLiOa9t.lean.js +1 -0
  147. package/public/docs/assets/user-guide_run-comparison.md.qin0a4IX.js +1 -0
  148. package/public/docs/assets/user-guide_run-comparison.md.qin0a4IX.lean.js +1 -0
  149. package/public/docs/assets/user-guide_understanding-findings.md.DzReyCXb.js +1 -0
  150. package/public/docs/assets/{user-guide_understanding-findings.md.YBBLOwWi.lean.js → user-guide_understanding-findings.md.DzReyCXb.lean.js} +1 -1
  151. package/public/docs/contributor-guide/architecture/board-widgets.html +7 -6
  152. package/public/docs/contributor-guide/architecture/detector-contract.html +7 -6
  153. package/public/docs/contributor-guide/architecture/drill-down.html +7 -6
  154. package/public/docs/contributor-guide/architecture/impact-estimation.html +7 -6
  155. package/public/docs/contributor-guide/architecture/index.html +7 -6
  156. package/public/docs/contributor-guide/architecture/overview.html +7 -6
  157. package/public/docs/contributor-guide/architecture/state-and-history.html +7 -6
  158. package/public/docs/contributor-guide/architecture/widget-rendering.html +7 -6
  159. package/public/docs/contributor-guide/architecture/worker-protocol.html +10 -9
  160. package/public/docs/contributor-guide/contributing.html +7 -6
  161. package/public/docs/contributor-guide/development-setup.html +12 -11
  162. package/public/docs/contributor-guide/testing.html +7 -6
  163. package/public/docs/hashmap.json +1 -1
  164. package/public/docs/index.html +5 -4
  165. package/public/docs/tuning-reference/anti-patterns.html +8 -7
  166. package/public/docs/tuning-reference/aqe.html +8 -7
  167. package/public/docs/tuning-reference/bottleneck-broadcast-sizing.html +8 -7
  168. package/public/docs/tuning-reference/bottleneck-cold-start.html +8 -7
  169. package/public/docs/tuning-reference/bottleneck-duplicate-plan-subtree.html +8 -7
  170. package/public/docs/tuning-reference/bottleneck-failures.html +8 -7
  171. package/public/docs/tuning-reference/bottleneck-gc.html +8 -7
  172. package/public/docs/tuning-reference/bottleneck-job-failure-rate.html +8 -7
  173. package/public/docs/tuning-reference/bottleneck-memory-utilization.html +8 -7
  174. package/public/docs/tuning-reference/bottleneck-retry-waste.html +8 -7
  175. package/public/docs/tuning-reference/bottleneck-shuffle.html +8 -7
  176. package/public/docs/tuning-reference/bottleneck-skew.html +8 -7
  177. package/public/docs/tuning-reference/bottleneck-slow-host.html +8 -7
  178. package/public/docs/tuning-reference/bottleneck-small-files.html +8 -7
  179. package/public/docs/tuning-reference/bottleneck-spill.html +8 -7
  180. package/public/docs/tuning-reference/bottleneck-straggler.html +8 -7
  181. package/public/docs/tuning-reference/bottleneck-tiny-tasks.html +8 -7
  182. package/public/docs/tuning-reference/bottleneck-utilization.html +8 -7
  183. package/public/docs/tuning-reference/caching.html +8 -7
  184. package/public/docs/tuning-reference/cluster-config.html +8 -7
  185. package/public/docs/tuning-reference/config.html +8 -7
  186. package/public/docs/tuning-reference/data-formats.html +8 -7
  187. package/public/docs/tuning-reference/index.html +8 -7
  188. package/public/docs/tuning-reference/intro.html +8 -7
  189. package/public/docs/tuning-reference/joins.html +8 -7
  190. package/public/docs/tuning-reference/memory-model.html +8 -7
  191. package/public/docs/tuning-reference/metrics.html +8 -7
  192. package/public/docs/tuning-reference/partitioning.html +8 -7
  193. package/public/docs/tuning-reference/pyspark.html +8 -7
  194. package/public/docs/tuning-reference/shuffle.html +8 -7
  195. package/public/docs/tuning-reference/spark-architecture.html +8 -7
  196. package/public/docs/tuning-reference/table-formats.html +8 -7
  197. package/public/docs/user-guide/alternative-log-retrieval.html +14 -7
  198. package/public/docs/user-guide/getting-started.html +29 -7
  199. package/public/docs/user-guide/mcp-tools.html +51 -27
  200. package/public/docs/user-guide/run-comparison.html +7 -6
  201. package/public/docs/user-guide/understanding-findings.html +7 -6
  202. package/public/export-template.html +111 -0
  203. package/public/index.html +4 -3
  204. package/vendor-core/allocation.js +106 -0
  205. package/vendor-core/analyzer.js +168 -60
  206. package/vendor-core/check-coverage.js +88 -0
  207. package/vendor-core/cli/budgets.js +54 -27
  208. package/vendor-core/cli/collect-run.js +84 -32
  209. package/vendor-core/cli/regression-budgets.js +83 -0
  210. package/vendor-core/cli/threshold-config.js +28 -0
  211. package/vendor-core/comparison-verdict.js +177 -0
  212. package/vendor-core/core-source-hash.txt +1 -0
  213. package/vendor-core/core-usage-locality.js +56 -2
  214. package/vendor-core/detector-docs.js +58 -0
  215. package/vendor-core/detectors.js +1094 -500
  216. package/vendor-core/docs-config.js +0 -36
  217. package/vendor-core/docs-content/chapters/nav-index.json +31 -0
  218. package/vendor-core/docs-content/detection/cache.md +3 -2
  219. package/vendor-core/docs-content/detection/cfg.md +9 -8
  220. package/vendor-core/docs-content/detection/chrn.md +1 -2
  221. package/vendor-core/docs-content/detection/cold.md +4 -2
  222. package/vendor-core/docs-content/detection/cstor.md +9 -0
  223. package/vendor-core/docs-content/detection/fail.md +3 -2
  224. package/vendor-core/docs-content/detection/gc.md +3 -2
  225. package/vendor-core/docs-content/detection/host.md +2 -1
  226. package/vendor-core/docs-content/detection/local.md +1 -1
  227. package/vendor-core/docs-content/detection/mem.md +5 -2
  228. package/vendor-core/docs-content/detection/plan.md +2 -1
  229. package/vendor-core/docs-content/detection/sfail.md +2 -1
  230. package/vendor-core/docs-content/detection/shape.md +5 -4
  231. package/vendor-core/docs-content/detection/skew.md +3 -1
  232. package/vendor-core/docs-content/detection/slow.md +2 -2
  233. package/vendor-core/docs-content/detection/spec.md +2 -3
  234. package/vendor-core/docs-content/detection/spill.md +1 -1
  235. package/vendor-core/docs-site-config.js +3 -0
  236. package/vendor-core/effective-conf.js +107 -0
  237. package/vendor-core/efficiency-model.js +8 -6
  238. package/vendor-core/event-handlers.js +321 -44
  239. package/vendor-core/event-schemas.js +23 -0
  240. package/vendor-core/evidence-report.js +432 -115
  241. package/vendor-core/export-data.js +79 -6
  242. package/vendor-core/finding-action-label.js +9 -88
  243. package/vendor-core/finding-filter-predicate.js +9 -0
  244. package/vendor-core/finding-generic-recommendation.js +26 -105
  245. package/vendor-core/finding-names.js +28 -45
  246. package/vendor-core/finding-presentation.js +368 -0
  247. package/vendor-core/finding-tag-help.js +110 -0
  248. package/vendor-core/finding-types.js +373 -0
  249. package/vendor-core/findings-of-type.js +11 -0
  250. package/vendor-core/format-utils.js +96 -30
  251. package/vendor-core/html-export.js +51 -0
  252. package/vendor-core/impact-band.js +21 -8
  253. package/vendor-core/impact-estimator.js +25 -520
  254. package/vendor-core/impact-format.js +115 -0
  255. package/vendor-core/impact-model.js +197 -0
  256. package/vendor-core/ingest.js +6 -2
  257. package/vendor-core/intervals.js +13 -0
  258. package/vendor-core/list-runs.js +7 -5
  259. package/vendor-core/load-vendored.js +70 -5
  260. package/vendor-core/mcp-server-factory.js +14 -10
  261. package/vendor-core/mcp-tools.js +105 -45
  262. package/vendor-core/model-assembler.js +35 -1
  263. package/vendor-core/occupancy.js +1 -1
  264. package/vendor-core/parser-worker.js +2 -2
  265. package/vendor-core/plan-graph-model.js +3 -2
  266. package/vendor-core/plan-node-detail.js +1 -1
  267. package/vendor-core/proxy.js +3 -1
  268. package/vendor-core/python-stage.js +25 -0
  269. package/vendor-core/recommendation-rollup.js +70 -3
  270. package/vendor-core/redact.js +96 -37
  271. package/vendor-core/remediation.js +20 -0
  272. package/vendor-core/run-comparison.js +73 -29
  273. package/vendor-core/run-interpretation.js +291 -0
  274. package/vendor-core/run-metrics.js +198 -0
  275. package/vendor-core/run-outcome.js +74 -0
  276. package/vendor-core/run-payload.js +17 -0
  277. package/vendor-core/run-shape.js +40 -0
  278. package/vendor-core/run-totals.js +24 -0
  279. package/vendor-core/run-verdict.js +352 -0
  280. package/vendor-core/scaling-sim.js +4 -5
  281. package/vendor-core/scorecard-estimates.js +63 -0
  282. package/vendor-core/session-snapshot.js +7 -0
  283. package/vendor-core/shs-schemas.js +2 -2
  284. package/vendor-core/spark-memory.js +17 -0
  285. package/vendor-core/sql-stages.js +11 -0
  286. package/vendor-core/stage-plan-nodes.js +18 -0
  287. package/vendor-core/stage-quantiles.js +6 -0
  288. package/vendor-core/threshold-overrides.js +160 -0
  289. package/vendor-core/threshold-summary.js +11 -33
  290. package/vendor-core/types.js +54 -42
  291. package/vendor-core/wall-clock.js +1 -12
  292. package/vendor-core/wasted-core-hours.js +12 -9
  293. package/vendor-core/write-targets.js +312 -0
  294. package/public/assets/AutoscalingChurn-lxZHWIwq.js +0 -1
  295. package/public/assets/CacheUtilization-DuAJ-Lve.js +0 -1
  296. package/public/assets/CachingOpportunity-DC1t7o2_.js +0 -1
  297. package/public/assets/ColdStart-BOYXeiUZ.js +0 -1
  298. package/public/assets/ConfigAudit-MCPrJomC.js +0 -1
  299. package/public/assets/CoreUsageArea-ChNuqGA0.js +0 -1
  300. package/public/assets/Dashboard-VuyUGvZx.js +0 -1
  301. package/public/assets/DuplicatePlanSubtree-JZut9xwq.js +0 -1
  302. package/public/assets/DurationHistogram-_7C1w0l4.js +0 -1
  303. package/public/assets/EmptyState-D_ulfIIi.js +0 -1
  304. package/public/assets/ExecutorUtilization-B08E76jT.js +0 -1
  305. package/public/assets/GcPressure-BZMi2fTx.js +0 -1
  306. package/public/assets/ImpactEstimate-36WxuPdV.js +0 -1
  307. package/public/assets/IncompleteRun-t8JU7HRt.js +0 -1
  308. package/public/assets/JobFailures-CguB1bec.js +0 -1
  309. package/public/assets/MemoryUtilization-DDk8lz9-.js +0 -1
  310. package/public/assets/OverBroadcast-BHXLt6s7.js +0 -1
  311. package/public/assets/PartitionSizing-COj3uwV-.js +0 -1
  312. package/public/assets/PlanExplorer-CnCdEY_i.js +0 -1
  313. package/public/assets/PlanGraphRoute-BesZOW1n.js +0 -1
  314. package/public/assets/RetryWaste-CcU4ctAn.js +0 -1
  315. package/public/assets/RowPagination-D2aIcfGv.js +0 -1
  316. package/public/assets/ShuffleIO-NPHkWbg1.js +0 -1
  317. package/public/assets/Skew-CzztP-C4.js +0 -1
  318. package/public/assets/SlowHost-Dh2KHypN.js +0 -1
  319. package/public/assets/SmallFiles-CgYSuZQw.js +0 -1
  320. package/public/assets/SpeculationWaste-C8J5z1WS.js +0 -1
  321. package/public/assets/Spill-DwTQPZ_L.js +0 -1
  322. package/public/assets/StageFailed-aFeIEh3p.js +0 -1
  323. package/public/assets/StageFindingGroup-DQmAE3uk.js +0 -1
  324. package/public/assets/StageHeader-D6GBbcZp.js +0 -1
  325. package/public/assets/StagePill-CSKyM8Kd.js +0 -1
  326. package/public/assets/StageShape-J6U4cUcM.js +0 -1
  327. package/public/assets/StageSlowness-C5F2v_ZO.js +0 -1
  328. package/public/assets/Straggler-DcP3dFGA.js +0 -1
  329. package/public/assets/TaskFailures-C-vIEheo.js +0 -1
  330. package/public/assets/UnderBroadcast-DfjYGhoK.js +0 -1
  331. package/public/assets/WidgetLeadSummary-BdUUi7L5.js +0 -1
  332. package/public/assets/downsample-WmNM1qc9.js +0 -1
  333. package/public/assets/impact-sort-DxaUheWV.js +0 -1
  334. package/public/assets/inbox-LtbS_kBS.js +0 -1
  335. package/public/assets/index-27MbqTFr.js +0 -11
  336. package/public/assets/index-CWjjbtyo.css +0 -2
  337. package/public/assets/react-vendor-D2TLlSzI.js +0 -9
  338. package/public/assets/select-CC2Lyrmi.js +0 -1
  339. package/public/assets/toggle-group-lmgO21t9.js +0 -1
  340. package/public/assets/usePagedRows-jNUWgVTD.js +0 -1
  341. package/public/assets/useRecentFiles-qH5Ap4xm.js +0 -12
  342. package/public/assets/useSortMode-CvPY99UV.js +0 -1
  343. package/public/docs/assets/chunks/@localSearchIndexroot.CJBoRv1b.js +0 -1
  344. package/public/docs/assets/contributor-guide_architecture_board-widgets.md.9ToZXcTk.js +0 -1
  345. package/public/docs/assets/contributor-guide_architecture_board-widgets.md.9ToZXcTk.lean.js +0 -1
  346. package/public/docs/assets/contributor-guide_architecture_detector-contract.md.CsCytCho.js +0 -1
  347. package/public/docs/assets/contributor-guide_architecture_drill-down.md.Bawx6NgP.js +0 -1
  348. package/public/docs/assets/contributor-guide_architecture_impact-estimation.md.sf9DU2bA.js +0 -1
  349. package/public/docs/assets/contributor-guide_architecture_impact-estimation.md.sf9DU2bA.lean.js +0 -1
  350. package/public/docs/assets/contributor-guide_architecture_index.md.3TO9ic6w.js +0 -1
  351. package/public/docs/assets/contributor-guide_architecture_overview.md.rhfxoGsI.js +0 -1
  352. package/public/docs/assets/contributor-guide_architecture_overview.md.rhfxoGsI.lean.js +0 -1
  353. package/public/docs/assets/contributor-guide_architecture_state-and-history.md.B8Wc_ZTg.js +0 -1
  354. package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.DYwFeyjV.js +0 -1
  355. package/public/docs/assets/contributor-guide_architecture_worker-protocol.md.CBJkwH24.js +0 -6
  356. package/public/docs/assets/contributor-guide_architecture_worker-protocol.md.CBJkwH24.lean.js +0 -1
  357. package/public/docs/assets/contributor-guide_contributing.md.B2E9ni79.js +0 -1
  358. package/public/docs/assets/contributor-guide_development-setup.md.s85j2l8b.js +0 -15
  359. package/public/docs/assets/contributor-guide_development-setup.md.s85j2l8b.lean.js +0 -1
  360. package/public/docs/assets/contributor-guide_testing.md.Cnn6gz1C.js +0 -1
  361. package/public/docs/assets/tuning-reference_anti-patterns.md.Df1YMIHu.js +0 -1
  362. package/public/docs/assets/tuning-reference_anti-patterns.md.Df1YMIHu.lean.js +0 -1
  363. package/public/docs/assets/tuning-reference_aqe.md.BIsCtLzm.js +0 -1
  364. package/public/docs/assets/tuning-reference_aqe.md.BIsCtLzm.lean.js +0 -1
  365. package/public/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.CEstB3Ia.js +0 -1
  366. package/public/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.CEstB3Ia.lean.js +0 -1
  367. package/public/docs/assets/tuning-reference_bottleneck-cold-start.md.CEuy-72y.js +0 -7
  368. package/public/docs/assets/tuning-reference_bottleneck-cold-start.md.CEuy-72y.lean.js +0 -1
  369. package/public/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.CIohQDfn.js +0 -1
  370. package/public/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.CIohQDfn.lean.js +0 -1
  371. package/public/docs/assets/tuning-reference_bottleneck-failures.md.CAsFf3RR.lean.js +0 -1
  372. package/public/docs/assets/tuning-reference_bottleneck-gc.md.B4T3kJYV.js +0 -6
  373. package/public/docs/assets/tuning-reference_bottleneck-gc.md.B4T3kJYV.lean.js +0 -1
  374. package/public/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.BaJl__1W.js +0 -8
  375. package/public/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.BaJl__1W.lean.js +0 -1
  376. package/public/docs/assets/tuning-reference_bottleneck-memory-utilization.md.DbP-SJZc.js +0 -7
  377. package/public/docs/assets/tuning-reference_bottleneck-memory-utilization.md.DbP-SJZc.lean.js +0 -1
  378. package/public/docs/assets/tuning-reference_bottleneck-retry-waste.md.D5JMjVOt.js +0 -1
  379. package/public/docs/assets/tuning-reference_bottleneck-retry-waste.md.D5JMjVOt.lean.js +0 -1
  380. package/public/docs/assets/tuning-reference_bottleneck-shuffle.md.DDMQVOW6.lean.js +0 -1
  381. package/public/docs/assets/tuning-reference_bottleneck-skew.md.B0MzhWcX.lean.js +0 -1
  382. package/public/docs/assets/tuning-reference_bottleneck-slow-host.md.BlIo6UDW.lean.js +0 -1
  383. package/public/docs/assets/tuning-reference_bottleneck-small-files.md.DHGMTmPs.js +0 -5
  384. package/public/docs/assets/tuning-reference_bottleneck-small-files.md.DHGMTmPs.lean.js +0 -1
  385. package/public/docs/assets/tuning-reference_bottleneck-spill.md.PNH7mITt.js +0 -6
  386. package/public/docs/assets/tuning-reference_bottleneck-spill.md.PNH7mITt.lean.js +0 -1
  387. package/public/docs/assets/tuning-reference_bottleneck-straggler.md.DIbXdAcQ.js +0 -7
  388. package/public/docs/assets/tuning-reference_bottleneck-straggler.md.DIbXdAcQ.lean.js +0 -1
  389. package/public/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.CB05v3zh.js +0 -8
  390. package/public/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.CB05v3zh.lean.js +0 -1
  391. package/public/docs/assets/tuning-reference_bottleneck-utilization.md.DqC_iGkw.lean.js +0 -1
  392. package/public/docs/assets/tuning-reference_caching.md.B7aQ8asB.js +0 -1
  393. package/public/docs/assets/tuning-reference_caching.md.B7aQ8asB.lean.js +0 -1
  394. package/public/docs/assets/tuning-reference_cluster-config.md.CD6vzYtD.js +0 -1
  395. package/public/docs/assets/tuning-reference_cluster-config.md.CD6vzYtD.lean.js +0 -1
  396. package/public/docs/assets/tuning-reference_config.md.UvveiWG3.js +0 -1
  397. package/public/docs/assets/tuning-reference_config.md.UvveiWG3.lean.js +0 -1
  398. package/public/docs/assets/tuning-reference_data-formats.md.bjCAWH3N.js +0 -1
  399. package/public/docs/assets/tuning-reference_data-formats.md.bjCAWH3N.lean.js +0 -1
  400. package/public/docs/assets/tuning-reference_index.md.BQ_NooMV.js +0 -1
  401. package/public/docs/assets/tuning-reference_index.md.BQ_NooMV.lean.js +0 -1
  402. package/public/docs/assets/tuning-reference_intro.md.CobD-lGB.js +0 -1
  403. package/public/docs/assets/tuning-reference_intro.md.CobD-lGB.lean.js +0 -1
  404. package/public/docs/assets/tuning-reference_joins.md.BtKs_CuW.js +0 -1
  405. package/public/docs/assets/tuning-reference_joins.md.BtKs_CuW.lean.js +0 -1
  406. package/public/docs/assets/tuning-reference_memory-model.md.CWhvgevP.js +0 -1
  407. package/public/docs/assets/tuning-reference_memory-model.md.CWhvgevP.lean.js +0 -1
  408. package/public/docs/assets/tuning-reference_metrics.md.mLOh7Apj.js +0 -1
  409. package/public/docs/assets/tuning-reference_metrics.md.mLOh7Apj.lean.js +0 -1
  410. package/public/docs/assets/tuning-reference_partitioning.md.q0zKF_8X.js +0 -1
  411. package/public/docs/assets/tuning-reference_partitioning.md.q0zKF_8X.lean.js +0 -1
  412. package/public/docs/assets/tuning-reference_pyspark.md.DDCfvN9t.js +0 -6
  413. package/public/docs/assets/tuning-reference_pyspark.md.DDCfvN9t.lean.js +0 -1
  414. package/public/docs/assets/tuning-reference_shuffle.md.BZZ7R4Ix.js +0 -1
  415. package/public/docs/assets/tuning-reference_shuffle.md.BZZ7R4Ix.lean.js +0 -1
  416. package/public/docs/assets/tuning-reference_spark-architecture.md.Dwzm5avO.js +0 -1
  417. package/public/docs/assets/tuning-reference_spark-architecture.md.Dwzm5avO.lean.js +0 -1
  418. package/public/docs/assets/tuning-reference_table-formats.md.D6wj-2dX.js +0 -1
  419. package/public/docs/assets/tuning-reference_table-formats.md.D6wj-2dX.lean.js +0 -1
  420. package/public/docs/assets/user-guide_alternative-log-retrieval.md.ZHPSbBkF.js +0 -1
  421. package/public/docs/assets/user-guide_alternative-log-retrieval.md.ZHPSbBkF.lean.js +0 -1
  422. package/public/docs/assets/user-guide_getting-started.md.Cpe0U-eO.js +0 -3
  423. package/public/docs/assets/user-guide_getting-started.md.Cpe0U-eO.lean.js +0 -1
  424. package/public/docs/assets/user-guide_mcp-tools.md.DrphooJv.js +0 -125
  425. package/public/docs/assets/user-guide_mcp-tools.md.DrphooJv.lean.js +0 -1
  426. package/public/docs/assets/user-guide_run-comparison.md.CQc1aoU8.js +0 -1
  427. package/public/docs/assets/user-guide_run-comparison.md.CQc1aoU8.lean.js +0 -1
  428. package/public/docs/assets/user-guide_understanding-findings.md.YBBLOwWi.js +0 -1
  429. /package/public/docs/assets/{contributor-guide_architecture_drill-down.md.Bawx6NgP.lean.js → contributor-guide_architecture_drill-down.md.CdtlKHl-.lean.js} +0 -0
@@ -18,6 +18,8 @@ export const LOCALITY_TIERS = ['PROCESS_LOCAL', 'NODE_LOCAL', 'RACK_LO
18
18
 
19
19
 
20
20
 
21
+
22
+
21
23
 
22
24
 
23
25
  export function computeLocalityAreaSeries(
@@ -25,7 +27,7 @@ export function computeLocalityAreaSeries(
25
27
  { bucketWidthMs = 60_000, tiers = LOCALITY_TIERS } = {},
26
28
  ) {
27
29
  const valid = stages.filter(s => (s.completedAt ?? 0) > (s.submittedAt ?? 0) && (s.executorRunTime ?? 0) > 0);
28
- if (valid.length === 0) return { labels: [], series: {} };
30
+ if (valid.length === 0) return { labels: [], series: {}, endTime: 0 };
29
31
  const startTime = valid.reduce((m, s) => Math.min(m, s.submittedAt ?? m), Infinity);
30
32
  const endTime = valid.reduce((m, s) => Math.max(m, s.completedAt ?? m), -Infinity);
31
33
  const nBuckets = Math.max(1, Math.ceil((endTime - startTime) / bucketWidthMs));
@@ -65,5 +67,57 @@ export function computeLocalityAreaSeries(
65
67
 
66
68
  const labels = [];
67
69
  for (let b = 0; b < nBuckets; b++) labels.push(startTime + b * bucketWidthMs);
68
- return { labels, series };
70
+ return { labels, series, endTime };
69
71
  }
72
+
73
+ /** How many time buckets the Core Usage by Locality chart aims for across a run. */
74
+ export const LOCALITY_CHART_TARGET_BUCKETS = 60;
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+ /** The Core Usage by Locality chart's points and its "busy at the peak" figure, shared by the
87
+ * dashboard widget and the CLI/MCP run summary. Buckets are at least a minute wide; a last bucket
88
+ * the stages only partly cover is rescaled to the covered part, and each bucket's idle cores are
89
+ * the peak minus its busy cores. */
90
+ export function buildLocalityChart(
91
+ stages ,
92
+ app ,
93
+ targetBuckets = LOCALITY_CHART_TARGET_BUCKETS,
94
+ ) {
95
+ const hasActivity = stages.some((s) => (s.executorRunTime ?? 0) > 0 && (s.completedAt ?? 0) > (s.submittedAt ?? 0));
96
+ if (!hasActivity) return { hasActivity: false };
97
+
98
+ const start = app?.startTime ?? 0;
99
+ const end = app?.endTime ?? start;
100
+ const bucketWidthMs = Math.max(60_000, Math.ceil(Math.max(1, end - start) / targetBuckets));
101
+ const { labels, series, endTime: seriesEnd } = computeLocalityAreaSeries(stages, { bucketWidthMs });
102
+ const order = [...LOCALITY_TIERS.filter((t) => series[t]), ...(series.OTHER ? ['OTHER'] : []), 'idle'];
103
+
104
+ const points = labels.map((t, i) => {
105
+ const point = { t: Math.round((t - start) / 1000) };
106
+ // The series averages each bucket over its full width, so a last bucket
107
+ // that runs past the series' own end (or a run shorter than one bucket)
108
+ // reads diluted: a 10s stage in a 60s bucket showed well under its busy
109
+ // cores. Rescale to the part of the bucket the series actually covers.
110
+ const coveredMs = Math.min(bucketWidthMs, seriesEnd - t);
111
+ const scale = bucketWidthMs / coveredMs;
112
+ for (const tier of order) if (tier !== 'idle') point[tier] = (series[tier]?.[i] ?? 0) * scale;
113
+ return point;
114
+ });
115
+ const busyTiers = order.filter((t) => t !== 'idle');
116
+ const busyTotal = (p ) => busyTiers.reduce((sum, t) => sum + p[t], 0);
117
+ const peakCores = points.reduce((max, p) => Math.max(max, busyTotal(p)), 0);
118
+ // Same rule as the core series (peak busy minus each bucket's busy), redone
119
+ // on the rescaled values so the stack still tops out at the peak.
120
+ for (const p of points) p.idle = Math.max(0, peakCores - busyTotal(p));
121
+ return { hasActivity: true, order, points, peakCores };
122
+ }
123
+
@@ -0,0 +1,58 @@
1
+ // Type-level doc anchors, read off the detector catalog. Kept out of docs-config.ts so the docs
2
+ // URL helpers (used by every renderer) don't pull in the detectors themselves.
3
+ import { DETECTORS, ENTRY_BY_TYPE } from './detectors.js';
4
+ import { isKnownDocAnchor } from './docs-config.js';
5
+ import { getThresholdSummary } from './threshold-summary.js';
6
+
7
+
8
+ // DETECTORS is static, so this grouping is built once (lazily) instead of re-scanning per
9
+ // docAnchorForType call (called once per TagBadge per render). Keyed by emitted finding type, so
10
+ // broadcastSizing's anchor lands on underBroadcast/overBroadcast.
11
+ let anchorsByTypeCache ;
12
+
13
+ function anchorsByType() {
14
+ if (!anchorsByTypeCache) {
15
+ anchorsByTypeCache = new Map();
16
+ for (const entry of DETECTORS ) {
17
+ for (const type of entry.emits) {
18
+ const anchors = anchorsByTypeCache.get(type) ?? new Set();
19
+ anchors.add(entry.docAnchor);
20
+ anchorsByTypeCache.set(type, anchors);
21
+ }
22
+ }
23
+ }
24
+ return anchorsByTypeCache;
25
+ }
26
+
27
+ /** Resolves a finding `type` to its documented anchor from the DETECTORS entries that emit it.
28
+ * Returns undefined when entries sharing the type disagree on docAnchor (only configAudit today),
29
+ * or when the resolved anchor isn't in the allowlist (isKnownDocAnchor, the same gate DocsLink uses). */
30
+ export function docAnchorForType(type ) {
31
+ const anchors = anchorsByType().get(type) ?? new Set();
32
+ if (anchors.size !== 1) return undefined;
33
+ const [anchor] = anchors;
34
+ return anchor && isKnownDocAnchor(anchor) ? anchor : undefined;
35
+ }
36
+
37
+ /** What a renderer shows about one finding type without running its detector. */
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+ /** Every emitted finding type's `DetectorInfo`, in `DETECTORS` declaration order of each entry's
50
+ * `emits` list (a type repeated across entries takes its first position, as `ENTRY_BY_TYPE` does).
51
+ * The key order is the widget order's tie-break, so it is part of the result. */
52
+ export function detectorInfoByType() {
53
+ const info = {};
54
+ for (const [type, { order, scope }] of ENTRY_BY_TYPE) {
55
+ info[type] = { order, docAnchor: docAnchorForType(type) ?? null, thresholdSummary: getThresholdSummary(type), scope };
56
+ }
57
+ return info;
58
+ }