kumi 0.0.37 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (543) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +39 -58
  3. data/.rubocop_todo.yml +931 -0
  4. data/CHANGELOG.md +37 -0
  5. data/README.md +3 -0
  6. data/data/functions/core/arithmetic.yaml +48 -0
  7. data/data/functions/core/conversion.yaml +13 -0
  8. data/data/functions/core/select.yaml +1 -1
  9. data/data/functions/core/stencil.yaml +32 -0
  10. data/data/kernels/javascript/agg/numeric.yaml +1 -0
  11. data/data/kernels/javascript/core/arithmetic.yaml +24 -0
  12. data/data/kernels/javascript/core/coercion.yaml +18 -4
  13. data/data/kernels/ruby/agg/numeric.yaml +2 -1
  14. data/data/kernels/ruby/core/arithmetic.yaml +31 -3
  15. data/data/kernels/ruby/core/coercion.yaml +8 -0
  16. data/docs/CROSS_TARGET_SEMANTICS.md +99 -0
  17. data/docs/FORM_SCHEMA.md +13 -8
  18. data/docs/FUNCTIONS.md +120 -13
  19. data/docs/INPUTS.md +164 -0
  20. data/docs/OUTPUT_SCHEMA.md +12 -8
  21. data/docs/PASSES.md +76 -0
  22. data/docs/PASS_AUDIT.md +179 -0
  23. data/docs/PORTAL.md +39 -0
  24. data/docs/SYNTAX.md +84 -121
  25. data/docs/SYNTAX_NOTES.md +612 -0
  26. data/docs/UNSAT_DETECTION.md +2 -2
  27. data/docs/functions-reference.json +276 -84
  28. data/docs/pairwise-design.md +125 -0
  29. data/docs/superpowers/plans/2026-06-12-pass-conventions-and-dedup.md +1559 -0
  30. data/docs/superpowers/specs/2026-06-12-pass-conventions-and-dedup-design.md +136 -0
  31. data/golden/algebraic_identities/expected/ast.txt +66 -0
  32. data/golden/algebraic_identities/expected/dfir.txt +47 -0
  33. data/golden/algebraic_identities/expected/dfir_optimized.txt +59 -0
  34. data/golden/algebraic_identities/expected/input_plan.txt +7 -0
  35. data/golden/algebraic_identities/expected/loopir.txt +61 -0
  36. data/golden/algebraic_identities/expected/nast.txt +51 -0
  37. data/golden/algebraic_identities/expected/runtime.json +24 -0
  38. data/golden/algebraic_identities/expected/schema_javascript.mjs +89 -0
  39. data/golden/algebraic_identities/expected/schema_ruby.rb +84 -0
  40. data/golden/algebraic_identities/expected/snast.txt +51 -0
  41. data/golden/algebraic_identities/expected/vecir.txt +47 -0
  42. data/golden/algebraic_identities/input.json +6 -0
  43. data/golden/algebraic_identities/schema.kumi +25 -0
  44. data/golden/array_element/expected/loopir.txt +1 -2
  45. data/golden/array_element/expected/runtime.json +5 -0
  46. data/golden/array_element/expected/schema_javascript.mjs +1 -2
  47. data/golden/array_element/expected/schema_ruby.rb +2 -3
  48. data/golden/array_index/expected/runtime.json +54 -0
  49. data/golden/array_index/expected/schema_ruby.rb +1 -1
  50. data/golden/array_operations/{expected.json → expected/runtime.json} +5 -15
  51. data/golden/array_operations/expected/schema_ruby.rb +1 -1
  52. data/golden/cascade_logic/expected/runtime.json +3 -0
  53. data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
  54. data/golden/cascade_reuse_peephole/expected/ast.txt +193 -0
  55. data/golden/cascade_reuse_peephole/expected/dfir.txt +124 -0
  56. data/golden/cascade_reuse_peephole/expected/dfir_optimized.txt +320 -0
  57. data/golden/cascade_reuse_peephole/expected/input_plan.txt +2 -0
  58. data/golden/cascade_reuse_peephole/expected/loopir.txt +302 -0
  59. data/golden/cascade_reuse_peephole/expected/nast.txt +188 -0
  60. data/golden/cascade_reuse_peephole/expected/runtime.json +8 -0
  61. data/golden/cascade_reuse_peephole/expected/schema_javascript.mjs +335 -0
  62. data/golden/cascade_reuse_peephole/expected/schema_ruby.rb +337 -0
  63. data/golden/cascade_reuse_peephole/expected/snast.txt +188 -0
  64. data/golden/cascade_reuse_peephole/expected/vecir.txt +302 -0
  65. data/golden/cascade_reuse_peephole/input.json +4 -0
  66. data/golden/cascade_reuse_peephole/schema.kumi +31 -0
  67. data/golden/chained_fusion/expected/loopir.txt +5 -13
  68. data/golden/chained_fusion/expected/runtime.json +45 -0
  69. data/golden/chained_fusion/expected/schema_javascript.mjs +5 -13
  70. data/golden/chained_fusion/expected/schema_ruby.rb +6 -14
  71. data/golden/cross_import/expected/ast.txt +21 -0
  72. data/golden/cross_import/expected/dfir.txt +3 -0
  73. data/golden/cross_import/expected/dfir_optimized.txt +8 -0
  74. data/golden/cross_import/expected/input_plan.txt +5 -0
  75. data/golden/cross_import/expected/loopir.txt +14 -0
  76. data/golden/cross_import/expected/nast.txt +7 -0
  77. data/golden/cross_import/expected/runtime.json +10 -0
  78. data/golden/cross_import/expected/schema_javascript.mjs +19 -0
  79. data/golden/cross_import/expected/schema_ruby.rb +19 -0
  80. data/golden/cross_import/expected/snast.txt +7 -0
  81. data/golden/cross_import/expected/vecir.txt +8 -0
  82. data/golden/cross_import/input.json +1 -0
  83. data/golden/cross_import/schema.kumi +15 -0
  84. data/golden/cross_let/expected/ast.txt +62 -0
  85. data/golden/cross_let/expected/dfir.txt +35 -0
  86. data/golden/cross_let/expected/dfir_optimized.txt +51 -0
  87. data/golden/cross_let/expected/input_plan.txt +5 -0
  88. data/golden/cross_let/expected/loopir.txt +100 -0
  89. data/golden/cross_let/expected/nast.txt +46 -0
  90. data/golden/cross_let/expected/runtime.json +61 -0
  91. data/golden/cross_let/expected/schema_javascript.mjs +136 -0
  92. data/golden/cross_let/expected/schema_ruby.rb +123 -0
  93. data/golden/cross_let/expected/snast.txt +46 -0
  94. data/golden/cross_let/expected/vecir.txt +51 -0
  95. data/golden/cross_let/input.json +7 -0
  96. data/golden/cross_let/schema.kumi +25 -0
  97. data/golden/decimal_explicit/expected/dfir.txt +6 -6
  98. data/golden/decimal_explicit/expected/dfir_optimized.txt +6 -6
  99. data/golden/decimal_explicit/expected/loopir.txt +6 -6
  100. data/golden/decimal_explicit/expected/runtime.json +10 -0
  101. data/golden/decimal_explicit/expected/schema_ruby.rb +1 -1
  102. data/golden/decimal_explicit/expected/snast.txt +9 -9
  103. data/golden/decimal_explicit/expected/vecir.txt +6 -6
  104. data/golden/element_arrays/expected/loopir.txt +6 -13
  105. data/golden/element_arrays/expected/runtime.json +117 -0
  106. data/golden/element_arrays/expected/schema_javascript.mjs +7 -14
  107. data/golden/element_arrays/expected/schema_ruby.rb +8 -15
  108. data/golden/empty_and_null_inputs/expected/loopir.txt +4 -9
  109. data/golden/empty_and_null_inputs/expected/runtime.json +8 -0
  110. data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +5 -10
  111. data/golden/empty_and_null_inputs/expected/schema_ruby.rb +6 -11
  112. data/golden/example_xpto/expected/runtime.json +4 -0
  113. data/golden/example_xpto/expected/schema_ruby.rb +1 -1
  114. data/golden/function_overload/expected/runtime.json +8 -0
  115. data/golden/function_overload/expected/schema_ruby.rb +1 -1
  116. data/golden/game_of_life/expected/loopir.txt +1 -58
  117. data/golden/game_of_life/expected/runtime.json +418 -0
  118. data/golden/game_of_life/expected/schema_javascript.mjs +1 -58
  119. data/golden/game_of_life/expected/schema_ruby.rb +2 -59
  120. data/golden/hash_keys/expected/runtime.json +20 -0
  121. data/golden/hash_keys/expected/schema_ruby.rb +1 -1
  122. data/golden/hash_value/expected/runtime.json +19 -0
  123. data/golden/hash_value/expected/schema_ruby.rb +1 -1
  124. data/golden/hierarchical_complex/expected/loopir.txt +0 -4
  125. data/golden/hierarchical_complex/expected/runtime.json +16 -0
  126. data/golden/hierarchical_complex/expected/schema_javascript.mjs +0 -4
  127. data/golden/hierarchical_complex/expected/schema_ruby.rb +1 -5
  128. data/golden/inline_rename_scope_leak/expected/loopir.txt +1 -5
  129. data/golden/inline_rename_scope_leak/expected/runtime.json +10 -0
  130. data/golden/inline_rename_scope_leak/expected/schema_javascript.mjs +3 -7
  131. data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +4 -8
  132. data/golden/input_reference/expected/dfir.txt +2 -2
  133. data/golden/input_reference/expected/dfir_optimized.txt +2 -2
  134. data/golden/input_reference/expected/loopir.txt +2 -5
  135. data/golden/input_reference/expected/runtime.json +15 -0
  136. data/golden/input_reference/expected/schema_javascript.mjs +3 -6
  137. data/golden/input_reference/expected/schema_ruby.rb +4 -7
  138. data/golden/input_reference/expected/snast.txt +1 -1
  139. data/golden/input_reference/expected/vecir.txt +2 -2
  140. data/golden/interleaved_fusion/expected/loopir.txt +5 -10
  141. data/golden/interleaved_fusion/expected/runtime.json +37 -0
  142. data/golden/interleaved_fusion/expected/schema_javascript.mjs +5 -10
  143. data/golden/interleaved_fusion/expected/schema_ruby.rb +6 -11
  144. data/golden/let_inline/expected/runtime.json +6 -0
  145. data/golden/let_inline/expected/schema_ruby.rb +2 -2
  146. data/golden/loop_fusion/expected/loopir.txt +3 -7
  147. data/golden/loop_fusion/expected/runtime.json +29 -0
  148. data/golden/loop_fusion/expected/schema_javascript.mjs +3 -7
  149. data/golden/loop_fusion/expected/schema_ruby.rb +4 -8
  150. data/golden/min_max_empty_arrays/expected/loopir.txt +5 -12
  151. data/golden/min_max_empty_arrays/expected/runtime.json +16 -0
  152. data/golden/min_max_empty_arrays/expected/schema_javascript.mjs +7 -14
  153. data/golden/min_max_empty_arrays/expected/schema_ruby.rb +10 -17
  154. data/golden/min_reduce_scope/expected/loopir.txt +3 -7
  155. data/golden/min_reduce_scope/expected/runtime.json +11 -0
  156. data/golden/min_reduce_scope/expected/schema_javascript.mjs +4 -8
  157. data/golden/min_reduce_scope/expected/schema_ruby.rb +5 -9
  158. data/golden/mixed_dimensions/expected/loopir.txt +2 -5
  159. data/golden/mixed_dimensions/expected/runtime.json +34 -0
  160. data/golden/mixed_dimensions/expected/schema_javascript.mjs +3 -6
  161. data/golden/mixed_dimensions/expected/schema_ruby.rb +4 -7
  162. data/golden/mlp_backprop/expected/ast.txt +147 -0
  163. data/golden/mlp_backprop/expected/dfir.txt +99 -0
  164. data/golden/mlp_backprop/expected/dfir_optimized.txt +374 -0
  165. data/golden/mlp_backprop/expected/input_plan.txt +17 -0
  166. data/golden/mlp_backprop/expected/loopir.txt +440 -0
  167. data/golden/mlp_backprop/expected/nast.txt +120 -0
  168. data/golden/mlp_backprop/expected/runtime.json +43 -0
  169. data/golden/mlp_backprop/expected/schema_javascript.mjs +516 -0
  170. data/golden/mlp_backprop/expected/schema_ruby.rb +484 -0
  171. data/golden/mlp_backprop/expected/snast.txt +120 -0
  172. data/golden/mlp_backprop/expected/vecir.txt +374 -0
  173. data/golden/mlp_backprop/input.json +8 -0
  174. data/golden/mlp_backprop/schema.kumi +43 -0
  175. data/golden/multi_loop_reduction/expected/loopir.txt +2 -6
  176. data/golden/multi_loop_reduction/expected/runtime.json +5 -0
  177. data/golden/multi_loop_reduction/expected/schema_javascript.mjs +4 -8
  178. data/golden/multi_loop_reduction/expected/schema_ruby.rb +5 -9
  179. data/golden/multirank_hoisting/expected/loopir.txt +24 -42
  180. data/golden/multirank_hoisting/expected/runtime.json +47 -0
  181. data/golden/multirank_hoisting/expected/schema_javascript.mjs +24 -45
  182. data/golden/multirank_hoisting/expected/schema_ruby.rb +25 -43
  183. data/golden/nested_hash/expected/runtime.json +3 -0
  184. data/golden/nested_hash/expected/schema_ruby.rb +1 -1
  185. data/golden/outer_let/expected/ast.txt +106 -0
  186. data/golden/outer_let/expected/dfir.txt +66 -0
  187. data/golden/outer_let/expected/dfir_optimized.txt +145 -0
  188. data/golden/outer_let/expected/input_plan.txt +19 -0
  189. data/golden/outer_let/expected/loopir.txt +166 -0
  190. data/golden/outer_let/expected/nast.txt +78 -0
  191. data/golden/outer_let/expected/runtime.json +89 -0
  192. data/golden/outer_let/expected/schema_javascript.mjs +220 -0
  193. data/golden/outer_let/expected/schema_ruby.rb +201 -0
  194. data/golden/outer_let/expected/snast.txt +78 -0
  195. data/golden/outer_let/expected/vecir.txt +145 -0
  196. data/golden/outer_let/input.json +9 -0
  197. data/golden/outer_let/schema.kumi +32 -0
  198. data/golden/pairwise_cross/expected/ast.txt +62 -0
  199. data/golden/pairwise_cross/expected/dfir.txt +36 -0
  200. data/golden/pairwise_cross/expected/dfir_optimized.txt +50 -0
  201. data/golden/pairwise_cross/expected/input_plan.txt +8 -0
  202. data/golden/pairwise_cross/expected/loopir.txt +84 -0
  203. data/golden/pairwise_cross/expected/nast.txt +46 -0
  204. data/golden/pairwise_cross/expected/runtime.json +80 -0
  205. data/golden/pairwise_cross/expected/schema_javascript.mjs +113 -0
  206. data/golden/pairwise_cross/expected/schema_ruby.rb +104 -0
  207. data/golden/pairwise_cross/expected/snast.txt +46 -0
  208. data/golden/pairwise_cross/expected/vecir.txt +50 -0
  209. data/golden/pairwise_cross/input.json +8 -0
  210. data/golden/pairwise_cross/schema.kumi +18 -0
  211. data/golden/reduction_broadcast/expected/loopir.txt +4 -10
  212. data/golden/reduction_broadcast/expected/runtime.json +14 -0
  213. data/golden/reduction_broadcast/expected/schema_javascript.mjs +4 -10
  214. data/golden/reduction_broadcast/expected/schema_ruby.rb +5 -11
  215. data/golden/roll/expected/loopir.txt +4 -8
  216. data/golden/roll/expected/runtime.json +26 -0
  217. data/golden/roll/expected/schema_javascript.mjs +4 -8
  218. data/golden/roll/expected/schema_ruby.rb +5 -9
  219. data/golden/schema_imports_broadcasting_with_imports/expected/dfir.txt +3 -3
  220. data/golden/schema_imports_broadcasting_with_imports/expected/dfir_optimized.txt +3 -3
  221. data/golden/schema_imports_broadcasting_with_imports/expected/loopir.txt +3 -4
  222. data/golden/schema_imports_broadcasting_with_imports/expected/runtime.json +11 -0
  223. data/golden/schema_imports_broadcasting_with_imports/expected/schema_javascript.mjs +2 -3
  224. data/golden/schema_imports_broadcasting_with_imports/expected/schema_ruby.rb +3 -4
  225. data/golden/schema_imports_broadcasting_with_imports/expected/snast.txt +5 -5
  226. data/golden/schema_imports_broadcasting_with_imports/expected/vecir.txt +3 -3
  227. data/golden/schema_imports_complex_order_calc/expected/dfir.txt +20 -20
  228. data/golden/schema_imports_complex_order_calc/expected/dfir_optimized.txt +60 -60
  229. data/golden/schema_imports_complex_order_calc/expected/loopir.txt +34 -47
  230. data/golden/schema_imports_complex_order_calc/expected/runtime.json +33 -0
  231. data/golden/schema_imports_complex_order_calc/expected/schema_javascript.mjs +16 -29
  232. data/golden/schema_imports_complex_order_calc/expected/schema_ruby.rb +17 -30
  233. data/golden/schema_imports_complex_order_calc/expected/snast.txt +26 -26
  234. data/golden/schema_imports_complex_order_calc/expected/vecir.txt +60 -60
  235. data/golden/schema_imports_composed_order/expected/dfir.txt +3 -3
  236. data/golden/schema_imports_composed_order/expected/dfir_optimized.txt +6 -6
  237. data/golden/schema_imports_composed_order/expected/loopir.txt +6 -6
  238. data/golden/schema_imports_composed_order/expected/runtime.json +9 -0
  239. data/golden/schema_imports_composed_order/expected/schema_ruby.rb +1 -1
  240. data/golden/schema_imports_composed_order/expected/snast.txt +5 -5
  241. data/golden/schema_imports_composed_order/expected/vecir.txt +6 -6
  242. data/golden/schema_imports_discount_with_tax/expected/dfir.txt +7 -7
  243. data/golden/schema_imports_discount_with_tax/expected/dfir_optimized.txt +10 -10
  244. data/golden/schema_imports_discount_with_tax/expected/loopir.txt +10 -10
  245. data/golden/schema_imports_discount_with_tax/expected/runtime.json +10 -0
  246. data/golden/schema_imports_discount_with_tax/expected/schema_ruby.rb +1 -1
  247. data/golden/schema_imports_discount_with_tax/expected/snast.txt +11 -11
  248. data/golden/schema_imports_discount_with_tax/expected/vecir.txt +10 -10
  249. data/golden/schema_imports_line_items/expected/dfir.txt +1 -1
  250. data/golden/schema_imports_line_items/expected/dfir_optimized.txt +3 -3
  251. data/golden/schema_imports_line_items/expected/loopir.txt +3 -6
  252. data/golden/schema_imports_line_items/expected/runtime.json +8 -0
  253. data/golden/schema_imports_line_items/expected/schema_javascript.mjs +4 -7
  254. data/golden/schema_imports_line_items/expected/schema_ruby.rb +5 -8
  255. data/golden/schema_imports_line_items/expected/snast.txt +1 -1
  256. data/golden/schema_imports_line_items/expected/vecir.txt +3 -3
  257. data/golden/schema_imports_multiple/expected/dfir.txt +7 -7
  258. data/golden/schema_imports_multiple/expected/dfir_optimized.txt +13 -13
  259. data/golden/schema_imports_multiple/expected/loopir.txt +13 -13
  260. data/golden/schema_imports_multiple/expected/runtime.json +10 -0
  261. data/golden/schema_imports_multiple/expected/schema_ruby.rb +1 -1
  262. data/golden/schema_imports_multiple/expected/snast.txt +11 -11
  263. data/golden/schema_imports_multiple/expected/vecir.txt +13 -13
  264. data/golden/schema_imports_nested_expressions/expected/dfir.txt +4 -4
  265. data/golden/schema_imports_nested_expressions/expected/dfir_optimized.txt +6 -6
  266. data/golden/schema_imports_nested_expressions/expected/loopir.txt +6 -6
  267. data/golden/schema_imports_nested_expressions/expected/runtime.json +8 -0
  268. data/golden/schema_imports_nested_expressions/expected/schema_ruby.rb +1 -1
  269. data/golden/schema_imports_nested_expressions/expected/snast.txt +6 -6
  270. data/golden/schema_imports_nested_expressions/expected/vecir.txt +6 -6
  271. data/golden/schema_imports_nested_with_reductions/expected/dfir.txt +6 -6
  272. data/golden/schema_imports_nested_with_reductions/expected/dfir_optimized.txt +15 -15
  273. data/golden/schema_imports_nested_with_reductions/expected/loopir.txt +7 -14
  274. data/golden/schema_imports_nested_with_reductions/expected/runtime.json +12 -0
  275. data/golden/schema_imports_nested_with_reductions/expected/schema_javascript.mjs +8 -15
  276. data/golden/schema_imports_nested_with_reductions/expected/schema_ruby.rb +9 -16
  277. data/golden/schema_imports_nested_with_reductions/expected/snast.txt +6 -6
  278. data/golden/schema_imports_nested_with_reductions/expected/vecir.txt +15 -15
  279. data/golden/schema_imports_with_imports/expected/dfir.txt +3 -3
  280. data/golden/schema_imports_with_imports/expected/dfir_optimized.txt +3 -3
  281. data/golden/schema_imports_with_imports/expected/loopir.txt +3 -3
  282. data/golden/schema_imports_with_imports/expected/runtime.json +7 -0
  283. data/golden/schema_imports_with_imports/expected/schema_ruby.rb +1 -1
  284. data/golden/schema_imports_with_imports/expected/snast.txt +5 -5
  285. data/golden/schema_imports_with_imports/expected/vecir.txt +3 -3
  286. data/golden/shift/expected/loopir.txt +4 -8
  287. data/golden/shift/expected/runtime.json +38 -0
  288. data/golden/shift/expected/schema_javascript.mjs +4 -8
  289. data/golden/shift/expected/schema_ruby.rb +5 -9
  290. data/golden/shift_2d/expected/loopir.txt +8 -16
  291. data/golden/shift_2d/expected/runtime.json +146 -0
  292. data/golden/shift_2d/expected/schema_javascript.mjs +8 -16
  293. data/golden/shift_2d/expected/schema_ruby.rb +9 -17
  294. data/golden/simple_math/expected/runtime.json +10 -0
  295. data/golden/simple_math/expected/schema_ruby.rb +1 -1
  296. data/golden/streaming_basics/expected/loopir.txt +0 -3
  297. data/golden/streaming_basics/expected/runtime.json +25 -0
  298. data/golden/streaming_basics/expected/schema_javascript.mjs +3 -6
  299. data/golden/streaming_basics/expected/schema_ruby.rb +4 -7
  300. data/golden/transcendentals/expected/ast.txt +48 -0
  301. data/golden/transcendentals/expected/dfir.txt +31 -0
  302. data/golden/transcendentals/expected/dfir_optimized.txt +34 -0
  303. data/golden/transcendentals/expected/input_plan.txt +5 -0
  304. data/golden/transcendentals/expected/loopir.txt +46 -0
  305. data/golden/transcendentals/expected/nast.txt +34 -0
  306. data/golden/transcendentals/expected/runtime.json +27 -0
  307. data/golden/transcendentals/expected/schema_javascript.mjs +66 -0
  308. data/golden/transcendentals/expected/schema_ruby.rb +63 -0
  309. data/golden/transcendentals/expected/snast.txt +34 -0
  310. data/golden/transcendentals/expected/vecir.txt +34 -0
  311. data/golden/transcendentals/input.json +1 -0
  312. data/golden/transcendentals/schema.kumi +16 -0
  313. data/golden/tuples/expected/dfir.txt +4 -4
  314. data/golden/tuples/expected/runtime.json +12 -0
  315. data/golden/tuples/expected/schema_ruby.rb +1 -1
  316. data/golden/tuples_and_arrays/expected/dfir.txt +1 -1
  317. data/golden/tuples_and_arrays/expected/loopir.txt +0 -1
  318. data/golden/tuples_and_arrays/expected/runtime.json +13 -0
  319. data/golden/tuples_and_arrays/expected/schema_javascript.mjs +1 -2
  320. data/golden/tuples_and_arrays/expected/schema_ruby.rb +2 -3
  321. data/golden/type_promotion/expected/ast.txt +75 -0
  322. data/golden/type_promotion/expected/dfir.txt +38 -0
  323. data/golden/type_promotion/expected/dfir_optimized.txt +51 -0
  324. data/golden/type_promotion/expected/input_plan.txt +9 -0
  325. data/golden/type_promotion/expected/loopir.txt +57 -0
  326. data/golden/type_promotion/expected/nast.txt +57 -0
  327. data/golden/type_promotion/expected/runtime.json +23 -0
  328. data/golden/type_promotion/expected/schema_javascript.mjs +90 -0
  329. data/golden/type_promotion/expected/schema_ruby.rb +89 -0
  330. data/golden/type_promotion/expected/snast.txt +57 -0
  331. data/golden/type_promotion/expected/vecir.txt +51 -0
  332. data/golden/type_promotion/input.json +11 -0
  333. data/golden/type_promotion/schema.kumi +30 -0
  334. data/golden/us_tax_2024/expected/dfir.txt +6 -6
  335. data/golden/us_tax_2024/expected/loopir.txt +108 -217
  336. data/golden/us_tax_2024/expected/runtime.json +423 -0
  337. data/golden/us_tax_2024/expected/schema_javascript.mjs +108 -235
  338. data/golden/us_tax_2024/expected/schema_ruby.rb +109 -218
  339. data/golden/vector_make_object/expected/schema_ruby.rb +1 -1
  340. data/golden/with_constants/expected/schema_ruby.rb +1 -1
  341. data/lib/kumi/analyzer.rb +29 -34
  342. data/lib/kumi/configuration.rb +31 -0
  343. data/lib/kumi/core/analyzer/binder.rb +2 -2
  344. data/lib/kumi/core/analyzer/macro_expander.rb +3 -3
  345. data/lib/kumi/core/analyzer/pass_failure.rb +1 -1
  346. data/lib/kumi/core/analyzer/pass_manager.rb +211 -100
  347. data/lib/kumi/core/analyzer/passes/attach_anchors_pass.rb +44 -15
  348. data/lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb +6 -20
  349. data/lib/kumi/core/analyzer/passes/codegen/loop/js/emitter.rb +235 -35
  350. data/lib/kumi/core/analyzer/passes/codegen/loop/ruby/emitter.rb +6 -3
  351. data/lib/kumi/core/analyzer/passes/codegen/loop_js_pass.rb +3 -0
  352. data/lib/kumi/core/analyzer/passes/codegen/loop_ruby_pass.rb +3 -0
  353. data/lib/kumi/core/analyzer/passes/constant_folding_pass.rb +3 -0
  354. data/lib/kumi/core/analyzer/passes/contract_checker_pass.rb +1 -1
  355. data/lib/kumi/core/analyzer/passes/declaration_validator_pass.rb +83 -0
  356. data/lib/kumi/core/analyzer/passes/{dependency_resolver.rb → dependency_resolver_pass.rb} +8 -6
  357. data/lib/kumi/core/analyzer/passes/df_validate_pass.rb +3 -13
  358. data/lib/kumi/core/analyzer/passes/import_analysis_pass.rb +7 -2
  359. data/lib/kumi/core/analyzer/passes/input_access_planner_pass.rb +4 -28
  360. data/lib/kumi/core/analyzer/passes/{input_collector.rb → input_collector_pass.rb} +30 -3
  361. data/lib/kumi/core/analyzer/passes/input_form_schema_pass.rb +4 -1
  362. data/lib/kumi/core/analyzer/passes/ir_execution_schedule_pass.rb +4 -2
  363. data/lib/kumi/core/analyzer/passes/ir_lower_pass.rb +35 -0
  364. data/lib/kumi/core/analyzer/passes/ir_validate_pass.rb +43 -0
  365. data/lib/kumi/core/analyzer/passes/{load_input_cse.rb → load_input_cse_pass.rb} +1 -1
  366. data/lib/kumi/core/analyzer/passes/loop/lower_pass.rb +23 -10
  367. data/lib/kumi/core/analyzer/passes/loop_validate_pass.rb +2 -10
  368. data/lib/kumi/core/analyzer/passes/lower_to_dfir_pass.rb +4 -2
  369. data/lib/kumi/core/analyzer/passes/{name_indexer.rb → name_indexer_pass.rb} +3 -7
  370. data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +174 -23
  371. data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +19 -3
  372. data/lib/kumi/core/analyzer/passes/output_schema_pass.rb +3 -0
  373. data/lib/kumi/core/analyzer/passes/pass_base.rb +78 -5
  374. data/lib/kumi/core/analyzer/passes/precompute_access_paths_pass.rb +7 -1
  375. data/lib/kumi/core/analyzer/passes/{semantic_constraint_validator.rb → semantic_constraint_validator_pass.rb} +7 -14
  376. data/lib/kumi/core/analyzer/passes/snast_pass.rb +22 -48
  377. data/lib/kumi/core/analyzer/passes/{toposorter.rb → toposorter_pass.rb} +4 -5
  378. data/lib/kumi/core/analyzer/passes/{unsat_detector.rb → unsat_detector_pass.rb} +4 -15
  379. data/lib/kumi/core/analyzer/passes/vec/lower_pass.rb +6 -8
  380. data/lib/kumi/core/analyzer/passes/vec_validate_pass.rb +2 -10
  381. data/lib/kumi/core/analyzer/structs/input_meta.rb +1 -1
  382. data/lib/kumi/core/compiler/access_builder.rb +1 -1
  383. data/lib/kumi/core/compiler/access_codegen.rb +1 -1
  384. data/lib/kumi/core/compiler/access_emit/base.rb +1 -1
  385. data/lib/kumi/core/compiler/access_planner_v2.rb +2 -2
  386. data/lib/kumi/core/compiler/accessors/each_indexed_accessor.rb +1 -1
  387. data/lib/kumi/core/compiler/accessors/materialize_accessor.rb +1 -1
  388. data/lib/kumi/core/compiler/accessors/ravel_accessor.rb +1 -1
  389. data/lib/kumi/core/compiler/accessors/read_accessor.rb +1 -1
  390. data/lib/kumi/core/error_reporter.rb +6 -11
  391. data/lib/kumi/core/errors.rb +37 -11
  392. data/lib/kumi/core/expression_renderer.rb +97 -0
  393. data/lib/kumi/core/functions/overload_resolver.rb +79 -149
  394. data/lib/kumi/core/ir/execution_engine/combinators.rb +16 -10
  395. data/lib/kumi/core/nast.rb +24 -0
  396. data/lib/kumi/core/ruby_parser/dsl.rb +12 -2
  397. data/lib/kumi/core/ruby_parser/dsl_cascade_builder.rb +14 -12
  398. data/lib/kumi/core/ruby_parser/guard_rails.rb +15 -1
  399. data/lib/kumi/core/ruby_parser/input_builder.rb +55 -48
  400. data/lib/kumi/core/ruby_parser/parser.rb +25 -17
  401. data/lib/kumi/core/ruby_parser/schema_builder.rb +43 -15
  402. data/lib/kumi/core/ruby_parser/sugar.rb +0 -86
  403. data/lib/kumi/core/types/dtype_rule.rb +76 -0
  404. data/lib/kumi/core/types/normalizer.rb +2 -2
  405. data/lib/kumi/core/types/profile.rb +82 -0
  406. data/lib/kumi/core/types/registry.rb +87 -0
  407. data/lib/kumi/core/types/system.rb +96 -0
  408. data/lib/kumi/core/types/value_objects.rb +14 -13
  409. data/lib/kumi/core/types.rb +41 -34
  410. data/lib/kumi/dev/golden_runtime.rb +163 -0
  411. data/lib/kumi/dev/golden_v2.rb +30 -5
  412. data/lib/kumi/dev/pretty_printer.rb +40 -73
  413. data/lib/kumi/frontends/ruby.rb +52 -12
  414. data/lib/kumi/frontends/source_frame.rb +71 -0
  415. data/lib/kumi/frontends/text.rb +4 -48
  416. data/lib/kumi/function_registry/loader.rb +101 -0
  417. data/lib/kumi/function_registry.rb +150 -0
  418. data/lib/kumi/ir/base/block.rb +11 -2
  419. data/lib/kumi/ir/base/builder.rb +1 -1
  420. data/lib/kumi/ir/base/function.rb +2 -4
  421. data/lib/kumi/ir/base/instruction.rb +10 -23
  422. data/lib/kumi/ir/base/module.rb +5 -4
  423. data/lib/kumi/ir/buf/lower.rb +1 -2
  424. data/lib/kumi/ir/df/access_contract.rb +3 -5
  425. data/lib/kumi/ir/df/import_inliner.rb +2 -5
  426. data/lib/kumi/ir/df/lower.rb +72 -51
  427. data/lib/kumi/ir/df/ops/axis_cross.rb +34 -0
  428. data/lib/kumi/ir/df/ops/axis_outer.rb +35 -0
  429. data/lib/kumi/ir/df/passes/broadcast_simplify.rb +1 -2
  430. data/lib/kumi/ir/df/passes/cse.rb +8 -3
  431. data/lib/kumi/ir/df/passes/decl_inlining.rb +5 -26
  432. data/lib/kumi/ir/df/passes/import_inlining.rb +42 -36
  433. data/lib/kumi/ir/df/passes/load_dedup.rb +9 -4
  434. data/lib/kumi/ir/df/passes/stencil_cse.rb +2 -5
  435. data/lib/kumi/ir/df/passes/support/instruction_cloner.rb +41 -14
  436. data/lib/kumi/ir/df/passes/tuple_fold_canonicalization.rb +8 -3
  437. data/lib/kumi/ir/df/passes/tuple_to_object.rb +1 -2
  438. data/lib/kumi/ir/df/validator.rb +3 -3
  439. data/lib/kumi/ir/df.rb +8 -0
  440. data/lib/kumi/ir/loop/lower.rb +231 -37
  441. data/lib/kumi/ir/loop/passes/array_contraction.rb +124 -0
  442. data/lib/kumi/ir/loop/passes/copy_cleanup.rb +112 -0
  443. data/lib/kumi/ir/loop/passes/loop_fusion.rb +125 -0
  444. data/lib/kumi/ir/loop/passes/support/structure.rb +100 -0
  445. data/lib/kumi/ir/loop/passes.rb +14 -0
  446. data/lib/kumi/ir/loop/pipeline.rb +9 -1
  447. data/lib/kumi/ir/loop/validator.rb +29 -4
  448. data/lib/kumi/ir/loop.rb +1 -0
  449. data/lib/kumi/ir/passes/register_generator.rb +32 -0
  450. data/lib/kumi/ir/testing/snast_factory.rb +2 -4
  451. data/lib/kumi/ir/vec/lower.rb +17 -7
  452. data/lib/kumi/ir/vec/ops/core_ops.rb +41 -0
  453. data/lib/kumi/ir/vec/passes/axis_canonicalization.rb +1 -2
  454. data/lib/kumi/ir/vec/passes/constant_propagation.rb +75 -47
  455. data/lib/kumi/ir/vec/passes/dce.rb +2 -5
  456. data/lib/kumi/ir/vec/passes/gvn.rb +8 -3
  457. data/lib/kumi/ir/vec/passes/peephole_simplify.rb +30 -13
  458. data/lib/kumi/ir/vec/passes/stencil_detection.rb +1 -2
  459. data/lib/kumi/ir/vec/passes/support/algebraic_identities.rb +70 -0
  460. data/lib/kumi/ir/vec/passes/support/instruction_cloner.rb +17 -3
  461. data/lib/kumi/ir/vec/validator.rb +26 -6
  462. data/lib/kumi/schema.rb +14 -10
  463. data/lib/kumi/schema_metadata/printer.rb +111 -0
  464. data/lib/kumi/schema_metadata.rb +289 -0
  465. data/lib/kumi/syntax/location.rb +14 -1
  466. data/lib/kumi/syntax/root.rb +35 -3
  467. data/lib/kumi/test_shared_schemas/pairwise.rb +27 -0
  468. data/lib/kumi/version.rb +1 -1
  469. data/lib/kumi.rb +3 -5
  470. data/tasks/docs_portal.rake +135 -0
  471. metadata +203 -81
  472. data/golden/array_element/expected.json +0 -5
  473. data/golden/array_index/expected.json +0 -5
  474. data/golden/cascade_logic/expected.json +0 -5
  475. data/golden/chained_fusion/expected.json +0 -45
  476. data/golden/decimal_explicit/expected.json +0 -1
  477. data/golden/element_arrays/expected.json +0 -55
  478. data/golden/empty_and_null_inputs/expected.json +0 -8
  479. data/golden/example_xpto/expected.json +0 -4
  480. data/golden/game_of_life/expected.json +0 -3
  481. data/golden/hash_keys/expected.json +0 -20
  482. data/golden/hash_value/expected.json +0 -19
  483. data/golden/hierarchical_complex/expected.json +0 -34
  484. data/golden/inline_rename_scope_leak/expected.json +0 -7
  485. data/golden/input_reference/expected.json +0 -7
  486. data/golden/interleaved_fusion/expected.json +0 -37
  487. data/golden/let_inline/expected.json +0 -1
  488. data/golden/loop_fusion/expected.json +0 -30
  489. data/golden/min_max_empty_arrays/expected.json +0 -7
  490. data/golden/min_reduce_scope/expected.json +0 -9
  491. data/golden/mixed_dimensions/expected.json +0 -6
  492. data/golden/multi_loop_reduction/expected.json +0 -5
  493. data/golden/multirank_hoisting/expected.json +0 -15
  494. data/golden/nested_hash/expected.json +0 -3
  495. data/golden/reduction_broadcast/expected.json +0 -25
  496. data/golden/roll/expected.json +0 -6
  497. data/golden/schema_imports_broadcasting_with_imports/expected.json +0 -4
  498. data/golden/schema_imports_complex_order_calc/expected.json +0 -12
  499. data/golden/schema_imports_composed_order/expected.json +0 -6
  500. data/golden/schema_imports_discount_with_tax/expected.json +0 -7
  501. data/golden/schema_imports_line_items/expected.json +0 -5
  502. data/golden/schema_imports_multiple/expected.json +0 -7
  503. data/golden/schema_imports_nested_expressions/expected.json +0 -5
  504. data/golden/schema_imports_nested_with_reductions/expected.json +0 -6
  505. data/golden/schema_imports_with_imports/expected.json +0 -4
  506. data/golden/shift/expected.json +0 -8
  507. data/golden/shift_2d/expected.json +0 -15
  508. data/golden/simple_math/expected.json +0 -1
  509. data/golden/streaming_basics/expected.json +0 -10
  510. data/golden/tuples/expected.json +0 -7
  511. data/golden/tuples_and_arrays/expected.json +0 -18
  512. data/golden/us_tax_2024/expected.json +0 -120
  513. data/lib/kumi/core/analyzer/passes/assemble_irv2_pass.rb +0 -130
  514. data/lib/kumi/core/analyzer/passes/declaration_validator.rb +0 -45
  515. data/lib/kumi/core/analyzer/passes/lower_to_irv2_pass.rb +0 -197
  516. data/lib/kumi/core/compiler/access_planner.rb +0 -258
  517. data/lib/kumi/core/functions/function_spec.rb +0 -17
  518. data/lib/kumi/core/functions/loader.rb +0 -63
  519. data/lib/kumi/core/functions/type_categories.rb +0 -44
  520. data/lib/kumi/core/functions/type_error_reporter.rb +0 -116
  521. data/lib/kumi/core/functions/type_rules.rb +0 -228
  522. data/lib/kumi/core/irv2/builder.rb +0 -48
  523. data/lib/kumi/core/irv2/declaration.rb +0 -28
  524. data/lib/kumi/core/irv2/module.rb +0 -108
  525. data/lib/kumi/core/irv2/value.rb +0 -28
  526. data/lib/kumi/core/types/validator.rb +0 -33
  527. data/lib/kumi/dev/codegen.rb +0 -194
  528. data/lib/kumi/dev/golden/generator.rb +0 -109
  529. data/lib/kumi/dev/golden/reporter.rb +0 -169
  530. data/lib/kumi/dev/golden/representation.rb +0 -40
  531. data/lib/kumi/dev/golden/result.rb +0 -106
  532. data/lib/kumi/dev/golden/runtime_test.rb +0 -131
  533. data/lib/kumi/dev/golden/suite.rb +0 -147
  534. data/lib/kumi/dev/golden/value_normalizer.rb +0 -78
  535. data/lib/kumi/dev/golden/verifier.rb +0 -76
  536. data/lib/kumi/dev/golden.rb +0 -82
  537. data/lib/kumi/dev/golden_schema_wrapper.rb +0 -116
  538. data/lib/kumi/dev/printer/irv2_formatter.rb +0 -163
  539. data/lib/kumi/kernel_registry.rb +0 -59
  540. data/lib/kumi/pack/builder.rb +0 -229
  541. data/lib/kumi/pack.rb +0 -15
  542. data/lib/kumi/registry_v2/loader.rb +0 -170
  543. data/lib/kumi/registry_v2.rb +0 -135
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb490e00af8d7e5b52df8056ed03f5b157670777ef4309b1805218999d71940f
4
- data.tar.gz: 254c39487da8560617178f30f64ad1650c31e364f29452457c2931a45762e46e
3
+ metadata.gz: 286dd56c2f026f542f8516df94ee8800c00a30c2578e3686614b317f7fa81aa8
4
+ data.tar.gz: 5932fc0089e91bd52696ec675af5bd73a54e4c9a5fe8bcbc59e1b15dbaa10ac9
5
5
  SHA512:
6
- metadata.gz: 17ee44edcb98ae17de0ba57b422469769a0ef59f06b2c09d03b138b401dae63774b845532b0948c3abdd4173abb75e0d77c36af327d1630ac0362e7d791ebcc3
7
- data.tar.gz: 78fd6d67671e81059ba9dfa6f10a5e4393e6fcef852409a3cccb93ee107a8f09d8c48a4366e4f3f3b4fb66fde8832925e3c089ffbf282ece6cc3fd694a802bfe
6
+ metadata.gz: 902ebf71c0e2715644993815af6e8a8df89588e1f7b70fdf7b698d509603face1f039700c0d07ab7308367eb1907d5d3240f412ed14c53fc43c9413b1e9c05a4
7
+ data.tar.gz: 5259700defd693865c0467cc93183a39587c77f2d0846536ebebee4d47bacf7ff7f812ca0321e36f8db2fa84dd7e9bf3502a6ad4f4ce4dc34c44fc4aa9bbedd3
data/.rubocop.yml CHANGED
@@ -1,3 +1,9 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ inherit_mode:
4
+ merge:
5
+ - Exclude
6
+
1
7
  plugins:
2
8
  - rubocop-performance
3
9
  - rubocop-rspec
@@ -8,14 +14,16 @@ AllCops:
8
14
  SuggestExtensions: false
9
15
  Exclude:
10
16
  - 'bin/*'
17
+ - 'cmd/**/*'
18
+ - 'coverage/**/*'
19
+ - 'examples/**/*'
20
+ - 'golden/**/*'
21
+ - 'pkg/**/*'
11
22
  - 'spec/fixtures/**/*'
12
- - 'examples/**/*' # Examples may use deprecated syntax
13
- - '*.txt'
14
- - 'test_*.rb' # Temporary test files
15
- - 'spec/integration/performance_spec.rb'
16
- - 'golden/**/*' # Golden test files are generated/expected outputs
23
+ - 'tmp/**/*'
24
+ - 'vendor/**/*'
25
+ - 'vscode-extension/**/*'
17
26
 
18
- # Common stylistic choices
19
27
  Style/StringLiterals:
20
28
  EnforcedStyle: double_quotes
21
29
 
@@ -23,100 +31,73 @@ Style/Documentation:
23
31
  Enabled: false
24
32
 
25
33
  Style/OpenStructUse:
26
- Enabled: false # Used in AST nodes and test fixtures
34
+ Enabled: false
27
35
 
28
- # Naming conventions - allow underscores in symbols for tax codes, etc.
29
36
  Naming/VariableNumber:
30
37
  Enabled: false
31
38
 
32
- # Layout
33
39
  Layout/LineLength:
34
- Max: 140
40
+ Max: 150
35
41
 
36
- # Metrics - Reasonable limits for a DSL/compiler project
42
+ # Pass bodies legitimately carry long dispatch methods; relaxed only there.
37
43
  Metrics/MethodLength:
38
- Max: 20
44
+ Max: 25
39
45
  Exclude:
40
- - 'lib/kumi/function_registry.rb' # Large function registry
41
- - 'lib/kumi/function_registry/**/*' # Function registry modules with data definitions
42
- - 'lib/kumi/analyzer/passes/**/*' # Analyzer passes often need longer methods
43
- - 'lib/kumi/types.rb' # Type system operations
44
- - 'lib/kumi/types/**/*' # Type system modules
45
- - 'lib/kumi/runner.rb' # Complex runner methods
46
- - 'spec/**/*' # Test files often need longer methods
46
+ - 'lib/kumi/core/analyzer/passes/**/*'
47
+ - 'lib/kumi/ir/**/*'
48
+ - 'spec/**/*'
47
49
 
48
50
  Metrics/AbcSize:
49
51
  Max: 20
50
52
  Exclude:
51
- - 'lib/kumi/function_registry.rb' # Large function registry
52
- - 'lib/kumi/function_registry/**/*' # Function registry modules with data definitions
53
- - 'lib/kumi/analyzer/passes/**/*' # Complex analyzer logic
54
- - 'lib/kumi/types.rb' # Type system operations
55
- - 'lib/kumi/types/**/*' # Type system modules
56
- - 'lib/kumi/runner.rb' # Complex runner methods
57
- - 'spec/**/*' # Test files often have higher ABC
53
+ - 'lib/kumi/core/analyzer/passes/**/*'
54
+ - 'lib/kumi/ir/**/*'
55
+ - 'spec/**/*'
58
56
 
59
57
  Metrics/CyclomaticComplexity:
60
58
  Max: 10
61
59
  Exclude:
62
- - 'lib/kumi/analyzer/passes/**/*' # Complex analyzer logic
63
- - 'lib/kumi/types.rb' # Type system operations
64
- - 'lib/kumi/types/**/*' # Type system modules
65
- - 'lib/kumi/runner.rb' # Complex runner methods
60
+ - 'lib/kumi/core/analyzer/passes/**/*'
61
+ - 'lib/kumi/ir/**/*'
66
62
 
67
63
  Metrics/PerceivedComplexity:
68
64
  Max: 10
69
65
  Exclude:
70
- - 'lib/kumi/analyzer/passes/**/*' # Complex analyzer logic
71
- - 'lib/kumi/types.rb' # Type system operations
72
- - 'lib/kumi/types/**/*' # Type system modules
66
+ - 'lib/kumi/core/analyzer/passes/**/*'
67
+ - 'lib/kumi/ir/**/*'
73
68
 
74
- Metrics/ParameterLists:
75
- Max: 6
69
+ Metrics/BlockLength:
76
70
  Exclude:
77
- - 'lib/kumi/analyzer/passes/dependency_resolver.rb' # Complex dependency analysis
78
- - 'lib/kumi/function_registry.rb' # Metadata registration
71
+ - 'spec/**/*'
72
+ - '*.gemspec'
79
73
 
80
- Metrics/ModuleLength:
81
- Max: 150
82
- Exclude:
83
- - 'lib/kumi/function_registry.rb' # Large function registry
74
+ Metrics/ParameterLists:
75
+ Max: 6
84
76
 
85
- # Allow missing super in base classes that are designed for inheritance
86
77
  Lint/MissingSuper:
87
78
  Exclude:
88
- - 'lib/kumi/analyzer/passes/pass_base.rb' # Base class for analyzer passes
89
- - 'lib/kumi/types.rb' # Type system value objects
90
-
91
- # RSpec-specific configuration
92
- RSpec:
93
- Enabled: true
79
+ - 'lib/kumi/core/analyzer/passes/pass_base.rb'
94
80
 
95
81
  RSpec/MultipleExpectations:
96
82
  Enabled: false
97
83
 
98
84
  RSpec/ExampleLength:
99
85
  Max: 30
100
- Exclude:
101
- - 'spec/kumi/export/comprehensive_integration_spec.rb' # Comprehensive integration tests need longer examples
102
86
 
103
87
  RSpec/MultipleMemoizedHelpers:
104
88
  Max: 10
105
89
 
106
90
  RSpec/VerifiedDoubleReference:
107
- Enabled: false # May require significant test refactoring
91
+ Enabled: false
108
92
 
109
93
  RSpec/DescribeClass:
110
- Enabled: false # Integration tests don't always test specific classes
94
+ Enabled: false
111
95
 
112
96
  RSpec/ContextWording:
113
- Enabled: false # Allow flexible context naming
114
-
115
- RSpec/ExpectActual:
116
- Enabled: true # Keep this - it's a good practice
97
+ Enabled: false
117
98
 
118
99
  RSpec/IdenticalEqualityAssertion:
119
- Enabled: false # Sometimes needed for testing type systems
100
+ Enabled: false
120
101
 
121
102
  RSpec/PendingWithoutReason:
122
- Enabled: false
103
+ Enabled: false