wafer-core 0.1.30__tar.gz → 0.1.32__tar.gz

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 (743) hide show
  1. {wafer_core-0.1.30 → wafer_core-0.1.32}/PKG-INFO +1 -1
  2. {wafer_core-0.1.30 → wafer_core-0.1.32}/pyproject.toml +5 -2
  3. {wafer_core-0.1.30 → wafer_core-0.1.32}/pyproject.toml.bak +4 -1
  4. wafer_core-0.1.32/tests/test_reward_hack_defenses.py +185 -0
  5. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/trace_compare/test_trace_compare_correctness.py +21 -9
  6. wafer_core-0.1.32/wafer_core/tools/dispatch_baseline/__init__.py +73 -0
  7. wafer_core-0.1.32/wafer_core/tools/dispatch_baseline/analyzer.py +174 -0
  8. wafer_core-0.1.32/wafer_core/tools/dispatch_baseline/client.py +196 -0
  9. wafer_core-0.1.32/wafer_core/tools/dispatch_baseline/codegen.py +246 -0
  10. wafer_core-0.1.32/wafer_core/tools/dispatch_baseline/dtypes.py +217 -0
  11. wafer_core-0.1.32/wafer_core/tools/dispatch_baseline/executor.py +360 -0
  12. wafer_core-0.1.32/wafer_core/tools/dispatch_baseline/roofline.py +165 -0
  13. wafer_core-0.1.32/wafer_core/utils/kernel_utils/defense.py +1347 -0
  14. wafer_core-0.1.32/wafer_core/utils/kernel_utils/test_reward_hacks.py +140 -0
  15. wafer_core-0.1.30/wafer_core/utils/kernel_utils/defense.py +0 -545
  16. {wafer_core-0.1.30 → wafer_core-0.1.32}/.gitignore +0 -0
  17. {wafer_core-0.1.30 → wafer_core-0.1.32}/README.md +0 -0
  18. {wafer_core-0.1.30 → wafer_core-0.1.32}/run_cuda_grep.py +0 -0
  19. {wafer_core-0.1.30 → wafer_core-0.1.32}/test_gpu_e2e.py +0 -0
  20. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/__init__.py +0 -0
  21. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/perfetto/README.md +0 -0
  22. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/perfetto/__init__.py +0 -0
  23. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/perfetto/test_perfetto_integration.py +0 -0
  24. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/perfetto/test_perfetto_tool.py +0 -0
  25. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/perfetto/test_trace_manager.py +0 -0
  26. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/perfetto/test_trace_processor.py +0 -0
  27. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/test_async_ssh_upload.py +0 -0
  28. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/test_capture_tool.py +0 -0
  29. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/test_config.py +0 -0
  30. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/test_eval_interrupt_resume.py +0 -0
  31. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/test_isa_analysis_tools.py +0 -0
  32. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/test_kernel_scope.py +0 -0
  33. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/test_nested_progress.py +0 -0
  34. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/test_rocprof_tools.py +0 -0
  35. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/test_rocprofiler_compute.py +0 -0
  36. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/test_roofline.py +0 -0
  37. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/test_sandbox.py +0 -0
  38. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/test_tracelens_tools.py +0 -0
  39. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/trace_compare/__init__.py +0 -0
  40. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/trace_compare/benchmark_trace_compare.py +0 -0
  41. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/trace_compare/expected_output_amd_llama.json +0 -0
  42. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/trace_compare/generate_golden_file.py +0 -0
  43. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/tracelens/__init__.py +0 -0
  44. {wafer_core-0.1.30 → wafer_core-0.1.32}/tests/tracelens/test_finder.py +0 -0
  45. {wafer_core-0.1.30 → wafer_core-0.1.32}/uv.lock +0 -0
  46. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/__init__.py +0 -0
  47. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/async_ssh.py +0 -0
  48. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/auth.py +0 -0
  49. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/config/__init__.py +0 -0
  50. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/config/loader.py +0 -0
  51. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/config/schema.py +0 -0
  52. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/environments/__init__.py +0 -0
  53. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/environments/coding.py +0 -0
  54. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/environments/gpumode.py +0 -0
  55. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/gpu.py +0 -0
  56. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/gpu_detect.py +0 -0
  57. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/__init__.py +0 -0
  58. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/__init__.py +0 -0
  59. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/amdgcn/__init__.py +0 -0
  60. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/amdgcn/analyzer.py +0 -0
  61. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/amdgcn/instruction_db.py +0 -0
  62. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/amdgcn/parser.py +0 -0
  63. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/amdgcn/types.py +0 -0
  64. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/api.py +0 -0
  65. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/correlation/__init__.py +0 -0
  66. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/correlation/mapper.py +0 -0
  67. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/llvm_ir/__init__.py +0 -0
  68. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/llvm_ir/analyzer.py +0 -0
  69. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/llvm_ir/parser.py +0 -0
  70. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/llvm_ir/types.py +0 -0
  71. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/metrics/__init__.py +0 -0
  72. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/metrics/occupancy.py +0 -0
  73. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/targets/__init__.py +0 -0
  74. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/targets/specs.py +0 -0
  75. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/ttgir/__init__.py +0 -0
  76. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/ttgir/analyzer.py +0 -0
  77. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/ttgir/parser.py +0 -0
  78. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/kernel_scope/ttgir/types.py +0 -0
  79. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/nsys/__init__.py +0 -0
  80. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/nsys/analysis.py +0 -0
  81. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/nsys/discovery.py +0 -0
  82. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/nsys/export.py +0 -0
  83. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/nsys/extraction.py +0 -0
  84. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/nsys/main.py +0 -0
  85. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/nsys/parsing.py +0 -0
  86. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/perfetto/__init__.py +0 -0
  87. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/perfetto/build_trace_processor.py +0 -0
  88. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/perfetto/perfetto_tool.py +0 -0
  89. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/perfetto/trace_manager.py +0 -0
  90. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/perfetto/trace_processor.py +0 -0
  91. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/__init__.py +0 -0
  92. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/__init__.py +0 -0
  93. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/analyzer.py +0 -0
  94. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/finder.py +0 -0
  95. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/VERSION +0 -0
  96. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/__init__.py +0 -0
  97. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/__main__.py +0 -0
  98. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/analysis_base.py +0 -0
  99. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/analysis_webui.py +0 -0
  100. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/default.css +0 -0
  101. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/favicon.ico +0 -0
  102. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/css/font-awesome.css +0 -0
  103. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/css/font-awesome.min.css +0 -0
  104. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/FontAwesome.otf +0 -0
  105. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  106. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/fontawesome-webfont.svg +0 -0
  107. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  108. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  109. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/bordered-pulled.less +0 -0
  110. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/core.less +0 -0
  111. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/fixed-width.less +0 -0
  112. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/font-awesome.less +0 -0
  113. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/icons.less +0 -0
  114. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/larger.less +0 -0
  115. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/list.less +0 -0
  116. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/mixins.less +0 -0
  117. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/path.less +0 -0
  118. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/rotated-flipped.less +0 -0
  119. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/spinning.less +0 -0
  120. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/stacked.less +0 -0
  121. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/variables.less +0 -0
  122. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_bordered-pulled.scss +0 -0
  123. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_core.scss +0 -0
  124. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_fixed-width.scss +0 -0
  125. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_icons.scss +0 -0
  126. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_larger.scss +0 -0
  127. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_list.scss +0 -0
  128. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_mixins.scss +0 -0
  129. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_path.scss +0 -0
  130. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_rotated-flipped.scss +0 -0
  131. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_spinning.scss +0 -0
  132. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_stacked.scss +0 -0
  133. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_variables.scss +0 -0
  134. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/font-awesome.scss +0 -0
  135. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/animation.css +0 -0
  136. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello-codes.css +0 -0
  137. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello-embedded.css +0 -0
  138. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello-ie7-codes.css +0 -0
  139. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello-ie7.css +0 -0
  140. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello.css +0 -0
  141. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/font/fontello.eot +0 -0
  142. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/font/fontello.svg +0 -0
  143. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/font/fontello.ttf +0 -0
  144. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/font/fontello.woff +0 -0
  145. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-bold-webfont.eot +0 -0
  146. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-bold-webfont.svg +0 -0
  147. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-bold-webfont.ttf +0 -0
  148. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-bold-webfont.woff +0 -0
  149. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-italic-webfont.eot +0 -0
  150. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-italic-webfont.svg +0 -0
  151. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-italic-webfont.ttf +0 -0
  152. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-italic-webfont.woff +0 -0
  153. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-regular-webfont.eot +0 -0
  154. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-regular-webfont.svg +0 -0
  155. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-regular-webfont.ttf +0 -0
  156. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-regular-webfont.woff +0 -0
  157. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Bold-webfont.eot +0 -0
  158. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Bold-webfont.svg +0 -0
  159. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Bold-webfont.ttf +0 -0
  160. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Bold-webfont.woff +0 -0
  161. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-BoldItalic-webfont.eot +0 -0
  162. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-BoldItalic-webfont.svg +0 -0
  163. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-BoldItalic-webfont.ttf +0 -0
  164. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-BoldItalic-webfont.woff +0 -0
  165. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBold-webfont.eot +0 -0
  166. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBold-webfont.svg +0 -0
  167. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBold-webfont.ttf +0 -0
  168. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBold-webfont.woff +0 -0
  169. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBoldItalic-webfont.eot +0 -0
  170. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBoldItalic-webfont.svg +0 -0
  171. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBoldItalic-webfont.ttf +0 -0
  172. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBoldItalic-webfont.woff +0 -0
  173. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Italic-webfont.eot +0 -0
  174. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Italic-webfont.svg +0 -0
  175. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Italic-webfont.ttf +0 -0
  176. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Italic-webfont.woff +0 -0
  177. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Light-webfont.eot +0 -0
  178. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Light-webfont.svg +0 -0
  179. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Light-webfont.ttf +0 -0
  180. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Light-webfont.woff +0 -0
  181. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-LightItalic-webfont.eot +0 -0
  182. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-LightItalic-webfont.svg +0 -0
  183. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-LightItalic-webfont.ttf +0 -0
  184. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-LightItalic-webfont.woff +0 -0
  185. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Regular-webfont.eot +0 -0
  186. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Regular-webfont.svg +0 -0
  187. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Regular-webfont.ttf +0 -0
  188. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Regular-webfont.woff +0 -0
  189. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Semibold-webfont.eot +0 -0
  190. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Semibold-webfont.svg +0 -0
  191. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Semibold-webfont.ttf +0 -0
  192. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Semibold-webfont.woff +0 -0
  193. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-SemiboldItalic-webfont.eot +0 -0
  194. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-SemiboldItalic-webfont.svg +0 -0
  195. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  196. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-SemiboldItalic-webfont.woff +0 -0
  197. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts.css +0 -0
  198. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/layout.css +0 -0
  199. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/magnific-popup.css +0 -0
  200. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/assets/media-queries.css +0 -0
  201. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/config.py +0 -0
  202. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/launcher.py +0 -0
  203. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0000_top_stats.yaml +0 -0
  204. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0100_system_info.yaml +0 -0
  205. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0200_system-speed-of-light.yaml +0 -0
  206. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0300_mem_chart.yaml +0 -0
  207. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0500_command-processor.yaml +0 -0
  208. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0600_shader-processor-input.yaml +0 -0
  209. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0700_wavefront-launch.yaml +0 -0
  210. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1000_compute-unit-instruction-mix.yaml +0 -0
  211. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1100_compute-unit-compute-pipeline.yaml +0 -0
  212. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1200_lds.yaml +0 -0
  213. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1300_instruction-cache.yaml +0 -0
  214. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1400_constant-cache.yaml +0 -0
  215. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1500_TA_and_TD.yaml +0 -0
  216. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1600_L1_cache.yaml +0 -0
  217. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1700_L2_cache.yaml +0 -0
  218. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1800_L2_cache_per_channel.yaml +0 -0
  219. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/2100_pc_sampling.yaml +0 -0
  220. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0000_top_stats.yaml +0 -0
  221. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0100_system_info.yaml +0 -0
  222. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0200_system-speed-of-light.yaml +0 -0
  223. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0300_mem_chart.yaml +0 -0
  224. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0400_roofline_info.yaml +0 -0
  225. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0500_command-processor.yaml +0 -0
  226. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0600_shader-processor-input.yaml +0 -0
  227. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0700_wavefront-launch.yaml +0 -0
  228. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1000_compute-unit-instruction-mix.yaml +0 -0
  229. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1100_compute-unit-compute-pipeline.yaml +0 -0
  230. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1200_lds.yaml +0 -0
  231. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1300_instruction-cache.yaml +0 -0
  232. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1400_constant-cache.yaml +0 -0
  233. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1500_TA_and_TD.yaml +0 -0
  234. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1600_L1_cache.yaml +0 -0
  235. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1700_L2_cache.yaml +0 -0
  236. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1800_L2_cache_per_channel.yaml +0 -0
  237. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/2100_pc_sampling.yaml +0 -0
  238. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0000_top_stats.yaml +0 -0
  239. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0100_system_info.yaml +0 -0
  240. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0200_system-speed-of-light.yaml +0 -0
  241. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0300_mem_chart.yaml +0 -0
  242. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0400_roofline_info.yaml +0 -0
  243. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0500_command-processor.yaml +0 -0
  244. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0600_shader-processor-input.yaml +0 -0
  245. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0700_wavefront-launch.yaml +0 -0
  246. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1000_compute-unit-instruction-mix.yaml +0 -0
  247. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1100_compute-unit-compute-pipeline.yaml +0 -0
  248. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1200_lds.yaml +0 -0
  249. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1300_instruction-cache.yaml +0 -0
  250. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1400_constant-cache.yaml +0 -0
  251. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1500_TA_and_TD.yaml +0 -0
  252. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1600_L1_cache.yaml +0 -0
  253. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1700_L2_cache.yaml +0 -0
  254. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1800_L2_cache_per_channel.yaml +0 -0
  255. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/2100_pc_sampling.yaml +0 -0
  256. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0000_top_stats.yaml +0 -0
  257. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0100_system_info.yaml +0 -0
  258. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0200_system-speed-of-light.yaml +0 -0
  259. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0300_mem_chart.yaml +0 -0
  260. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0400_roofline_info.yaml +0 -0
  261. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0500_command-processor.yaml +0 -0
  262. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0600_shader-processor-input.yaml +0 -0
  263. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0700_wavefront-launch.yaml +0 -0
  264. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1000_compute-unit-instruction-mix.yaml +0 -0
  265. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1100_compute-unit-compute-pipeline.yaml +0 -0
  266. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1200_lds.yaml +0 -0
  267. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1300_instruction-cache.yaml +0 -0
  268. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1400_constant-cache.yaml +0 -0
  269. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1500_TA_and_TD.yaml +0 -0
  270. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1600_L1_cache.yaml +0 -0
  271. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1700_L2_cache.yaml +0 -0
  272. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1800_L2_cache_per_channel.yaml +0 -0
  273. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/2100_pc_sampling.yaml +0 -0
  274. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0000_top_stats.yaml +0 -0
  275. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0100_system_info.yaml +0 -0
  276. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0200_system-speed-of-light.yaml +0 -0
  277. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0300_mem_chart.yaml +0 -0
  278. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0400_roofline_info.yaml +0 -0
  279. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0500_command-processor.yaml +0 -0
  280. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0600_shader-processor-input.yaml +0 -0
  281. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0700_wavefront-launch.yaml +0 -0
  282. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1000_compute-unit-instruction-mix.yaml +0 -0
  283. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1100_compute-unit-compute-pipeline.yaml +0 -0
  284. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1200_lds.yaml +0 -0
  285. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1300_instruction-cache.yaml +0 -0
  286. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1400_constant-cache.yaml +0 -0
  287. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1500_TA_and_TD.yaml +0 -0
  288. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1600_L1_cache.yaml +0 -0
  289. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1700_L2_cache.yaml +0 -0
  290. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1800_L2_cache_per_channel.yaml +0 -0
  291. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/2100_pc_sampling.yaml +0 -0
  292. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0000_top_stats.yaml +0 -0
  293. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0100_system_info.yaml +0 -0
  294. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0200_system-speed-of-light.yaml +0 -0
  295. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0300_mem_chart.yaml +0 -0
  296. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0400_roofline_info.yaml +0 -0
  297. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0500_command-processor.yaml +0 -0
  298. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0600_shader-processor-input.yaml +0 -0
  299. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0700_wavefront-launch.yaml +0 -0
  300. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1000_compute-unit-instruction-mix.yaml +0 -0
  301. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1100_compute-unit-compute-pipeline.yaml +0 -0
  302. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1200_lds.yaml +0 -0
  303. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1300_instruction-cache.yaml +0 -0
  304. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1400_constant-cache.yaml +0 -0
  305. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1500_TA_and_TD.yaml +0 -0
  306. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1600_L1_cache.yaml +0 -0
  307. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1700_L2_cache.yaml +0 -0
  308. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1800_L2_cache_per_channel.yaml +0 -0
  309. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/2100_pc_sampling.yaml +0 -0
  310. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/panel_config_template.yaml +0 -0
  311. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_base.py +0 -0
  312. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx908.py +0 -0
  313. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx90a.py +0 -0
  314. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx940.py +0 -0
  315. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx941.py +0 -0
  316. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx942.py +0 -0
  317. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx950.py +0 -0
  318. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/__init__.py +0 -0
  319. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/db_connector.py +0 -0
  320. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/file_io.py +0 -0
  321. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/gui.py +0 -0
  322. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/gui_components/__init__.py +0 -0
  323. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/gui_components/header.py +0 -0
  324. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/gui_components/memchart.py +0 -0
  325. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/kernel_name_shortener.py +0 -0
  326. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/logger.py +0 -0
  327. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/mem_chart.py +0 -0
  328. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/mi_gpu_spec.py +0 -0
  329. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/mi_gpu_spec.yaml +0 -0
  330. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/parser.py +0 -0
  331. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/roofline.py +0 -0
  332. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/roofline_calc.py +0 -0
  333. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/schema.py +0 -0
  334. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/specs.py +0 -0
  335. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/tty.py +0 -0
  336. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui/utils/utils.py +0 -0
  337. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/gui_server.py +0 -0
  338. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/profiler.py +0 -0
  339. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/compute/types.py +0 -0
  340. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/sdk/__init__.py +0 -0
  341. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/sdk/analyzer.py +0 -0
  342. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/sdk/finder.py +0 -0
  343. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/sdk/parser.py +0 -0
  344. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/sdk/profiler.py +0 -0
  345. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/sdk/types.py +0 -0
  346. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/__init__.py +0 -0
  347. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/avail/__init__.py +0 -0
  348. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/avail/query.py +0 -0
  349. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/finder.py +0 -0
  350. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/instrument/__init__.py +0 -0
  351. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/instrument/profiler.py +0 -0
  352. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/parsers/__init__.py +0 -0
  353. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/parsers/json_parser.py +0 -0
  354. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/parsers/text_parser.py +0 -0
  355. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/run/__init__.py +0 -0
  356. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/run/analyzer.py +0 -0
  357. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/run/profiler.py +0 -0
  358. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/sample/__init__.py +0 -0
  359. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/sample/profiler.py +0 -0
  360. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/rocprofiler/systems/types.py +0 -0
  361. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/PERFORMANCE.md +0 -0
  362. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/__init__.py +0 -0
  363. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/aligner.py +0 -0
  364. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/analyzer.py +0 -0
  365. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/api.py +0 -0
  366. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/architecture.py +0 -0
  367. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/classifier.py +0 -0
  368. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/formatter.py +0 -0
  369. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/fusion_analyzer.py +0 -0
  370. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/kernel_registry.yaml +0 -0
  371. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/layer_segmentation.py +0 -0
  372. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/loader.py +0 -0
  373. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/same_kernel_analyzer.py +0 -0
  374. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/trace_compare/warnings.py +0 -0
  375. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/tracelens/__init__.py +0 -0
  376. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/tracelens/comparator.py +0 -0
  377. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/tracelens/finder.py +0 -0
  378. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/tracelens/report_generator.py +0 -0
  379. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/lib/tracelens/types.py +0 -0
  380. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/logging/__init__.py +0 -0
  381. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/logging/bridge.py +0 -0
  382. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/logging/color_formatter.py +0 -0
  383. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/logging/json_formatter.py +0 -0
  384. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/logging/logging_config.py +0 -0
  385. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/problem_config.py +0 -0
  386. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/remote_env.py +0 -0
  387. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/remote_jobs.py +0 -0
  388. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/retry.py +0 -0
  389. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/__init__.py +0 -0
  390. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/__main__.py +0 -0
  391. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/_logging/__init__.py +0 -0
  392. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/_logging/color_formatter.py +0 -0
  393. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/_logging/json_formatter.py +0 -0
  394. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/_logging/logging_config.py +0 -0
  395. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/_rate_limit.py +0 -0
  396. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/_retry.py +0 -0
  397. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/agent_presets/README.md +0 -0
  398. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/agent_presets/__init__.py +0 -0
  399. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/agent_presets/base_preset.py +0 -0
  400. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/agent_presets/gpt_5_1_codex_04_04.py +0 -0
  401. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/agent_presets/gpt_5_2_03_03.py +0 -0
  402. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/agent_presets/loader.py +0 -0
  403. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/agent_presets/opus_4_01_01.py +0 -0
  404. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/agent_presets/rlm_01_01.py +0 -0
  405. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/agent_presets/sonnet_4_02_02.py +0 -0
  406. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/agent_presets/sonnet_4_subagent_03_02.py +0 -0
  407. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/agents.py +0 -0
  408. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/cli.py +0 -0
  409. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/cli_agents.py +0 -0
  410. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/config/README.md +0 -0
  411. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/config/__init__.py +0 -0
  412. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/config/base.py +0 -0
  413. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/config/loader.py +0 -0
  414. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/config/protocols.py +0 -0
  415. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/datasets/__init__.py +0 -0
  416. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/datasets/lichess_puzzles.py +0 -0
  417. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/deploy.py +0 -0
  418. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/docs/ASYNC_RUNTIME.md +0 -0
  419. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/dtypes.py +0 -0
  420. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/__init__.py +0 -0
  421. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/_formatting.py +0 -0
  422. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/_subprocess.py +0 -0
  423. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/ask_user.py +0 -0
  424. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/base.py +0 -0
  425. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/binary_search.py +0 -0
  426. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/browsing.py +0 -0
  427. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/calculator.py +0 -0
  428. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/chess_puzzle.py +0 -0
  429. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/compose.py +0 -0
  430. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/cuda_grep.py +0 -0
  431. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/git_worktree.py +0 -0
  432. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/handoff.py +0 -0
  433. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/localfs.py +0 -0
  434. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/no_tools.py +0 -0
  435. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/oracle.py +0 -0
  436. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/repl.py +0 -0
  437. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/screenspot.py +0 -0
  438. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/swe_grep.py +0 -0
  439. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/environments/terminal_bench.py +0 -0
  440. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/eval_helpers.py +0 -0
  441. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/evaluation.py +0 -0
  442. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/events.py +0 -0
  443. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/examples/eval/cuda_grep/__init__.py +0 -0
  444. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/examples/eval/cuda_grep/config_all_tools.py +0 -0
  445. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/examples/eval/cuda_grep/config_grep_glob.py +0 -0
  446. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/examples/eval/cuda_grep/config_search_only.py +0 -0
  447. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/examples/eval/cuda_grep/cuda_questions.jsonl +0 -0
  448. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/examples/eval/cuda_grep/eval_cuda_grep.py +0 -0
  449. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/examples/eval/cuda_grep/scoring.py +0 -0
  450. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/export.py +0 -0
  451. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/feedback.py +0 -0
  452. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/fingerprint.py +0 -0
  453. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontend/DESIGN.md +0 -0
  454. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontend/README.md +0 -0
  455. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontend/REFACTOR_PLAN.md +0 -0
  456. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontend/UI_IMPROVEMENTS.md +0 -0
  457. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontend/__init__.py +0 -0
  458. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontend/__main__.py +0 -0
  459. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontend/dev.sh +0 -0
  460. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontend/index.html +0 -0
  461. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontend/index_old.html +0 -0
  462. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontend/run.py +0 -0
  463. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontend/server.py +0 -0
  464. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/__init__.py +0 -0
  465. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/headless_json.py +0 -0
  466. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/json_frontend.py +0 -0
  467. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/none.py +0 -0
  468. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/protocol.py +0 -0
  469. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/runner.py +0 -0
  470. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/textual_frontend.py +0 -0
  471. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/INTEGRATION.md +0 -0
  472. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/README.md +0 -0
  473. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/REFACTOR_DESIGN.md +0 -0
  474. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/TUI_TODO.md +0 -0
  475. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/__init__.py +0 -0
  476. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/agent_renderer.py +0 -0
  477. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/__init__.py +0 -0
  478. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/assistant_message.py +0 -0
  479. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/error_display.py +0 -0
  480. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/input.py +0 -0
  481. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/loader.py +0 -0
  482. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/loader_container.py +0 -0
  483. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/markdown.py +0 -0
  484. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/question_selector.py +0 -0
  485. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/spacer.py +0 -0
  486. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/status_line.py +0 -0
  487. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/system_message.py +0 -0
  488. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/text.py +0 -0
  489. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/tool_execution.py +0 -0
  490. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/components/user_message.py +0 -0
  491. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/control_flow_types.py +0 -0
  492. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/demo.py +0 -0
  493. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/example_usage.py +0 -0
  494. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/interactive_agent.py +0 -0
  495. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/oauth.py +0 -0
  496. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/slash_commands.py +0 -0
  497. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/terminal.py +0 -0
  498. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/test_rendering.py +0 -0
  499. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/theme.py +0 -0
  500. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/tui.py +0 -0
  501. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui/utils.py +0 -0
  502. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/frontends/tui_frontend.py +0 -0
  503. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/import_cc.py +0 -0
  504. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/__init__.py +0 -0
  505. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/attention/__init__.py +0 -0
  506. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/attention/config.py +0 -0
  507. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/attention/example.py +0 -0
  508. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/attention/flex_backend.py +0 -0
  509. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/attention/layer.py +0 -0
  510. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/attention/mask.py +0 -0
  511. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/attention/protocol.py +0 -0
  512. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/backends/__init__.py +0 -0
  513. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/backends/generate.py +0 -0
  514. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/backends/tokenize.py +0 -0
  515. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/cache/__init__.py +0 -0
  516. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/cache/paged.py +0 -0
  517. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/cache/protocol.py +0 -0
  518. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/cache/radix.py +0 -0
  519. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/context.py +0 -0
  520. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/engine.py +0 -0
  521. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/sampling.py +0 -0
  522. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/scheduler.py +0 -0
  523. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/testing.py +0 -0
  524. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/inference/types.py +0 -0
  525. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/integrations/__init__.py +0 -0
  526. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/logging_utils.py +0 -0
  527. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/models.py +0 -0
  528. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/paths.py +0 -0
  529. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/pipeline.py +0 -0
  530. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/progress.py +0 -0
  531. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/progress_display.py +0 -0
  532. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt.py +0 -0
  533. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt_optimization/__init__.py +0 -0
  534. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt_optimization/adapter.py +0 -0
  535. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt_optimization/adapters/__init__.py +0 -0
  536. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt_optimization/adapters/system_prompt.py +0 -0
  537. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt_optimization/adapters/system_user_prompt.py +0 -0
  538. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt_optimization/adapters/terminal_bench.py +0 -0
  539. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt_optimization/evaluation.py +0 -0
  540. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt_optimization/evolutionary.py +0 -0
  541. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt_optimization/formatting.py +0 -0
  542. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt_optimization/operations.py +0 -0
  543. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt_optimization/reflective.py +0 -0
  544. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt_optimization/state.py +0 -0
  545. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/prompt_optimization/types.py +0 -0
  546. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/providers/__init__.py +0 -0
  547. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/providers/anthropic.py +0 -0
  548. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/providers/base.py +0 -0
  549. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/providers/google.py +0 -0
  550. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/providers/openai_completions.py +0 -0
  551. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/providers/openai_responses.py +0 -0
  552. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/providers/sglang.py +0 -0
  553. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/providers.py +0 -0
  554. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/remote.py +0 -0
  555. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/scoring.py +0 -0
  556. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/search.py +0 -0
  557. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/skills.py +0 -0
  558. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/slice.py +0 -0
  559. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/store.py +0 -0
  560. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/templates/__init__.py +0 -0
  561. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/templates/base.py +0 -0
  562. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/templates/loader.py +0 -0
  563. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tests/test_slice.py +0 -0
  564. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/__init__.py +0 -0
  565. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/decorator.py +0 -0
  566. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/__init__.py +0 -0
  567. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/analysis_tools.py +0 -0
  568. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/config.py +0 -0
  569. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/configs/__init__.py +0 -0
  570. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/configs/qwen3_0_6b.py +0 -0
  571. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/configs/qwen3_next_80b.py +0 -0
  572. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/debug_mask.py +0 -0
  573. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/debug_qwen.py +0 -0
  574. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/debug_qwen3_next.py +0 -0
  575. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/debug_sdpa.py +0 -0
  576. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/debug_swa.py +0 -0
  577. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/debug_toolkit.py +0 -0
  578. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/debug_with_tools.py +0 -0
  579. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/explore_gemma.py +0 -0
  580. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/explore_qwen.py +0 -0
  581. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/explore_qwen3_dense.py +0 -0
  582. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/explore_qwen3_next.py +0 -0
  583. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/llama_functional.py +0 -0
  584. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/qwen3_next_functional.py +0 -0
  585. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/qwen_functional.py +0 -0
  586. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/test_llama.py +0 -0
  587. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/test_qwen.py +0 -0
  588. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/test_template.py +0 -0
  589. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/tools.py +0 -0
  590. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/trace_hf.py +0 -0
  591. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/functional_extractor/verify.py +0 -0
  592. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tools/oracle.py +0 -0
  593. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/__init__.py +0 -0
  594. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/agent_integration.py +0 -0
  595. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/backends/__init__.py +0 -0
  596. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/backends/fsdp.py +0 -0
  597. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/backends/jax_backend.py +0 -0
  598. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/backends/protocol.py +0 -0
  599. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/backends/pytorch.py +0 -0
  600. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/backends/pytorch_factory.py +0 -0
  601. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/backends/torch_func.py +0 -0
  602. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/backends/torchax_backend.py +0 -0
  603. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/datasets/__init__.py +0 -0
  604. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/datasets/data_buffer.py +0 -0
  605. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/datasets/dataset_loaders.py +0 -0
  606. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/datasets/sft.py +0 -0
  607. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/distributed_utils.py +0 -0
  608. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/filters.py +0 -0
  609. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/grpo.py +0 -0
  610. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/loops/__init__.py +0 -0
  611. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/loops/rl_loop.py +0 -0
  612. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/loops/sft_loop.py +0 -0
  613. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/losses.py +0 -0
  614. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/metrics.py +0 -0
  615. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/rollout_gen/__init__.py +0 -0
  616. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/rollout_gen/async_rollout_manager.py +0 -0
  617. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/rollout_gen/rollout_generation.py +0 -0
  618. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/rollout_gen/rollout_manager.py +0 -0
  619. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/types.py +0 -0
  620. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/weight_sync.py +0 -0
  621. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/training/worker.py +0 -0
  622. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/transform_messages.py +0 -0
  623. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tui/DESIGN.md +0 -0
  624. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tui/__init__.py +0 -0
  625. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tui/__main__.py +0 -0
  626. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tui/demo.py +0 -0
  627. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tui/monitor.py +0 -0
  628. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tui/remote_runner.py +0 -0
  629. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tui/terminal.py +0 -0
  630. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/tui/traces.py +0 -0
  631. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/rollouts/upload.py +0 -0
  632. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/roofline/__init__.py +0 -0
  633. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/roofline/analysis.py +0 -0
  634. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/roofline/gpu_specs.py +0 -0
  635. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/sandbox/__init__.py +0 -0
  636. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/sandbox/executor.py +0 -0
  637. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/sandbox/landlock.py +0 -0
  638. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/sandbox/policy.py +0 -0
  639. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/sandbox/seatbelt.py +0 -0
  640. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/sessions/__init__.py +0 -0
  641. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/sessions/agent.py +0 -0
  642. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/sessions/dtypes.py +0 -0
  643. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/sessions/hooks.py +0 -0
  644. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/ssh.py +0 -0
  645. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/targets/__init__.py +0 -0
  646. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/targets/digitalocean.py +0 -0
  647. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/targets/pool.py +0 -0
  648. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/targets/probe.py +0 -0
  649. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/targets/providers/__init__.py +0 -0
  650. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/targets/providers/baremetal.py +0 -0
  651. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/targets/providers/digitalocean.py +0 -0
  652. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/targets/providers/runpod.py +0 -0
  653. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/targets/reconcile.py +0 -0
  654. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/targets/runpod.py +0 -0
  655. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/targets/spec_store.py +0 -0
  656. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/targets/state_cache.py +0 -0
  657. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/targets/types.py +0 -0
  658. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/__init__.py +0 -0
  659. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/autotuner/BENCHMARKING.md +0 -0
  660. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/autotuner/__init__.py +0 -0
  661. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/autotuner/aggregation.py +0 -0
  662. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/autotuner/core.py +0 -0
  663. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/autotuner/dtypes.py +0 -0
  664. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/autotuner/metrics.py +0 -0
  665. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/autotuner/scoring.py +0 -0
  666. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/autotuner/search.py +0 -0
  667. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/autotuner/storage.py +0 -0
  668. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/autotuner/streaming.py +0 -0
  669. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/autotuner/tests/__init__.py +0 -0
  670. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/autotuner/tests/test_autotuner.py +0 -0
  671. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/bash_tool.py +0 -0
  672. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/capture_tool/__init__.py +0 -0
  673. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/capture_tool/artifacts.py +0 -0
  674. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/capture_tool/context.py +0 -0
  675. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/capture_tool/core.py +0 -0
  676. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/capture_tool/dtypes.py +0 -0
  677. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/capture_tool/executor.py +0 -0
  678. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/capture_tool/metrics.py +0 -0
  679. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/file_tools/__init__.py +0 -0
  680. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/file_tools/edit_tool.py +0 -0
  681. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/file_tools/glob_tool.py +0 -0
  682. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/file_tools/grep_tool.py +0 -0
  683. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/file_tools/read_tool.py +0 -0
  684. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/file_tools/utils.py +0 -0
  685. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/file_tools/write_tool.py +0 -0
  686. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/glob_tool.py +0 -0
  687. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/grep_tool.py +0 -0
  688. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/isa_analysis_tools/__init__.py +0 -0
  689. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/isa_analysis_tools/isa_analysis_tool.py +0 -0
  690. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/isa_analysis_tools/types.py +0 -0
  691. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/nsys_tools/__init__.py +0 -0
  692. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/nsys_tools/discovery.py +0 -0
  693. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/nsys_tools/models.py +0 -0
  694. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/nsys_tools/parser.py +0 -0
  695. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/rocprof_compute_tools/__init__.py +0 -0
  696. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/rocprof_compute_tools/rocprof_compute_analyze_tool.py +0 -0
  697. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/rocprof_compute_tools/rocprof_compute_profile_tool.py +0 -0
  698. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/rocprof_sdk_tools/__init__.py +0 -0
  699. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/rocprof_sdk_tools/rocprof_sdk_analyze_tool.py +0 -0
  700. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/rocprof_sdk_tools/rocprof_sdk_profile_tool.py +0 -0
  701. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/rocprof_systems_tools/__init__.py +0 -0
  702. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/rocprof_systems_tools/rocprof_systems_instrument_tool.py +0 -0
  703. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/rocprof_systems_tools/rocprof_systems_profile_tool.py +0 -0
  704. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/rocprof_systems_tools/rocprof_systems_query_tool.py +0 -0
  705. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/rocprof_systems_tools/rocprof_systems_sample_tool.py +0 -0
  706. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/skill_tool.py +0 -0
  707. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/tracelens_tools/__init__.py +0 -0
  708. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/tracelens_tools/tracelens_collective_tool.py +0 -0
  709. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/tracelens_tools/tracelens_compare_tool.py +0 -0
  710. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/tracelens_tools/tracelens_report_tool.py +0 -0
  711. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/wafer_tool.py +0 -0
  712. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/tools/write_kernel_tool.py +0 -0
  713. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/__init__.py +0 -0
  714. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/backend.py +0 -0
  715. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/code_validation.py +0 -0
  716. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/environment_serialization.py +0 -0
  717. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/event_streaming.py +0 -0
  718. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/exceptions.py +0 -0
  719. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/execution_types.py +0 -0
  720. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/gpu_environment_utils.py +0 -0
  721. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/__init__.py +0 -0
  722. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/backends.py +0 -0
  723. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/deployment.py +0 -0
  724. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/evaluate.py +0 -0
  725. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/gpu_validation.py +0 -0
  726. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/reference_cache.py +0 -0
  727. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/results.py +0 -0
  728. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/static_checker.py +0 -0
  729. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/targets/__init__.py +0 -0
  730. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/targets/config.py +0 -0
  731. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/targets/execution.py +0 -0
  732. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/targets/selection.py +0 -0
  733. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/task.py +0 -0
  734. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/kernel_utils/utils.py +0 -0
  735. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/modal_execution/__init__.py +0 -0
  736. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/modal_execution/modal_app.py +0 -0
  737. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/modal_execution/modal_config.py +0 -0
  738. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/modal_execution/modal_execution.py +0 -0
  739. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/modal_execution/test_modal.py +0 -0
  740. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/ncu_profile_tools.py +0 -0
  741. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/path_utils.py +0 -0
  742. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/remote_execution.py +0 -0
  743. {wafer_core-0.1.30 → wafer_core-0.1.32}/wafer_core/utils/submission_selection.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wafer-core
3
- Version: 0.1.30
3
+ Version: 0.1.32
4
4
  Summary: Core utilities and environments for Wafer GPU kernel optimization
5
5
  Requires-Python: >=3.10
6
6
  Requires-Dist: aiohttp>=3.9.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "wafer-core"
3
- version = "0.1.30"
3
+ version = "0.1.32"
4
4
  description = "Core utilities and environments for Wafer GPU kernel optimization"
5
5
  requires-python = ">=3.10"
6
6
  dependencies = [
@@ -100,13 +100,16 @@ ignore = [
100
100
  ]
101
101
 
102
102
  [tool.ruff.lint.per-file-ignores]
103
- "tests/**/*.py" = ["ANN201"] # Don't require return type annotations in tests
103
+ "tests/**/*.py" = ["ANN201", "ANN202"] # Don't require return type annotations in tests
104
104
  "wafer_core/utils/modal_execution/*.py" = ["PLR0913"] # Modal RPC functions have many parameters
105
105
  "wafer_core/utils/kernel_utils/targets/execution.py" = ["PLR0915"] # run_operation_on_target has Modal+SSH paths (71 statements)
106
106
  "wafer_core/environments/gpumode.py" = ["ANN401"] # Environment.exec_tool uses Any for rollouts compatibility
107
107
  "wafer_core/rollouts/providers/anthropic.py" = ["PLR0915", "PLR1702", "TRY002", "TRY004"] # Complex provider with streaming, retry logic, and try/finally cleanup
108
108
  "wafer_core/sandbox/*.py" = ["ASYNC109", "ASYNC240"] # Sandbox uses subprocess timeout (not trio.fail_after) intentionally
109
109
  "wafer_core/tools/bash_tool.py" = ["ASYNC109", "ASYNC221"] # Bash tool uses subprocess with timeout
110
+ "wafer_core/utils/kernel_utils/defense.py" = ["ANN002", "ANN003", "ANN202", "PLR0913"] # Defense functions use *args/**kwargs passthrough and have many config params
111
+ "wafer_core/utils/kernel_utils/test_reward_hacks.py" = ["ANN"] # Test fixture file, annotations add noise
112
+ "tests/test_reward_hack_defenses.py" = ["ANN001"] # Parametrized test args don't need annotations
110
113
 
111
114
  [tool.ruff.lint.pylint]
112
115
  max-args = 7 # Max function arguments (Tiger Style: few parameters)
@@ -100,13 +100,16 @@ ignore = [
100
100
  ]
101
101
 
102
102
  [tool.ruff.lint.per-file-ignores]
103
- "tests/**/*.py" = ["ANN201"] # Don't require return type annotations in tests
103
+ "tests/**/*.py" = ["ANN201", "ANN202"] # Don't require return type annotations in tests
104
104
  "wafer_core/utils/modal_execution/*.py" = ["PLR0913"] # Modal RPC functions have many parameters
105
105
  "wafer_core/utils/kernel_utils/targets/execution.py" = ["PLR0915"] # run_operation_on_target has Modal+SSH paths (71 statements)
106
106
  "wafer_core/environments/gpumode.py" = ["ANN401"] # Environment.exec_tool uses Any for rollouts compatibility
107
107
  "wafer_core/rollouts/providers/anthropic.py" = ["PLR0915", "PLR1702", "TRY002", "TRY004"] # Complex provider with streaming, retry logic, and try/finally cleanup
108
108
  "wafer_core/sandbox/*.py" = ["ASYNC109", "ASYNC240"] # Sandbox uses subprocess timeout (not trio.fail_after) intentionally
109
109
  "wafer_core/tools/bash_tool.py" = ["ASYNC109", "ASYNC221"] # Bash tool uses subprocess with timeout
110
+ "wafer_core/utils/kernel_utils/defense.py" = ["ANN002", "ANN003", "ANN202", "PLR0913"] # Defense functions use *args/**kwargs passthrough and have many config params
111
+ "wafer_core/utils/kernel_utils/test_reward_hacks.py" = ["ANN"] # Test fixture file, annotations add noise
112
+ "tests/test_reward_hack_defenses.py" = ["ANN001"] # Parametrized test args don't need annotations
110
113
 
111
114
  [tool.ruff.lint.pylint]
112
115
  max-args = 7 # Max function arguments (Tiger Style: few parameters)
@@ -0,0 +1,185 @@
1
+ """
2
+ Integration tests for reward hack defenses.
3
+
4
+ Tests the two cut points:
5
+ 1. validate_kernel_static() - catches hacks in source code
6
+ 2. run_all_defenses_extended() - catches hacks at runtime
7
+
8
+ Each test runs a known attack through the full defense pipeline.
9
+ Requires torch + CUDA — skipped entirely in CI environments without GPU.
10
+ """
11
+
12
+ import pytest
13
+
14
+ torch = pytest.importorskip("torch", reason="torch required for reward hack defense tests")
15
+
16
+ from wafer_core.utils.kernel_utils.defense import ( # noqa: E402
17
+ run_all_defenses,
18
+ run_all_defenses_extended,
19
+ )
20
+ from wafer_core.utils.kernel_utils.static_checker import validate_kernel_static # noqa: E402
21
+ from wafer_core.utils.kernel_utils.test_reward_hacks import ( # noqa: E402
22
+ STATIC_HACK_SAMPLES,
23
+ caching,
24
+ clear_cache,
25
+ hardcoded_256,
26
+ identity_kernel,
27
+ lazy_evaluation,
28
+ legit_matmul,
29
+ precision_downgrade,
30
+ thread_injection,
31
+ )
32
+
33
+ requires_cuda = pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA not available")
34
+
35
+
36
+ # =============================================================================
37
+ # Cut point 1: validate_kernel_static catches code-level hacks
38
+ # =============================================================================
39
+
40
+
41
+ @pytest.mark.parametrize(
42
+ "name,code,expected_checks",
43
+ [(name, code, checks) for name, (code, checks) in STATIC_HACK_SAMPLES.items()],
44
+ ids=list(STATIC_HACK_SAMPLES.keys()),
45
+ )
46
+ def test_static_checker_catches_hack(name, code, expected_checks):
47
+ """Each hack code sample should fail validate_kernel_static."""
48
+ valid, errors, warnings = validate_kernel_static(code)
49
+ # At least one of the expected checks should have fired
50
+ assert not valid or len(warnings) > 0, (
51
+ f"Static checker missed {name}: expected checks {expected_checks} to fire, "
52
+ f"got errors={errors}, warnings={warnings}"
53
+ )
54
+
55
+
56
+ def test_static_checker_passes_clean_code():
57
+ """Non-hack code should pass static checks."""
58
+ clean = "@triton.jit\ndef kernel(ptr, BLOCK: tl.constexpr):\n tl.store(ptr, tl.load(ptr))\n"
59
+ valid, errors, warnings = validate_kernel_static(clean, backend="triton")
60
+ assert valid, f"Clean code should pass: errors={errors}"
61
+
62
+
63
+ # =============================================================================
64
+ # Cut point 2: run_all_defenses / run_all_defenses_extended
65
+ # =============================================================================
66
+
67
+
68
+ @requires_cuda
69
+ @pytest.mark.parametrize(
70
+ "name,attack_fn",
71
+ [
72
+ ("thread_injection", thread_injection),
73
+ ("lazy_evaluation", lazy_evaluation),
74
+ ("precision_downgrade", precision_downgrade),
75
+ ],
76
+ )
77
+ def test_runtime_defense_catches_timing_attack(name, attack_fn):
78
+ """Timing attacks are caught by run_all_defenses."""
79
+ A = torch.randn(256, 256, device="cuda")
80
+ B = torch.randn(256, 256, device="cuda")
81
+ torch.cuda.synchronize()
82
+
83
+ all_passed, results, _ = run_all_defenses(legit_matmul, A, B)
84
+ # Sanity: legit passes
85
+ assert all_passed
86
+
87
+ all_passed, results, _ = run_all_defenses(attack_fn, A, B)
88
+ assert not all_passed, f"{name} should be caught"
89
+
90
+
91
+ @requires_cuda
92
+ def test_monkey_patch_detected():
93
+ """Monkey-patching of timing functions is caught."""
94
+ original = torch.cuda.Event.elapsed_time
95
+ try:
96
+ torch.cuda.Event.elapsed_time = lambda self, end: 0.001
97
+ A = torch.randn(256, 256, device="cuda")
98
+ B = torch.randn(256, 256, device="cuda")
99
+ all_passed, results, _ = run_all_defenses(legit_matmul, A, B)
100
+ assert not all_passed
101
+ finally:
102
+ torch.cuda.Event.elapsed_time = original
103
+
104
+
105
+ @requires_cuda
106
+ def test_caching_attack_caught():
107
+ """Caching/memoization is caught by multi-input validation."""
108
+ clear_cache()
109
+
110
+ def input_gen():
111
+ return (
112
+ torch.randn(256, 256, device="cuda"),
113
+ torch.randn(256, 256, device="cuda"),
114
+ )
115
+
116
+ A, B = input_gen()
117
+ all_passed, results, _ = run_all_defenses_extended(
118
+ caching,
119
+ A,
120
+ B,
121
+ reference_fn=torch.matmul,
122
+ input_generator=input_gen,
123
+ )
124
+ assert not all_passed, "Caching attack should be caught"
125
+
126
+
127
+ @requires_cuda
128
+ def test_hardcoded_shapes_caught():
129
+ """Hardcoded optimization is caught by multi-shape validation."""
130
+ A = torch.randn(256, 256, device="cuda")
131
+ B = torch.randn(256, 256, device="cuda")
132
+
133
+ all_passed, results, _ = run_all_defenses_extended(
134
+ hardcoded_256,
135
+ A,
136
+ B,
137
+ reference_fn=torch.matmul,
138
+ test_shapes=[(128, 128), (256, 256), (512, 512)],
139
+ )
140
+ assert not all_passed, "Hardcoded shapes attack should be caught"
141
+
142
+
143
+ @requires_cuda
144
+ def test_identity_kernel_caught():
145
+ """Identity kernel is caught when reference produces different output."""
146
+ x = torch.randn(256, 256, device="cuda")
147
+
148
+ all_passed, results, _ = run_all_defenses_extended(
149
+ identity_kernel,
150
+ x,
151
+ reference_fn=torch.relu,
152
+ )
153
+ assert not all_passed, "Identity kernel should be caught"
154
+
155
+
156
+ @requires_cuda
157
+ def test_extended_pipeline_legit_with_all_defenses():
158
+ """Legit kernel passes full extended pipeline with all defense flags enabled.
159
+
160
+ This is the actual code path used by `wafer evaluate kernelbench`.
161
+ Exercises: base timing defenses, caching, shape, identity, GEMM exact
162
+ correctness, ULP precision, and memory guards — all through the single
163
+ run_all_defenses_extended() entry point.
164
+ """
165
+
166
+ def input_gen():
167
+ return (
168
+ torch.randn(256, 256, device="cuda"),
169
+ torch.randn(256, 256, device="cuda"),
170
+ )
171
+
172
+ A, B = input_gen()
173
+ all_passed, results, _ = run_all_defenses_extended(
174
+ legit_matmul,
175
+ A,
176
+ B,
177
+ reference_fn=torch.matmul,
178
+ input_generator=input_gen,
179
+ test_shapes=[(128, 128), (256, 256)],
180
+ is_gemm=True,
181
+ gemm_dims=(128, 128, 128),
182
+ check_precision_ulp=True,
183
+ )
184
+ failed = [(name, msg) for name, passed, msg in results if not passed]
185
+ assert all_passed, f"Legit kernel failed full extended pipeline: {failed}"
@@ -34,6 +34,18 @@ NVIDIA_LLAMA_TRACE = TRACE_EXAMPLES_DIR / "nvidia_llama.json"
34
34
  GOLDEN_FILE = Path(__file__).parent / "expected_output_amd_llama.json"
35
35
 
36
36
 
37
+ def _path_exists_safe(path: Path) -> bool:
38
+ """Check if path exists, returning False on permission errors.
39
+
40
+ CI runners may not have permission to stat /root/... paths,
41
+ so we treat PermissionError the same as file not existing.
42
+ """
43
+ try:
44
+ return path.exists()
45
+ except PermissionError:
46
+ return False
47
+
48
+
37
49
  def load_golden_file() -> dict[str, Any]:
38
50
  """Load expected output from golden file."""
39
51
  if not GOLDEN_FILE.exists():
@@ -50,7 +62,7 @@ def load_golden_file() -> dict[str, Any]:
50
62
  @pytest.fixture(scope="session")
51
63
  def amd_trace_result():
52
64
  """Load AMD trace once per test session (~17s)."""
53
- if not AMD_LLAMA_TRACE.exists():
65
+ if not _path_exists_safe(AMD_LLAMA_TRACE):
54
66
  pytest.skip(f"Trace file not found: {AMD_LLAMA_TRACE}")
55
67
  return load_trace(AMD_LLAMA_TRACE, include_stacks=True)
56
68
 
@@ -58,7 +70,7 @@ def amd_trace_result():
58
70
  @pytest.fixture(scope="session")
59
71
  def amd_trace_streaming_result():
60
72
  """Load AMD trace with streaming loader once per test session."""
61
- if not AMD_LLAMA_TRACE.exists():
73
+ if not _path_exists_safe(AMD_LLAMA_TRACE):
62
74
  pytest.skip(f"Trace file not found: {AMD_LLAMA_TRACE}")
63
75
  return load_trace_streaming(AMD_LLAMA_TRACE, include_stacks=True)
64
76
 
@@ -66,7 +78,7 @@ def amd_trace_streaming_result():
66
78
  @pytest.fixture(scope="session")
67
79
  def analyze_result():
68
80
  """Run analyze_traces once per test session (~35s)."""
69
- if not AMD_LLAMA_TRACE.exists() or not NVIDIA_LLAMA_TRACE.exists():
81
+ if not _path_exists_safe(AMD_LLAMA_TRACE) or not _path_exists_safe(NVIDIA_LLAMA_TRACE):
70
82
  pytest.skip("Trace files not found")
71
83
  return analyze_traces(
72
84
  AMD_LLAMA_TRACE,
@@ -165,7 +177,7 @@ def test_streaming_loader_matches_regular_loader(amd_trace_result, amd_trace_str
165
177
 
166
178
  def test_metadata_extraction_matches_full_load(amd_trace_result) -> None:
167
179
  """Test that fast metadata extraction matches full load metadata."""
168
- if not AMD_LLAMA_TRACE.exists():
180
+ if not _path_exists_safe(AMD_LLAMA_TRACE):
169
181
  pytest.skip(f"Trace file not found: {AMD_LLAMA_TRACE}")
170
182
 
171
183
  # Extract metadata fast (~2ms)
@@ -186,7 +198,7 @@ def test_metadata_extraction_matches_full_load(amd_trace_result) -> None:
186
198
 
187
199
  def test_streaming_metadata_callback_fires() -> None:
188
200
  """Test that streaming loader fires metadata callback (fast, no full load)."""
189
- if not AMD_LLAMA_TRACE.exists():
201
+ if not _path_exists_safe(AMD_LLAMA_TRACE):
190
202
  pytest.skip(f"Trace file not found: {AMD_LLAMA_TRACE}")
191
203
 
192
204
  # Only test the metadata callback - don't do full load
@@ -329,7 +341,7 @@ def test_architecture_detection_unknown() -> None:
329
341
 
330
342
  def test_analyze_trace_pair_metadata_callback() -> None:
331
343
  """Test that metadata extraction works for both traces (fast, no full analysis)."""
332
- if not AMD_LLAMA_TRACE.exists() or not NVIDIA_LLAMA_TRACE.exists():
344
+ if not _path_exists_safe(AMD_LLAMA_TRACE) or not _path_exists_safe(NVIDIA_LLAMA_TRACE):
333
345
  pytest.skip("Trace files not found")
334
346
 
335
347
  # Just test metadata extraction - much faster than full analysis
@@ -415,7 +427,7 @@ def test_loaded_trace_contains_all_data() -> None:
415
427
  """Test that LoadedTrace contains all required fields."""
416
428
  from wafer_core.lib.trace_compare.loader import load_trace_full, LoadedTrace
417
429
 
418
- if not AMD_LLAMA_TRACE.exists():
430
+ if not _path_exists_safe(AMD_LLAMA_TRACE):
419
431
  pytest.skip(f"Trace file not found: {AMD_LLAMA_TRACE}")
420
432
 
421
433
  loaded = load_trace_full(AMD_LLAMA_TRACE, include_stacks=True)
@@ -441,7 +453,7 @@ def test_analyze_from_loaded_matches_path_api() -> None:
441
453
  from wafer_core.lib.trace_compare.loader import load_trace_full
442
454
  from wafer_core.lib.trace_compare.analyzer import analyze_traces_from_loaded
443
455
 
444
- if not AMD_LLAMA_TRACE.exists() or not NVIDIA_LLAMA_TRACE.exists():
456
+ if not _path_exists_safe(AMD_LLAMA_TRACE) or not _path_exists_safe(NVIDIA_LLAMA_TRACE):
445
457
  pytest.skip("Trace files not found")
446
458
 
447
459
  # Load traces once
@@ -472,7 +484,7 @@ def test_analyze_trace_pair_timing() -> None:
472
484
  """Test that analyze_trace_pair completes in reasonable time (<25s)."""
473
485
  import time
474
486
 
475
- if not AMD_LLAMA_TRACE.exists() or not NVIDIA_LLAMA_TRACE.exists():
487
+ if not _path_exists_safe(AMD_LLAMA_TRACE) or not _path_exists_safe(NVIDIA_LLAMA_TRACE):
476
488
  pytest.skip("Trace files not found")
477
489
 
478
490
  start = time.perf_counter()
@@ -0,0 +1,73 @@
1
+ """Kernel trace tool for discovering SOTA kernels.
2
+
3
+ Given a PyTorch operation, traces what kernel PyTorch dispatches to on target hardware.
4
+
5
+ Usage:
6
+ from wafer_core.tools.dispatch_baseline import quick_trace
7
+
8
+ result = quick_trace(
9
+ "torch.matmul(A, B)",
10
+ {"A": (4096, 4096), "B": (4096, 4096)},
11
+ hardware="H100",
12
+ )
13
+ print(result.summary())
14
+ """
15
+
16
+ from wafer_core.tools.dispatch_baseline.client import (
17
+ lookup_baseline,
18
+ store_baseline,
19
+ )
20
+ from wafer_core.tools.dispatch_baseline.codegen import (
21
+ generate_trace_script,
22
+ parse_op_string,
23
+ update_dtypes,
24
+ update_shapes,
25
+ )
26
+ from wafer_core.tools.dispatch_baseline.dtypes import (
27
+ HardwareSpec,
28
+ KernelInfo,
29
+ KernelTraceConfig,
30
+ KernelTraceResult,
31
+ OpSpec,
32
+ RooflineAnalysis,
33
+ TensorSpec,
34
+ )
35
+ from wafer_core.tools.dispatch_baseline.executor import (
36
+ TraceExecutionResult,
37
+ quick_trace,
38
+ trace_kernel_local,
39
+ trace_kernel_remote,
40
+ )
41
+ from wafer_core.tools.dispatch_baseline.roofline import (
42
+ HARDWARE_SPECS,
43
+ compute_roofline,
44
+ get_hardware_spec,
45
+ )
46
+
47
+ __all__ = [
48
+ # Data types
49
+ "HardwareSpec",
50
+ "KernelInfo",
51
+ "KernelTraceConfig",
52
+ "KernelTraceResult",
53
+ "OpSpec",
54
+ "RooflineAnalysis",
55
+ "TensorSpec",
56
+ "TraceExecutionResult",
57
+ # Codegen
58
+ "generate_trace_script",
59
+ "parse_op_string",
60
+ "update_dtypes",
61
+ "update_shapes",
62
+ # Execution
63
+ "quick_trace",
64
+ "trace_kernel_local",
65
+ "trace_kernel_remote",
66
+ # Database
67
+ "lookup_baseline",
68
+ "store_baseline",
69
+ # Roofline
70
+ "HARDWARE_SPECS",
71
+ "compute_roofline",
72
+ "get_hardware_spec",
73
+ ]
@@ -0,0 +1,174 @@
1
+ """Analyzer for kernel trace output.
2
+
3
+ Parses profiler output to extract kernel information and identify the primary kernel.
4
+ """
5
+
6
+ import json
7
+ import re
8
+ from dataclasses import dataclass
9
+ from typing import Any
10
+
11
+ from wafer_core.tools.dispatch_baseline.dtypes import KernelInfo, KernelTraceResult, OpSpec
12
+
13
+
14
+ @dataclass(frozen=True)
15
+ class ParsedTraceResult:
16
+ """Parsed trace output with environment info for caching."""
17
+
18
+ result: KernelTraceResult
19
+ pytorch_version: str
20
+ runtime_version: str
21
+ gpu_arch: str
22
+
23
+
24
+ def parse_trace_output(output: str, op_spec: OpSpec, hardware: str) -> ParsedTraceResult:
25
+ """Parse kernel trace script output and extract kernel information.
26
+
27
+ Args:
28
+ output: Raw output from the trace script (stdout)
29
+ op_spec: The operation that was traced
30
+ hardware: Target hardware name
31
+
32
+ Returns:
33
+ ParsedTraceResult with extracted kernel information and environment info
34
+ """
35
+ # Look for our JSON marker in the output
36
+ json_match = re.search(r"KERNEL_TRACE_RESULT_JSON:(.+)$", output, re.MULTILINE)
37
+
38
+ if not json_match:
39
+ return ParsedTraceResult(
40
+ result=KernelTraceResult(
41
+ op_spec=op_spec,
42
+ hardware=hardware,
43
+ kernels=[],
44
+ primary_kernel=None,
45
+ raw_output=output,
46
+ error="Could not find KERNEL_TRACE_RESULT_JSON marker in output",
47
+ ),
48
+ pytorch_version="unknown",
49
+ runtime_version="unknown",
50
+ gpu_arch="unknown",
51
+ )
52
+
53
+ try:
54
+ result_json = json.loads(json_match.group(1))
55
+ except json.JSONDecodeError as e:
56
+ return ParsedTraceResult(
57
+ result=KernelTraceResult(
58
+ op_spec=op_spec,
59
+ hardware=hardware,
60
+ kernels=[],
61
+ primary_kernel=None,
62
+ raw_output=output,
63
+ error=f"Failed to parse JSON: {e}",
64
+ ),
65
+ pytorch_version="unknown",
66
+ runtime_version="unknown",
67
+ gpu_arch="unknown",
68
+ )
69
+
70
+ # Extract environment info
71
+ env_info = result_json.get("environment", {})
72
+ pytorch_version = env_info.get("pytorch_version", "unknown")
73
+ runtime_version = env_info.get("runtime_version", "unknown")
74
+ gpu_arch = env_info.get("gpu_arch", "unknown")
75
+
76
+ # Extract kernels from JSON
77
+ kernels = []
78
+ for k in result_json.get("kernels", []):
79
+ kernel_info = _parse_kernel_dict(k)
80
+ if kernel_info:
81
+ kernels.append(kernel_info)
82
+
83
+ # Identify primary kernel (longest duration)
84
+ primary_kernel = kernels[0] if kernels else None
85
+
86
+ return ParsedTraceResult(
87
+ result=KernelTraceResult(
88
+ op_spec=op_spec,
89
+ hardware=hardware,
90
+ kernels=kernels,
91
+ primary_kernel=primary_kernel,
92
+ raw_output=output,
93
+ ),
94
+ pytorch_version=pytorch_version,
95
+ runtime_version=runtime_version,
96
+ gpu_arch=gpu_arch,
97
+ )
98
+
99
+
100
+ def _parse_kernel_dict(kernel_dict: dict[str, Any]) -> KernelInfo | None:
101
+ """Parse a kernel dictionary into KernelInfo."""
102
+ name = kernel_dict.get("name", "")
103
+ if not name:
104
+ return None
105
+
106
+ return KernelInfo(
107
+ name=name,
108
+ duration_us=kernel_dict.get("duration_us", 0.0),
109
+ )
110
+
111
+
112
+ def extract_kernels_from_nsys(nsys_output: str) -> list[dict[str, Any]]:
113
+ """Extract kernel information from nsys output.
114
+
115
+ This is a fallback for when torch.profiler doesn't capture all kernels.
116
+
117
+ Args:
118
+ nsys_output: Output from `nsys stats` or similar
119
+
120
+ Returns:
121
+ List of kernel dictionaries
122
+ """
123
+ kernels = []
124
+
125
+ # Look for GPU kernel summary lines
126
+ # Format varies, but typically: name, duration, count, etc.
127
+ lines = nsys_output.split("\n")
128
+
129
+ for line in lines:
130
+ # Skip headers and empty lines
131
+ if not line.strip() or "---" in line or "Name" in line:
132
+ continue
133
+
134
+ # Try to parse as nsys kernel line
135
+ # This is a simplified parser - real nsys output varies
136
+ parts = line.split()
137
+ if len(parts) >= 2:
138
+ # Heuristic: last column is often the kernel name
139
+ name = parts[-1]
140
+ if any(c.isalpha() for c in name) and "_" in name:
141
+ kernels.append({"name": name, "duration_us": 0.0})
142
+
143
+ return kernels
144
+
145
+
146
+ def merge_kernel_infos(
147
+ profiler_kernels: list[KernelInfo], nsys_kernels: list[dict[str, Any]]
148
+ ) -> list[KernelInfo]:
149
+ """Merge kernel info from multiple sources.
150
+
151
+ Prefers profiler data when available, but adds any missing kernels from nsys.
152
+
153
+ Args:
154
+ profiler_kernels: Kernels from torch.profiler
155
+ nsys_kernels: Kernels from nsys
156
+
157
+ Returns:
158
+ Merged list of KernelInfo objects
159
+ """
160
+ seen_names = {k.name for k in profiler_kernels}
161
+ result = list(profiler_kernels)
162
+
163
+ for nsys_kernel in nsys_kernels:
164
+ name = nsys_kernel.get("name", "")
165
+ if name and name not in seen_names:
166
+ result.append(
167
+ KernelInfo(
168
+ name=name,
169
+ duration_us=nsys_kernel.get("duration_us", 0.0),
170
+ )
171
+ )
172
+ seen_names.add(name)
173
+
174
+ return result