rigortype 0.4.6 → 0.4.8

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 (550) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -2
  3. data/data/core_overlay/bigdecimal.rbs +33 -0
  4. data/data/core_overlay/resolv.rbs +30 -0
  5. data/data/gem_overlay/activesupport/core_ext.rbs +45 -13
  6. data/data/gem_overlay/addressable/addressable.rbs +40 -0
  7. data/data/vendored_gem_sigs/bundler/bundler.rbs +1 -1
  8. data/data/vendored_gem_sigs/rubygems/rubygems_extras.rbs +4 -3
  9. data/docs/handbook/01-getting-started.md +6 -3
  10. data/docs/handbook/11-sig-gen.md +85 -3
  11. data/docs/handbook/appendix-phpstan.md +4 -4
  12. data/docs/install.md +20 -0
  13. data/docs/manual/01-installation.md +67 -26
  14. data/docs/manual/02-cli-reference.md +455 -113
  15. data/docs/manual/03-configuration.md +76 -5
  16. data/docs/manual/04-diagnostics.md +5 -4
  17. data/docs/manual/06-baseline.md +6 -4
  18. data/docs/manual/08-skills.md +11 -0
  19. data/docs/manual/09-editor-integration.md +21 -2
  20. data/docs/manual/10-mcp-server.md +38 -2
  21. data/docs/manual/12-caching.md +4 -3
  22. data/docs/manual/14-rails-quickstart.md +1 -1
  23. data/docs/manual/19-effect-labels.md +3 -4
  24. data/docs/manual/plugins/rigor-actionpack.md +32 -15
  25. data/docs/manual/plugins/rigor-activesupport-core-ext.md +23 -1
  26. data/docs/manual/plugins/rigor-sorbet.md +17 -3
  27. data/lib/rigor/analysis/baseline.rb +24 -27
  28. data/lib/rigor/analysis/check_rules/always_raises_shield.rb +147 -0
  29. data/lib/rigor/analysis/check_rules/always_truthy_condition_collector.rb +5 -6
  30. data/lib/rigor/analysis/check_rules/call_facts.rb +58 -0
  31. data/lib/rigor/analysis/check_rules/dead_assignment_collector.rb +2 -2
  32. data/lib/rigor/analysis/check_rules/declaration_sourced_guard.rb +12 -4
  33. data/lib/rigor/analysis/check_rules/duplicate_hash_key_collector.rb +2 -2
  34. data/lib/rigor/analysis/check_rules/inferred_param_guard.rb +85 -13
  35. data/lib/rigor/analysis/check_rules/ivar_write_collector.rb +16 -4
  36. data/lib/rigor/analysis/check_rules/lexical_method_sites.rb +6 -1
  37. data/lib/rigor/analysis/check_rules/main_pass_collector.rb +5 -8
  38. data/lib/rigor/analysis/check_rules/plugin_api_surface.rb +195 -0
  39. data/lib/rigor/analysis/check_rules/published_constant_guard.rb +41 -12
  40. data/lib/rigor/analysis/check_rules/rbs_receiver_surface.rb +27 -1
  41. data/lib/rigor/analysis/check_rules/rebinding_block_callees.rb +3 -3
  42. data/lib/rigor/analysis/check_rules/replaced_singleton_defs.rb +96 -0
  43. data/lib/rigor/analysis/check_rules/return_in_ensure_collector.rb +1 -2
  44. data/lib/rigor/analysis/check_rules/rule_ids.rb +9 -2
  45. data/lib/rigor/analysis/check_rules/rule_walk.rb +9 -7
  46. data/lib/rigor/analysis/check_rules/shadowed_rescue_collector.rb +3 -4
  47. data/lib/rigor/analysis/check_rules/special_global_setters.rb +3 -3
  48. data/lib/rigor/analysis/check_rules/unreachable_clause_collector.rb +2 -2
  49. data/lib/rigor/analysis/check_rules/void_value_use_collector.rb +2 -2
  50. data/lib/rigor/analysis/check_rules.rb +720 -141
  51. data/lib/rigor/analysis/crash_signature.rb +45 -3
  52. data/lib/rigor/analysis/dependency_recorder.rb +237 -80
  53. data/lib/rigor/analysis/dependency_source_inference/boundary_cross_reporter.rb +14 -3
  54. data/lib/rigor/analysis/dependency_source_inference/gem_resolver.rb +1 -1
  55. data/lib/rigor/analysis/dependency_source_inference/index.rb +6 -8
  56. data/lib/rigor/analysis/dependency_source_inference/walker.rb +4 -4
  57. data/lib/rigor/analysis/edit_replay.rb +93 -6
  58. data/lib/rigor/analysis/fact_store.rb +3 -3
  59. data/lib/rigor/analysis/incremental.rb +11 -1
  60. data/lib/rigor/analysis/incremental_run_slot/write_guard.rb +4 -3
  61. data/lib/rigor/analysis/incremental_run_slot.rb +2 -2
  62. data/lib/rigor/analysis/incremental_session.rb +306 -53
  63. data/lib/rigor/analysis/reachability/plugin_roots.rb +6 -3
  64. data/lib/rigor/analysis/rule_catalog.rb +39 -3
  65. data/lib/rigor/analysis/run_cache_key.rb +27 -3
  66. data/lib/rigor/analysis/run_disclosure_credit.rb +26 -6
  67. data/lib/rigor/analysis/run_stats.rb +2 -2
  68. data/lib/rigor/analysis/runner/buffer_pool_dispatcher.rb +6 -2
  69. data/lib/rigor/analysis/runner/declaration_position.rb +8 -8
  70. data/lib/rigor/analysis/runner/diagnostic_aggregator.rb +264 -112
  71. data/lib/rigor/analysis/runner/effect_envelope_pass.rb +4 -9
  72. data/lib/rigor/analysis/runner/pool_coordinator.rb +173 -328
  73. data/lib/rigor/analysis/runner/project_pre_passes.rb +4 -37
  74. data/lib/rigor/analysis/runner/run_level_facts.rb +304 -0
  75. data/lib/rigor/analysis/runner/run_snapshots.rb +44 -54
  76. data/lib/rigor/analysis/runner/worker_payload.rb +36 -0
  77. data/lib/rigor/analysis/runner.rb +298 -109
  78. data/lib/rigor/analysis/self_call_resolution_recorder.rb +62 -23
  79. data/lib/rigor/analysis/template_unit_positions.rb +2 -3
  80. data/lib/rigor/analysis/template_units.rb +9 -1
  81. data/lib/rigor/analysis/worker_session.rb +65 -71
  82. data/lib/rigor/bleeding_edge.rb +22 -10
  83. data/lib/rigor/builtins/imported_refinements.rb +6 -8
  84. data/lib/rigor/builtins/predefined_constant_refinements.rb +1 -1
  85. data/lib/rigor/builtins/regex_refinement.rb +4 -6
  86. data/lib/rigor/cache/descriptor.rb +6 -5
  87. data/lib/rigor/cache/file_digest.rb +39 -31
  88. data/lib/rigor/cache/incremental_snapshot.rb +95 -17
  89. data/lib/rigor/cache/rbs_cache_producer.rb +2 -2
  90. data/lib/rigor/cache/rbs_class_ancestor_table.rb +1 -1
  91. data/lib/rigor/cache/rbs_class_type_param_names.rb +2 -2
  92. data/lib/rigor/cache/rbs_constant_table.rb +1 -1
  93. data/lib/rigor/cache/rbs_descriptor.rb +90 -4
  94. data/lib/rigor/cache/rbs_environment.rb +8 -1
  95. data/lib/rigor/cache/rbs_environment_marshal_patch.rb +2 -2
  96. data/lib/rigor/cache/rbs_known_class_names.rb +1 -1
  97. data/lib/rigor/cache/store.rb +11 -10
  98. data/lib/rigor/ci_detector.rb +1 -1
  99. data/lib/rigor/cli/annotate_command.rb +24 -19
  100. data/lib/rigor/cli/baseline_command.rb +160 -57
  101. data/lib/rigor/cli/catalogue.rb +256 -0
  102. data/lib/rigor/cli/check_command.rb +112 -104
  103. data/lib/rigor/cli/check_runner_factory.rb +2 -2
  104. data/lib/rigor/cli/command.rb +15 -1
  105. data/lib/rigor/cli/coverage_command.rb +21 -8
  106. data/lib/rigor/cli/coverage_mutation.rb +5 -7
  107. data/lib/rigor/cli/coverage_renderer.rb +2 -1
  108. data/lib/rigor/cli/coverage_scan.rb +3 -5
  109. data/lib/rigor/cli/diff_command.rb +25 -20
  110. data/lib/rigor/cli/docs_command.rb +1 -2
  111. data/lib/rigor/cli/doctor_command.rb +12 -12
  112. data/lib/rigor/cli/effects_command.rb +50 -40
  113. data/lib/rigor/cli/effects_diff_renderer.rb +18 -17
  114. data/lib/rigor/cli/effects_explain_renderer.rb +13 -12
  115. data/lib/rigor/cli/effects_renderer.rb +2 -1
  116. data/lib/rigor/cli/effects_snapshot_command.rb +26 -18
  117. data/lib/rigor/cli/explain_command.rb +18 -8
  118. data/lib/rigor/cli/fused_protection_renderer.rb +2 -1
  119. data/lib/rigor/cli/json_document.rb +41 -0
  120. data/lib/rigor/cli/lens_command.rb +29 -10
  121. data/lib/rigor/cli/lsp_command.rb +250 -23
  122. data/lib/rigor/cli/mcp_command.rb +12 -7
  123. data/lib/rigor/cli/mutation_fork_scan.rb +1 -1
  124. data/lib/rigor/cli/mutation_protection_renderer.rb +3 -2
  125. data/lib/rigor/cli/options.rb +40 -1
  126. data/lib/rigor/cli/plugin_command.rb +93 -46
  127. data/lib/rigor/cli/plugins_command.rb +17 -18
  128. data/lib/rigor/cli/plugins_renderer.rb +10 -6
  129. data/lib/rigor/cli/protection_fork_scan.rb +2 -2
  130. data/lib/rigor/cli/protection_renderer.rb +2 -1
  131. data/lib/rigor/cli/show_bleedingedge_command.rb +21 -15
  132. data/lib/rigor/cli/sig_gen_command.rb +92 -27
  133. data/lib/rigor/cli/skill_command.rb +32 -3
  134. data/lib/rigor/cli/skill_deep_probe.rb +1 -1
  135. data/lib/rigor/cli/skill_describe.rb +2 -1
  136. data/lib/rigor/cli/trace_command.rb +14 -9
  137. data/lib/rigor/cli/triage_command.rb +10 -11
  138. data/lib/rigor/cli/triage_renderer.rb +2 -1
  139. data/lib/rigor/cli/type_of_command.rb +16 -11
  140. data/lib/rigor/cli/type_of_project_scope.rb +1 -4
  141. data/lib/rigor/cli/type_of_renderer.rb +4 -1
  142. data/lib/rigor/cli/type_scan_command.rb +14 -9
  143. data/lib/rigor/cli/type_scan_renderer.rb +2 -1
  144. data/lib/rigor/cli/unused_command.rb +27 -17
  145. data/lib/rigor/cli/upgrade_command.rb +5 -0
  146. data/lib/rigor/cli.rb +214 -56
  147. data/lib/rigor/config_audit.rb +33 -19
  148. data/lib/rigor/configuration/severity_profile.rb +14 -5
  149. data/lib/rigor/configuration.rb +104 -35
  150. data/lib/rigor/effects/collector.rb +53 -21
  151. data/lib/rigor/effects/definition_context.rb +0 -2
  152. data/lib/rigor/effects/envelope.rb +1 -1
  153. data/lib/rigor/effects/framework_units.rb +1 -1
  154. data/lib/rigor/effects/mutation_classifier.rb +4 -7
  155. data/lib/rigor/effects/propagator.rb +1 -1
  156. data/lib/rigor/effects/registry.rb +2 -2
  157. data/lib/rigor/effects/snapshot.rb +1 -1
  158. data/lib/rigor/effects/taint_cause.rb +0 -2
  159. data/lib/rigor/effects/unit_scan.rb +9 -13
  160. data/lib/rigor/environment/bundle_sig_discovery.rb +64 -33
  161. data/lib/rigor/environment/class_registry.rb +3 -3
  162. data/lib/rigor/environment/constant_type_cache_holder.rb +5 -0
  163. data/lib/rigor/environment/core_root.rb +77 -0
  164. data/lib/rigor/environment/default_libraries.rb +18 -1
  165. data/lib/rigor/environment/deferred_signature_plan.rb +381 -0
  166. data/lib/rigor/environment/gated_signature_guard.rb +1 -1
  167. data/lib/rigor/environment/gated_signature_plan.rb +5 -2
  168. data/lib/rigor/environment/hkt_registry_holder.rb +6 -0
  169. data/lib/rigor/environment/lockfile_resolver.rb +28 -12
  170. data/lib/rigor/environment/member_consistency/comparator.rb +18 -1
  171. data/lib/rigor/environment/member_consistency.rb +56 -7
  172. data/lib/rigor/environment/missing_gem_constant_index.rb +3 -2
  173. data/lib/rigor/environment/project_path_gems.rb +124 -0
  174. data/lib/rigor/environment/rbs_collection_discovery.rb +123 -8
  175. data/lib/rigor/environment/rbs_coverage_report.rb +12 -11
  176. data/lib/rigor/environment/rbs_hierarchy.rb +12 -15
  177. data/lib/rigor/environment/rbs_loader.rb +772 -110
  178. data/lib/rigor/environment/reflection.rb +7 -7
  179. data/lib/rigor/environment/required_features.rb +0 -3
  180. data/lib/rigor/environment/ruby_library_roots.rb +1 -1
  181. data/lib/rigor/environment/vendored_signature_plan.rb +153 -0
  182. data/lib/rigor/environment.rb +169 -42
  183. data/lib/rigor/flow_contribution/merger.rb +4 -4
  184. data/lib/rigor/inference/acceptance.rb +136 -40
  185. data/lib/rigor/inference/alias_mutation_floor/foreign_locals.rb +117 -0
  186. data/lib/rigor/inference/alias_mutation_floor/memos.rb +85 -0
  187. data/lib/rigor/inference/alias_mutation_floor/reach.rb +119 -0
  188. data/lib/rigor/inference/alias_mutation_floor/site_collector.rb +252 -0
  189. data/lib/rigor/inference/alias_mutation_floor.rb +339 -0
  190. data/lib/rigor/inference/anonymous_meta_class.rb +18 -0
  191. data/lib/rigor/inference/block_auto_splat.rb +1 -1
  192. data/lib/rigor/inference/block_parameter_binder.rb +2 -3
  193. data/lib/rigor/inference/block_run_count.rb +185 -0
  194. data/lib/rigor/inference/budget_trace.rb +8 -2
  195. data/lib/rigor/inference/builtins/array_catalog.rb +2 -2
  196. data/lib/rigor/inference/builtins/exception_catalog.rb +2 -2
  197. data/lib/rigor/inference/builtins/numeric_catalog.rb +2 -5
  198. data/lib/rigor/inference/builtins/random_catalog.rb +2 -2
  199. data/lib/rigor/inference/callee_mutation_chain.rb +88 -77
  200. data/lib/rigor/inference/callee_write_census.rb +815 -0
  201. data/lib/rigor/inference/captured_locals.rb +2 -0
  202. data/lib/rigor/inference/census_foreign_block.rb +354 -0
  203. data/lib/rigor/inference/clause_widening.rb +1 -1
  204. data/lib/rigor/inference/closure_escape_analyzer.rb +11 -4
  205. data/lib/rigor/inference/construction_escape.rb +258 -0
  206. data/lib/rigor/inference/declaration_walk/traversal.rb +1 -1
  207. data/lib/rigor/inference/declaration_walk.rb +4 -0
  208. data/lib/rigor/inference/deep_erasure.rb +39 -7
  209. data/lib/rigor/inference/def_handle.rb +1 -1
  210. data/lib/rigor/inference/def_node_resolver.rb +33 -15
  211. data/lib/rigor/inference/def_return_typer.rb +47 -5
  212. data/lib/rigor/inference/definer_resolution.rb +19 -9
  213. data/lib/rigor/inference/definers_index.rb +162 -0
  214. data/lib/rigor/inference/direct_ivar_writes.rb +300 -0
  215. data/lib/rigor/inference/element_read_widening.rb +49 -3
  216. data/lib/rigor/inference/error_info.rb +16 -0
  217. data/lib/rigor/inference/expression_typer.rb +1559 -320
  218. data/lib/rigor/inference/external_ancestor_resolution.rb +3 -4
  219. data/lib/rigor/inference/flow_tracer.rb +31 -14
  220. data/lib/rigor/inference/fork_map.rb +3 -0
  221. data/lib/rigor/inference/fresh_frame_blocks.rb +52 -1
  222. data/lib/rigor/inference/global_write_census.rb +81 -5
  223. data/lib/rigor/inference/global_writer_reach.rb +260 -0
  224. data/lib/rigor/inference/hkt_body.rb +1 -2
  225. data/lib/rigor/inference/hkt_body_parser.rb +3 -5
  226. data/lib/rigor/inference/hkt_reducer.rb +2 -2
  227. data/lib/rigor/inference/hkt_registry.rb +3 -5
  228. data/lib/rigor/inference/in_effect_refinements.rb +7 -0
  229. data/lib/rigor/inference/indexed_narrowing.rb +61 -15
  230. data/lib/rigor/inference/intervening_ivar_reset.rb +26 -4
  231. data/lib/rigor/inference/ivar_writer_census.rb +154 -8
  232. data/lib/rigor/inference/key_presence_guard.rb +51 -24
  233. data/lib/rigor/inference/last_line/self_evidence.rb +30 -0
  234. data/lib/rigor/inference/last_line.rb +5 -2
  235. data/lib/rigor/inference/loop_value_record.rb +66 -14
  236. data/lib/rigor/inference/match_rebinding/frame.rb +57 -0
  237. data/lib/rigor/inference/match_rebinding/yielding_match.rb +101 -0
  238. data/lib/rigor/inference/match_rebinding.rb +28 -5
  239. data/lib/rigor/inference/method_dispatcher/alias_strict_nominals.rb +1 -1
  240. data/lib/rigor/inference/method_dispatcher/argument_distribution.rb +40 -0
  241. data/lib/rigor/inference/method_dispatcher/block_folding.rb +44 -30
  242. data/lib/rigor/inference/method_dispatcher/class_keyed_block_params.rb +65 -0
  243. data/lib/rigor/inference/method_dispatcher/constant_folding.rb +3 -3
  244. data/lib/rigor/inference/method_dispatcher/contested_overloads.rb +89 -0
  245. data/lib/rigor/inference/method_dispatcher/core_enumerable_receiver.rb +44 -0
  246. data/lib/rigor/inference/method_dispatcher/declared_constructor.rb +151 -0
  247. data/lib/rigor/inference/method_dispatcher/facet_distribution.rb +1 -1
  248. data/lib/rigor/inference/method_dispatcher/imprecise_argument.rb +2 -2
  249. data/lib/rigor/inference/method_dispatcher/interface_shape.rb +181 -0
  250. data/lib/rigor/inference/method_dispatcher/iterator_dispatch.rb +1 -1
  251. data/lib/rigor/inference/method_dispatcher/kernel_dispatch.rb +1 -1
  252. data/lib/rigor/inference/method_dispatcher/no_match_fallback.rb +54 -0
  253. data/lib/rigor/inference/method_dispatcher/overload_selector.rb +51 -27
  254. data/lib/rigor/inference/method_dispatcher/random_folding.rb +1 -1
  255. data/lib/rigor/inference/method_dispatcher/rbs_dispatch.rb +606 -78
  256. data/lib/rigor/inference/method_dispatcher/reduce_folding.rb +1 -1
  257. data/lib/rigor/inference/method_dispatcher/regexp_folding.rb +2 -2
  258. data/lib/rigor/inference/method_dispatcher/self_substitute.rb +3 -3
  259. data/lib/rigor/inference/method_dispatcher/set_folding.rb +9 -7
  260. data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +467 -84
  261. data/lib/rigor/inference/method_dispatcher/singleton_folding.rb +0 -1
  262. data/lib/rigor/inference/method_dispatcher/singleton_mixin_dispatch.rb +50 -17
  263. data/lib/rigor/inference/method_dispatcher/singleton_type_params.rb +104 -0
  264. data/lib/rigor/inference/method_dispatcher/struct_folding.rb +5 -5
  265. data/lib/rigor/inference/method_dispatcher/struct_materialization.rb +4 -6
  266. data/lib/rigor/inference/method_dispatcher/uri_folding.rb +1 -1
  267. data/lib/rigor/inference/method_dispatcher.rb +123 -25
  268. data/lib/rigor/inference/method_parameter_binder.rb +136 -56
  269. data/lib/rigor/inference/module_function_state/spellings.rb +2 -2
  270. data/lib/rigor/inference/module_function_state.rb +24 -3
  271. data/lib/rigor/inference/multi_target_binder.rb +2 -2
  272. data/lib/rigor/inference/mutation_rejoin.rb +240 -4
  273. data/lib/rigor/inference/mutation_widening.rb +199 -29
  274. data/lib/rigor/inference/narrowing.rb +238 -50
  275. data/lib/rigor/inference/operand_effects.rb +43 -2
  276. data/lib/rigor/inference/optimistic_origin.rb +134 -9
  277. data/lib/rigor/inference/origin_lookup.rb +1 -1
  278. data/lib/rigor/inference/out_buffer_mutation.rb +72 -0
  279. data/lib/rigor/inference/parameter_inference_collector.rb +5 -6
  280. data/lib/rigor/inference/pre_eval_constants.rb +1 -1
  281. data/lib/rigor/inference/precision_scanner.rb +1 -1
  282. data/lib/rigor/inference/project_method_ownership.rb +30 -9
  283. data/lib/rigor/inference/project_patched_methods.rb +65 -13
  284. data/lib/rigor/inference/project_patched_scanner.rb +120 -25
  285. data/lib/rigor/inference/project_patched_visibility.rb +39 -3
  286. data/lib/rigor/inference/project_yielder.rb +11 -17
  287. data/lib/rigor/inference/rbs_type_translator.rb +68 -15
  288. data/lib/rigor/inference/receiver_alias.rb +20 -0
  289. data/lib/rigor/inference/receiver_writer_call.rb +67 -0
  290. data/lib/rigor/inference/recursion_rebinding.rb +157 -0
  291. data/lib/rigor/inference/refined_dispatch/constructed_class.rb +57 -17
  292. data/lib/rigor/inference/refined_dispatch/own_method.rb +51 -16
  293. data/lib/rigor/inference/refined_dispatch.rb +13 -0
  294. data/lib/rigor/inference/reflective_ivar_write.rb +19 -11
  295. data/lib/rigor/inference/remover_holder_scan.rb +287 -0
  296. data/lib/rigor/inference/remover_narrowing.rb +224 -0
  297. data/lib/rigor/inference/rewrite_mutation.rb +53 -2
  298. data/lib/rigor/inference/scope_indexer/certainty.rb +0 -1
  299. data/lib/rigor/inference/scope_indexer/class_cvars_collector.rb +13 -6
  300. data/lib/rigor/inference/scope_indexer/constant_ivar_value.rb +93 -0
  301. data/lib/rigor/inference/scope_indexer/declared_param_writes.rb +70 -26
  302. data/lib/rigor/inference/scope_indexer/derived_param_value.rb +112 -0
  303. data/lib/rigor/inference/scope_indexer/empty_seed.rb +99 -0
  304. data/lib/rigor/inference/scope_indexer/ivar_contributions.rb +295 -0
  305. data/lib/rigor/inference/scope_indexer/mixin_accumulator.rb +136 -9
  306. data/lib/rigor/inference/scope_indexer.rb +2213 -226
  307. data/lib/rigor/inference/self_call_ivar_writes.rb +103 -12
  308. data/lib/rigor/inference/self_preserving_block.rb +87 -0
  309. data/lib/rigor/inference/set_mutation.rb +189 -0
  310. data/lib/rigor/inference/singleton_hook_decline.rb +42 -8
  311. data/lib/rigor/inference/singleton_object_constant.rb +32 -2
  312. data/lib/rigor/inference/statement_evaluator.rb +3268 -358
  313. data/lib/rigor/inference/string_mutation.rb +14 -0
  314. data/lib/rigor/inference/struct_fold_safety.rb +4 -6
  315. data/lib/rigor/inference/synthetic_method_scanner.rb +40 -17
  316. data/lib/rigor/inference/toplevel_def_census.rb +67 -0
  317. data/lib/rigor/inference/unknown_store_widening.rb +103 -4
  318. data/lib/rigor/inference/unthreaded_rebinds.rb +2 -3
  319. data/lib/rigor/inference/untyped_rejoin.rb +1 -1
  320. data/lib/rigor/inference/void_tail_summary.rb +29 -9
  321. data/lib/rigor/language_server/buffer_table.rb +3 -3
  322. data/lib/rigor/language_server/completion_provider.rb +26 -20
  323. data/lib/rigor/language_server/config_warning_announcer.rb +28 -0
  324. data/lib/rigor/language_server/diagnostic_publisher.rb +8 -3
  325. data/lib/rigor/language_server/document_symbol_provider.rb +1 -1
  326. data/lib/rigor/language_server/folding_range_provider.rb +1 -2
  327. data/lib/rigor/language_server/hover_provider.rb +1 -7
  328. data/lib/rigor/language_server/hover_renderer.rb +6 -8
  329. data/lib/rigor/language_server/project_context.rb +39 -1
  330. data/lib/rigor/language_server/publish_batcher.rb +3 -4
  331. data/lib/rigor/language_server/selection_range_provider.rb +2 -4
  332. data/lib/rigor/language_server/server.rb +7 -3
  333. data/lib/rigor/language_server/signature_help_provider.rb +4 -4
  334. data/lib/rigor/lens/claims/comparison.rb +78 -0
  335. data/lib/rigor/lens/claims/request.rb +131 -0
  336. data/lib/rigor/lens/claims/type_reader.rb +216 -0
  337. data/lib/rigor/lens/claims.rb +208 -0
  338. data/lib/rigor/lens/contract_reader.rb +5 -0
  339. data/lib/rigor/lens/document.rb +1 -1
  340. data/lib/rigor/lens/file_reader.rb +21 -8
  341. data/lib/rigor/lens/plugins.rb +1 -1
  342. data/lib/rigor/lens/run.rb +8 -0
  343. data/lib/rigor/lens.rb +1 -1
  344. data/lib/rigor/library_probe.rb +68 -0
  345. data/lib/rigor/mcp/server.rb +73 -2
  346. data/lib/rigor/mcp.rb +1 -1
  347. data/lib/rigor/memo_audit.rb +282 -0
  348. data/lib/rigor/plugin/access_denied_error.rb +1 -2
  349. data/lib/rigor/plugin/base.rb +15 -2
  350. data/lib/rigor/plugin/bundled_catalog.rb +1 -12
  351. data/lib/rigor/plugin/io_boundary.rb +26 -4
  352. data/lib/rigor/plugin/loader.rb +25 -8
  353. data/lib/rigor/plugin/macro/heredoc_template.rb +7 -8
  354. data/lib/rigor/plugin/macro/trait_registry.rb +6 -9
  355. data/lib/rigor/plugin/manifest.rb +16 -16
  356. data/lib/rigor/plugin/registry.rb +16 -5
  357. data/lib/rigor/plugin/services.rb +2 -3
  358. data/lib/rigor/plugin/source_rbs_synthesis_reporter.rb +11 -0
  359. data/lib/rigor/plugin/trust_policy.rb +48 -2
  360. data/lib/rigor/plugin/type_node_resolver.rb +2 -4
  361. data/lib/rigor/plugin.rb +6 -8
  362. data/lib/rigor/plugin_gap_advisory.rb +5 -1
  363. data/lib/rigor/project_environment.rb +16 -2
  364. data/lib/rigor/protection/analysis_guard.rb +1 -1
  365. data/lib/rigor/protection/discovery_seed.rb +44 -5
  366. data/lib/rigor/protection/mutation_cache.rb +4 -1
  367. data/lib/rigor/protection/mutator.rb +1 -1
  368. data/lib/rigor/rbs_extended/envelope_scanner.rb +4 -6
  369. data/lib/rigor/rbs_extended/hkt_directives.rb +6 -10
  370. data/lib/rigor/rbs_extended/reporter.rb +27 -3
  371. data/lib/rigor/rbs_extended.rb +2 -3
  372. data/lib/rigor/reflection/constant_ancestors.rb +81 -22
  373. data/lib/rigor/reflection/declaration_collectors.rb +55 -0
  374. data/lib/rigor/reflection/declarations.rb +58 -0
  375. data/lib/rigor/reflection/project_method.rb +177 -0
  376. data/lib/rigor/reflection.rb +2 -0
  377. data/lib/rigor/rooted_glob.rb +32 -1
  378. data/lib/rigor/run_scoped_slots.rb +38 -0
  379. data/lib/rigor/runtime/jit.rb +1 -1
  380. data/lib/rigor/scope/discovery_index.rb +168 -8
  381. data/lib/rigor/scope/resolution_chain/relevance.rb +14 -1
  382. data/lib/rigor/scope/resolution_chain.rb +901 -54
  383. data/lib/rigor/scope.rb +644 -37
  384. data/lib/rigor/sig_gen/bot_proposal_guard.rb +306 -0
  385. data/lib/rigor/sig_gen/classification.rb +18 -1
  386. data/lib/rigor/sig_gen/effect_annotation.rb +3 -3
  387. data/lib/rigor/sig_gen/generator.rb +588 -66
  388. data/lib/rigor/sig_gen/generic_header_scan.rb +189 -0
  389. data/lib/rigor/sig_gen/inline_declarations.rb +2 -2
  390. data/lib/rigor/sig_gen/layout_index.rb +3 -3
  391. data/lib/rigor/sig_gen/method_candidate.rb +37 -4
  392. data/lib/rigor/sig_gen/observation_collector.rb +14 -7
  393. data/lib/rigor/sig_gen/observed_call.rb +1 -1
  394. data/lib/rigor/sig_gen/path_mapper.rb +6 -0
  395. data/lib/rigor/sig_gen/platform_guarded_files.rb +184 -0
  396. data/lib/rigor/sig_gen/renderer.rb +15 -9
  397. data/lib/rigor/sig_gen/skip_reason_catalog.rb +62 -2
  398. data/lib/rigor/sig_gen/type_name_qualification.rb +69 -0
  399. data/lib/rigor/sig_gen/write_reporter.rb +63 -14
  400. data/lib/rigor/sig_gen/write_result.rb +23 -12
  401. data/lib/rigor/sig_gen/writer.rb +238 -37
  402. data/lib/rigor/sig_gen.rb +1 -0
  403. data/lib/rigor/source/forwardable_delegators.rb +122 -0
  404. data/lib/rigor/source/node_children.rb +13 -0
  405. data/lib/rigor/type/acceptance_router.rb +2 -2
  406. data/lib/rigor/type/accepts_result.rb +1 -1
  407. data/lib/rigor/type/app.rb +4 -6
  408. data/lib/rigor/type/combinator.rb +173 -21
  409. data/lib/rigor/type/constant.rb +4 -5
  410. data/lib/rigor/type/hash_shape.rb +21 -40
  411. data/lib/rigor/type/interface.rb +60 -0
  412. data/lib/rigor/type/union.rb +1 -1
  413. data/lib/rigor/type.rb +1 -0
  414. data/lib/rigor/type_node/identifier.rb +1 -2
  415. data/lib/rigor/type_node/resolver_chain.rb +1 -1
  416. data/lib/rigor/type_node/string_literal.rb +1 -2
  417. data/lib/rigor/type_node/symbol_literal.rb +1 -2
  418. data/lib/rigor/type_node/union.rb +3 -6
  419. data/lib/rigor/type_of_memo/serving.rb +99 -0
  420. data/lib/rigor/type_of_memo/stats.rb +43 -0
  421. data/lib/rigor/type_of_memo.rb +337 -0
  422. data/lib/rigor/typing_state.rb +1094 -0
  423. data/lib/rigor/value_semantics.rb +1 -10
  424. data/lib/rigor/version.rb +1 -1
  425. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable/channel_discoverer.rb +2 -2
  426. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable/channel_index.rb +2 -3
  427. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable.rb +1 -1
  428. data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer/mailer_discoverer.rb +38 -36
  429. data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer/mailer_index.rb +4 -2
  430. data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer.rb +6 -4
  431. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/analyzer.rb +1 -1
  432. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/controller_index.rb +1 -5
  433. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/controller_scan.rb +0 -1
  434. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/erb_compiler.rb +2 -1
  435. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/view_assigns.rb +3 -3
  436. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack.rb +115 -36
  437. data/plugins/rigor-active-model-serializers/lib/rigor/plugin/active_model_serializers.rb +3 -6
  438. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/analyzer.rb +25 -1
  439. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/effects.rb +1 -1
  440. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/job_discoverer.rb +16 -6
  441. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/job_index.rb +4 -2
  442. data/plugins/rigor-activejob/lib/rigor/plugin/activejob.rb +4 -3
  443. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/analyzer.rb +2 -1
  444. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/association_roots.rb +3 -2
  445. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/effects.rb +2 -2
  446. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_discoverer.rb +21 -31
  447. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_index.rb +10 -16
  448. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_parser.rb +132 -33
  449. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_table.rb +20 -6
  450. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/structure_sql_parser.rb +7 -4
  451. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord.rb +54 -17
  452. data/plugins/rigor-activerecord/sig/active_record/relation.rbs +19 -5
  453. data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage/attachment_discoverer.rb +3 -4
  454. data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage/attachment_index.rb +1 -1
  455. data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage.rb +11 -14
  456. data/plugins/rigor-activestorage/lib/rigor-activestorage.rb +1 -1
  457. data/plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext/effects.rb +1 -1
  458. data/plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext/symbolize_keys.rb +102 -0
  459. data/plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext.rb +30 -9
  460. data/plugins/rigor-activesupport-core-ext/sig/active_support/core_ext.rbs +55 -13
  461. data/plugins/rigor-alba/lib/rigor/plugin/alba/resource_collector.rb +15 -21
  462. data/plugins/rigor-alba/lib/rigor/plugin/alba/resource_discoverer.rb +1 -6
  463. data/plugins/rigor-alba/lib/rigor/plugin/alba/resource_index.rb +3 -3
  464. data/plugins/rigor-dry-schema/lib/rigor/plugin/dry_schema/schema_scanner.rb +1 -3
  465. data/plugins/rigor-dry-struct/lib/rigor/plugin/dry_struct.rb +6 -6
  466. data/plugins/rigor-dry-types/lib/rigor/plugin/dry_types/alias_scanner.rb +5 -6
  467. data/plugins/rigor-dry-types/lib/rigor/plugin/dry_types.rb +1 -1
  468. data/plugins/rigor-dry-validation/lib/rigor/plugin/dry_validation/params_shape.rb +2 -3
  469. data/plugins/rigor-dry-validation/lib/rigor/plugin/dry_validation.rb +5 -8
  470. data/plugins/rigor-ethon/lib/rigor/plugin/ethon.rb +0 -1
  471. data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot/factory_discoverer.rb +1 -1
  472. data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot.rb +10 -18
  473. data/plugins/rigor-ffi/lib/rigor/plugin/ffi/analyzer.rb +0 -1
  474. data/plugins/rigor-ffi/lib/rigor/plugin/ffi/discoverer.rb +0 -2
  475. data/plugins/rigor-ffi/lib/rigor/plugin/ffi.rb +8 -7
  476. data/plugins/rigor-grape/lib/rigor/plugin/grape.rb +0 -2
  477. data/plugins/rigor-graphql/lib/rigor/plugin/graphql/type_scanner.rb +6 -7
  478. data/plugins/rigor-graphql/lib/rigor/plugin/graphql.rb +12 -2
  479. data/plugins/rigor-hanami/lib/rigor/plugin/hanami/action_checker.rb +2 -4
  480. data/plugins/rigor-hanami/lib/rigor/plugin/hanami.rb +2 -5
  481. data/plugins/rigor-mangrove/lib/rigor/plugin/mangrove.rb +8 -2
  482. data/plugins/rigor-minitest/lib/rigor/plugin/minitest/assertion_analyzer.rb +6 -6
  483. data/plugins/rigor-pundit/lib/rigor/plugin/pundit/policy_discoverer.rb +2 -1
  484. data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/analyzer.rb +3 -8
  485. data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/locale_index.rb +2 -3
  486. data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/locale_loader.rb +5 -8
  487. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/analyzer.rb +200 -4
  488. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/devise_routes.rb +2 -3
  489. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/helper_discoverer.rb +1 -1
  490. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/routes_parser.rb +4 -11
  491. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes.rb +4 -3
  492. data/plugins/rigor-rbs-inline/lib/rigor/plugin/rbs_inline.rb +2 -1
  493. data/plugins/rigor-rspec/lib/rigor/plugin/rspec/matcher_analyzer.rb +5 -5
  494. data/plugins/rigor-rspec/lib/rigor/plugin/rspec.rb +2 -2
  495. data/plugins/rigor-rspec-rails/lib/rigor/plugin/rspec_rails.rb +3 -4
  496. data/plugins/rigor-shoulda-matchers/lib/rigor/plugin/shoulda_matchers/analyzer.rb +6 -8
  497. data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq.rb +3 -2
  498. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/absurd_recognizer.rb +4 -5
  499. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/assertion_recognizer.rb +6 -7
  500. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/catalog.rb +210 -3
  501. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/catalog_walker.rb +146 -7
  502. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/sig_parser.rb +2 -2
  503. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/type_translator.rb +52 -34
  504. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet.rb +97 -24
  505. data/plugins/rigor-statesman/lib/rigor/plugin/statesman.rb +2 -3
  506. data/plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_collector.rb +16 -16
  507. data/plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_discoverer.rb +4 -8
  508. data/plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_index.rb +4 -4
  509. data/sig/rigor/analysis/baseline.rbs +0 -3
  510. data/sig/rigor/analysis/check_rules/rule_walk.rbs +6 -0
  511. data/sig/rigor/analysis/fact_store.rbs +2 -2
  512. data/sig/rigor/analysis/reachability/scan_cache.rbs +1 -1
  513. data/sig/rigor/cache/descriptor.rbs +14 -0
  514. data/sig/rigor/cli/diff_command.rbs +1 -1
  515. data/sig/rigor/cli/explain_command.rbs +1 -1
  516. data/sig/rigor/effects/registry.rbs +2 -2
  517. data/sig/rigor/environment.rbs +4 -1
  518. data/sig/rigor/inference.rbs +4 -1
  519. data/sig/rigor/plugin/additional_initializer.rbs +0 -5
  520. data/sig/rigor/plugin/base.rbs +53 -18
  521. data/sig/rigor/plugin/effect_attribution.rbs +3 -3
  522. data/sig/rigor/plugin/effect_edge.rbs +1 -1
  523. data/sig/rigor/plugin/effect_entry_points.rbs +3 -3
  524. data/sig/rigor/plugin/interfaces.rbs +51 -0
  525. data/sig/rigor/plugin/io_boundary.rbs +3 -3
  526. data/sig/rigor/plugin/manifest.rbs +9 -9
  527. data/sig/rigor/plugin/node_context.rbs +21 -0
  528. data/sig/rigor/plugin/protocol_contract.rbs +3 -7
  529. data/sig/rigor/reflection.rbs +37 -0
  530. data/sig/rigor/scope.rbs +43 -4
  531. data/sig/rigor/trinary.rbs +1 -0
  532. data/sig/rigor/type.rbs +9 -3
  533. data/sig/rigor.rbs +3 -2
  534. data/skills/rigor-ask/SKILL.md +1 -0
  535. data/skills/rigor-plugin-author/SKILL.md +4 -4
  536. data/skills/rigor-plugin-author/references/02-walker-and-types.md +5 -5
  537. data/skills/rigor-plugin-review/SKILL.md +3 -3
  538. data/skills/rigor-project-init/references/01-detect.md +1 -0
  539. data/skills/rigor-project-init/references/03-baseline-and-bugs.md +17 -2
  540. data/skills/rigor-project-init/references/06-agent-contract.md +4 -4
  541. data/skills/rigor-rbs-contract/SKILL.md +147 -0
  542. data/skills/rigor-rbs-contract/references/01-finding-candidates.md +212 -0
  543. data/skills/rigor-rbs-contract/references/02-contract-rules.md +157 -0
  544. data/skills/rigor-rbs-contract/references/03-target-own-code.md +90 -0
  545. data/skills/rigor-rbs-contract/references/04-target-gem-rbs-collection.md +210 -0
  546. data/skills/rigor-rbs-contract/references/05-declaration-mutants.md +182 -0
  547. data/skills/rigor-rbs-setup/SKILL.md +3 -1
  548. data/skills/rigor-type-oracle/SKILL.md +26 -1
  549. data/skills/rigor-type-oracle/references/02-agents-md-fragment.md +4 -3
  550. metadata +82 -3
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rigortype
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.4.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rigor contributors
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
10
+ date: 1980-01-01 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: language_server-protocol
@@ -307,6 +307,7 @@ files:
307
307
  - data/builtins/ruby_core/struct.yml
308
308
  - data/builtins/ruby_core/time.yml
309
309
  - data/capability_roles/capability_roles.rbs
310
+ - data/core_overlay/bigdecimal.rbs
310
311
  - data/core_overlay/csv.rbs
311
312
  - data/core_overlay/enumerable.rbs
312
313
  - data/core_overlay/enumerator.rbs
@@ -335,6 +336,7 @@ files:
335
336
  - data/effects/core.yml
336
337
  - data/effects/registry.yml
337
338
  - data/gem_overlay/activesupport/core_ext.rbs
339
+ - data/gem_overlay/addressable/addressable.rbs
338
340
  - data/vendored_gem_sigs/ast/ast.rbs
339
341
  - data/vendored_gem_sigs/bcrypt/bcrypt.rbs
340
342
  - data/vendored_gem_sigs/bundler/bundler.rbs
@@ -445,7 +447,9 @@ files:
445
447
  - lib/rigor/analysis/baseline.rb
446
448
  - lib/rigor/analysis/buffer_binding.rb
447
449
  - lib/rigor/analysis/check_rules.rb
450
+ - lib/rigor/analysis/check_rules/always_raises_shield.rb
448
451
  - lib/rigor/analysis/check_rules/always_truthy_condition_collector.rb
452
+ - lib/rigor/analysis/check_rules/call_facts.rb
449
453
  - lib/rigor/analysis/check_rules/clause_coverage.rb
450
454
  - lib/rigor/analysis/check_rules/dead_assignment_collector.rb
451
455
  - lib/rigor/analysis/check_rules/dead_version_guard_arms.rb
@@ -455,10 +459,12 @@ files:
455
459
  - lib/rigor/analysis/check_rules/ivar_write_collector.rb
456
460
  - lib/rigor/analysis/check_rules/lexical_method_sites.rb
457
461
  - lib/rigor/analysis/check_rules/main_pass_collector.rb
462
+ - lib/rigor/analysis/check_rules/plugin_api_surface.rb
458
463
  - lib/rigor/analysis/check_rules/published_constant_guard.rb
459
464
  - lib/rigor/analysis/check_rules/rbs_receiver_surface.rb
460
465
  - lib/rigor/analysis/check_rules/rebinding_block_callees.rb
461
466
  - lib/rigor/analysis/check_rules/rebinding_block_callees/dispatch.rb
467
+ - lib/rigor/analysis/check_rules/replaced_singleton_defs.rb
462
468
  - lib/rigor/analysis/check_rules/return_in_ensure_collector.rb
463
469
  - lib/rigor/analysis/check_rules/ruby_deprecations.rb
464
470
  - lib/rigor/analysis/check_rules/rule_ids.rb
@@ -513,8 +519,10 @@ files:
513
519
  - lib/rigor/analysis/runner/envelope_messages.rb
514
520
  - lib/rigor/analysis/runner/pool_coordinator.rb
515
521
  - lib/rigor/analysis/runner/project_pre_passes.rb
522
+ - lib/rigor/analysis/runner/run_level_facts.rb
516
523
  - lib/rigor/analysis/runner/run_snapshots.rb
517
524
  - lib/rigor/analysis/runner/scan_environment.rb
525
+ - lib/rigor/analysis/runner/worker_payload.rb
518
526
  - lib/rigor/analysis/self_call_resolution_recorder.rb
519
527
  - lib/rigor/analysis/severity_stamp.rb
520
528
  - lib/rigor/analysis/shadow_harness.rb
@@ -551,6 +559,7 @@ files:
551
559
  - lib/rigor/cli.rb
552
560
  - lib/rigor/cli/annotate_command.rb
553
561
  - lib/rigor/cli/baseline_command.rb
562
+ - lib/rigor/cli/catalogue.rb
554
563
  - lib/rigor/cli/check_command.rb
555
564
  - lib/rigor/cli/check_invocation.rb
556
565
  - lib/rigor/cli/check_runner_factory.rb
@@ -574,6 +583,7 @@ files:
574
583
  - lib/rigor/cli/explain_command.rb
575
584
  - lib/rigor/cli/fused_protection_renderer.rb
576
585
  - lib/rigor/cli/fused_protection_report.rb
586
+ - lib/rigor/cli/json_document.rb
577
587
  - lib/rigor/cli/lens_command.rb
578
588
  - lib/rigor/cli/lsp_command.rb
579
589
  - lib/rigor/cli/mcp_command.rb
@@ -660,7 +670,9 @@ files:
660
670
  - lib/rigor/environment/bundle_sig_discovery.rb
661
671
  - lib/rigor/environment/class_registry.rb
662
672
  - lib/rigor/environment/constant_type_cache_holder.rb
673
+ - lib/rigor/environment/core_root.rb
663
674
  - lib/rigor/environment/default_libraries.rb
675
+ - lib/rigor/environment/deferred_signature_plan.rb
664
676
  - lib/rigor/environment/failure_slot.rb
665
677
  - lib/rigor/environment/gated_signature_guard.rb
666
678
  - lib/rigor/environment/gated_signature_plan.rb
@@ -670,6 +682,7 @@ files:
670
682
  - lib/rigor/environment/member_consistency.rb
671
683
  - lib/rigor/environment/member_consistency/comparator.rb
672
684
  - lib/rigor/environment/missing_gem_constant_index.rb
685
+ - lib/rigor/environment/project_path_gems.rb
673
686
  - lib/rigor/environment/rbs_collection_discovery.rb
674
687
  - lib/rigor/environment/rbs_coverage_report.rb
675
688
  - lib/rigor/environment/rbs_hierarchy.rb
@@ -679,6 +692,7 @@ files:
679
692
  - lib/rigor/environment/required_features.rb
680
693
  - lib/rigor/environment/ruby_library_roots.rb
681
694
  - lib/rigor/environment/source_rbs_synthesis.rb
695
+ - lib/rigor/environment/vendored_signature_plan.rb
682
696
  - lib/rigor/flow_contribution.rb
683
697
  - lib/rigor/flow_contribution/conflict.rb
684
698
  - lib/rigor/flow_contribution/element.rb
@@ -687,11 +701,17 @@ files:
687
701
  - lib/rigor/flow_contribution/merger.rb
688
702
  - lib/rigor/hashing/xxh3.rb
689
703
  - lib/rigor/inference/acceptance.rb
704
+ - lib/rigor/inference/alias_mutation_floor.rb
705
+ - lib/rigor/inference/alias_mutation_floor/foreign_locals.rb
706
+ - lib/rigor/inference/alias_mutation_floor/memos.rb
707
+ - lib/rigor/inference/alias_mutation_floor/reach.rb
708
+ - lib/rigor/inference/alias_mutation_floor/site_collector.rb
690
709
  - lib/rigor/inference/anonymous_meta_class.rb
691
710
  - lib/rigor/inference/block_auto_splat.rb
692
711
  - lib/rigor/inference/block_call_timing.rb
693
712
  - lib/rigor/inference/block_parameter_binder.rb
694
713
  - lib/rigor/inference/block_repetition.rb
714
+ - lib/rigor/inference/block_run_count.rb
695
715
  - lib/rigor/inference/body_fixpoint.rb
696
716
  - lib/rigor/inference/budget_trace.rb
697
717
  - lib/rigor/inference/builtins/array_catalog.rb
@@ -716,9 +736,12 @@ files:
716
736
  - lib/rigor/inference/builtins/struct_catalog.rb
717
737
  - lib/rigor/inference/builtins/time_catalog.rb
718
738
  - lib/rigor/inference/callee_mutation_chain.rb
739
+ - lib/rigor/inference/callee_write_census.rb
719
740
  - lib/rigor/inference/captured_locals.rb
741
+ - lib/rigor/inference/census_foreign_block.rb
720
742
  - lib/rigor/inference/clause_widening.rb
721
743
  - lib/rigor/inference/closure_escape_analyzer.rb
744
+ - lib/rigor/inference/construction_escape.rb
722
745
  - lib/rigor/inference/content_join.rb
723
746
  - lib/rigor/inference/coverage_scanner.rb
724
747
  - lib/rigor/inference/declaration_walk.rb
@@ -732,6 +755,8 @@ files:
732
755
  - lib/rigor/inference/def_return_typer.rb
733
756
  - lib/rigor/inference/define_method_block_self.rb
734
757
  - lib/rigor/inference/definer_resolution.rb
758
+ - lib/rigor/inference/definers_index.rb
759
+ - lib/rigor/inference/direct_ivar_writes.rb
735
760
  - lib/rigor/inference/dynamic_origin.rb
736
761
  - lib/rigor/inference/element_read_widening.rb
737
762
  - lib/rigor/inference/error_info.rb
@@ -743,6 +768,7 @@ files:
743
768
  - lib/rigor/inference/fork_map.rb
744
769
  - lib/rigor/inference/fresh_frame_blocks.rb
745
770
  - lib/rigor/inference/global_write_census.rb
771
+ - lib/rigor/inference/global_writer_reach.rb
746
772
  - lib/rigor/inference/guard_rebinding.rb
747
773
  - lib/rigor/inference/hash_lookup_mutation.rb
748
774
  - lib/rigor/inference/hkt_body.rb
@@ -773,21 +799,28 @@ files:
773
799
  - lib/rigor/inference/match_rebinding/frame.rb
774
800
  - lib/rigor/inference/match_rebinding/operands.rb
775
801
  - lib/rigor/inference/match_rebinding/self_calls.rb
802
+ - lib/rigor/inference/match_rebinding/yielding_match.rb
776
803
  - lib/rigor/inference/method_dispatcher.rb
777
804
  - lib/rigor/inference/method_dispatcher/alias_strict_nominals.rb
805
+ - lib/rigor/inference/method_dispatcher/argument_distribution.rb
778
806
  - lib/rigor/inference/method_dispatcher/argument_nodes.rb
779
807
  - lib/rigor/inference/method_dispatcher/arithmetic_sequence_elements.rb
780
808
  - lib/rigor/inference/method_dispatcher/array_to_h_folding.rb
781
809
  - lib/rigor/inference/method_dispatcher/block_folding.rb
782
810
  - lib/rigor/inference/method_dispatcher/call_context.rb
783
811
  - lib/rigor/inference/method_dispatcher/cgi_folding.rb
812
+ - lib/rigor/inference/method_dispatcher/class_keyed_block_params.rb
784
813
  - lib/rigor/inference/method_dispatcher/constant_folding.rb
814
+ - lib/rigor/inference/method_dispatcher/contested_overloads.rb
815
+ - lib/rigor/inference/method_dispatcher/core_enumerable_receiver.rb
785
816
  - lib/rigor/inference/method_dispatcher/data_folding.rb
817
+ - lib/rigor/inference/method_dispatcher/declared_constructor.rb
786
818
  - lib/rigor/inference/method_dispatcher/facet_distribution.rb
787
819
  - lib/rigor/inference/method_dispatcher/file_folding.rb
788
820
  - lib/rigor/inference/method_dispatcher/hash_transform_keys_folding.rb
789
821
  - lib/rigor/inference/method_dispatcher/imprecise_argument.rb
790
822
  - lib/rigor/inference/method_dispatcher/integer_step_block_params.rb
823
+ - lib/rigor/inference/method_dispatcher/interface_shape.rb
791
824
  - lib/rigor/inference/method_dispatcher/iterator_dispatch.rb
792
825
  - lib/rigor/inference/method_dispatcher/json_folding.rb
793
826
  - lib/rigor/inference/method_dispatcher/kernel_dispatch.rb
@@ -797,6 +830,7 @@ files:
797
830
  - lib/rigor/inference/method_dispatcher/math_folding.rb
798
831
  - lib/rigor/inference/method_dispatcher/member_shape_projection.rb
799
832
  - lib/rigor/inference/method_dispatcher/method_folding.rb
833
+ - lib/rigor/inference/method_dispatcher/no_match_fallback.rb
800
834
  - lib/rigor/inference/method_dispatcher/optional_count.rb
801
835
  - lib/rigor/inference/method_dispatcher/overload_selector.rb
802
836
  - lib/rigor/inference/method_dispatcher/process_folding.rb
@@ -812,6 +846,7 @@ files:
812
846
  - lib/rigor/inference/method_dispatcher/shellwords_folding.rb
813
847
  - lib/rigor/inference/method_dispatcher/singleton_folding.rb
814
848
  - lib/rigor/inference/method_dispatcher/singleton_mixin_dispatch.rb
849
+ - lib/rigor/inference/method_dispatcher/singleton_type_params.rb
815
850
  - lib/rigor/inference/method_dispatcher/splat_arity.rb
816
851
  - lib/rigor/inference/method_dispatcher/struct_folding.rb
817
852
  - lib/rigor/inference/method_dispatcher/struct_materialization.rb
@@ -831,6 +866,7 @@ files:
831
866
  - lib/rigor/inference/operand_walk.rb
832
867
  - lib/rigor/inference/optimistic_origin.rb
833
868
  - lib/rigor/inference/origin_lookup.rb
869
+ - lib/rigor/inference/out_buffer_mutation.rb
834
870
  - lib/rigor/inference/parameter_inference_collector.rb
835
871
  - lib/rigor/inference/pre_eval_constants.rb
836
872
  - lib/rigor/inference/precision_scanner.rb
@@ -847,6 +883,8 @@ files:
847
883
  - lib/rigor/inference/rbs_type_translator.rb
848
884
  - lib/rigor/inference/receiver_alias.rb
849
885
  - lib/rigor/inference/receiver_blind_block.rb
886
+ - lib/rigor/inference/receiver_writer_call.rb
887
+ - lib/rigor/inference/recursion_rebinding.rb
850
888
  - lib/rigor/inference/refine_census.rb
851
889
  - lib/rigor/inference/refine_self.rb
852
890
  - lib/rigor/inference/refined_dispatch.rb
@@ -855,21 +893,29 @@ files:
855
893
  - lib/rigor/inference/refined_dispatch/own_method.rb
856
894
  - lib/rigor/inference/refinement_mutation.rb
857
895
  - lib/rigor/inference/reflective_ivar_write.rb
896
+ - lib/rigor/inference/remover_holder_scan.rb
897
+ - lib/rigor/inference/remover_narrowing.rb
858
898
  - lib/rigor/inference/repeated_or_writes.rb
859
899
  - lib/rigor/inference/return_barrier.rb
860
900
  - lib/rigor/inference/rewrite_mutation.rb
861
901
  - lib/rigor/inference/scope_indexer.rb
862
902
  - lib/rigor/inference/scope_indexer/certainty.rb
863
903
  - lib/rigor/inference/scope_indexer/class_cvars_collector.rb
904
+ - lib/rigor/inference/scope_indexer/constant_ivar_value.rb
864
905
  - lib/rigor/inference/scope_indexer/declared_ivar_types.rb
865
906
  - lib/rigor/inference/scope_indexer/declared_param_writes.rb
866
907
  - lib/rigor/inference/scope_indexer/def_nestings_collector.rb
908
+ - lib/rigor/inference/scope_indexer/derived_param_value.rb
909
+ - lib/rigor/inference/scope_indexer/empty_seed.rb
910
+ - lib/rigor/inference/scope_indexer/ivar_contributions.rb
867
911
  - lib/rigor/inference/scope_indexer/layered_def_nestings.rb
868
912
  - lib/rigor/inference/scope_indexer/member_layouts_collector.rb
869
913
  - lib/rigor/inference/scope_indexer/mixin_accumulator.rb
870
914
  - lib/rigor/inference/scope_indexer/superclasses_collector.rb
871
915
  - lib/rigor/inference/scope_indexer/unseen_ivar_writers.rb
872
916
  - lib/rigor/inference/self_call_ivar_writes.rb
917
+ - lib/rigor/inference/self_preserving_block.rb
918
+ - lib/rigor/inference/set_mutation.rb
873
919
  - lib/rigor/inference/singleton_external_ahead.rb
874
920
  - lib/rigor/inference/singleton_hook_decline.rb
875
921
  - lib/rigor/inference/singleton_object_constant.rb
@@ -881,6 +927,7 @@ files:
881
927
  - lib/rigor/inference/synthetic_method_index.rb
882
928
  - lib/rigor/inference/synthetic_method_scanner.rb
883
929
  - lib/rigor/inference/synthetic_method_scanner/project_members.rb
930
+ - lib/rigor/inference/toplevel_def_census.rb
884
931
  - lib/rigor/inference/unknown_store_widening.rb
885
932
  - lib/rigor/inference/unthreaded_rebinds.rb
886
933
  - lib/rigor/inference/untyped_rejoin.rb
@@ -891,6 +938,7 @@ files:
891
938
  - lib/rigor/language_server/buffer_resolution.rb
892
939
  - lib/rigor/language_server/buffer_table.rb
893
940
  - lib/rigor/language_server/completion_provider.rb
941
+ - lib/rigor/language_server/config_warning_announcer.rb
894
942
  - lib/rigor/language_server/debouncer.rb
895
943
  - lib/rigor/language_server/diagnostic_publisher.rb
896
944
  - lib/rigor/language_server/document_symbol_provider.rb
@@ -908,6 +956,10 @@ files:
908
956
  - lib/rigor/language_server/uri.rb
909
957
  - lib/rigor/lens.rb
910
958
  - lib/rigor/lens/anchor.rb
959
+ - lib/rigor/lens/claims.rb
960
+ - lib/rigor/lens/claims/comparison.rb
961
+ - lib/rigor/lens/claims/request.rb
962
+ - lib/rigor/lens/claims/type_reader.rb
911
963
  - lib/rigor/lens/contract_reader.rb
912
964
  - lib/rigor/lens/document.rb
913
965
  - lib/rigor/lens/file_reader.rb
@@ -916,9 +968,11 @@ files:
916
968
  - lib/rigor/lens/plugins.rb
917
969
  - lib/rigor/lens/run.rb
918
970
  - lib/rigor/lens/slot.rb
971
+ - lib/rigor/library_probe.rb
919
972
  - lib/rigor/mcp.rb
920
973
  - lib/rigor/mcp/loop.rb
921
974
  - lib/rigor/mcp/server.rb
975
+ - lib/rigor/memo_audit.rb
922
976
  - lib/rigor/plugin.rb
923
977
  - lib/rigor/plugin/access_denied_error.rb
924
978
  - lib/rigor/plugin/additional_initializer.rb
@@ -974,7 +1028,11 @@ files:
974
1028
  - lib/rigor/reflection.rb
975
1029
  - lib/rigor/reflection/constant_ancestors.rb
976
1030
  - lib/rigor/reflection/constant_path.rb
1031
+ - lib/rigor/reflection/declaration_collectors.rb
1032
+ - lib/rigor/reflection/declarations.rb
1033
+ - lib/rigor/reflection/project_method.rb
977
1034
  - lib/rigor/rooted_glob.rb
1035
+ - lib/rigor/run_scoped_slots.rb
978
1036
  - lib/rigor/runtime/jit.rb
979
1037
  - lib/rigor/scope.rb
980
1038
  - lib/rigor/scope/discovery_index.rb
@@ -982,10 +1040,12 @@ files:
982
1040
  - lib/rigor/scope/resolution_chain/relevance.rb
983
1041
  - lib/rigor/sig_gen.rb
984
1042
  - lib/rigor/sig_gen/alias_index.rb
1043
+ - lib/rigor/sig_gen/bot_proposal_guard.rb
985
1044
  - lib/rigor/sig_gen/classification.rb
986
1045
  - lib/rigor/sig_gen/declaration_equivalence.rb
987
1046
  - lib/rigor/sig_gen/effect_annotation.rb
988
1047
  - lib/rigor/sig_gen/generator.rb
1048
+ - lib/rigor/sig_gen/generic_header_scan.rb
989
1049
  - lib/rigor/sig_gen/inline_declarations.rb
990
1050
  - lib/rigor/sig_gen/layout_index.rb
991
1051
  - lib/rigor/sig_gen/meta_class_shape.rb
@@ -993,11 +1053,13 @@ files:
993
1053
  - lib/rigor/sig_gen/observation_collector.rb
994
1054
  - lib/rigor/sig_gen/observed_call.rb
995
1055
  - lib/rigor/sig_gen/path_mapper.rb
1056
+ - lib/rigor/sig_gen/platform_guarded_files.rb
996
1057
  - lib/rigor/sig_gen/rbs_validity.rb
997
1058
  - lib/rigor/sig_gen/renderer.rb
998
1059
  - lib/rigor/sig_gen/skip_reason_catalog.rb
999
1060
  - lib/rigor/sig_gen/superclass_spelling.rb
1000
1061
  - lib/rigor/sig_gen/type_elaborator.rb
1062
+ - lib/rigor/sig_gen/type_name_qualification.rb
1001
1063
  - lib/rigor/sig_gen/write_reporter.rb
1002
1064
  - lib/rigor/sig_gen/write_result.rb
1003
1065
  - lib/rigor/sig_gen/writer.rb
@@ -1005,6 +1067,7 @@ files:
1005
1067
  - lib/rigor/source.rb
1006
1068
  - lib/rigor/source/alias_names.rb
1007
1069
  - lib/rigor/source/constant_path.rb
1070
+ - lib/rigor/source/forwardable_delegators.rb
1008
1071
  - lib/rigor/source/literals.rb
1009
1072
  - lib/rigor/source/node_children.rb
1010
1073
  - lib/rigor/source/node_locator.rb
@@ -1032,6 +1095,7 @@ files:
1032
1095
  - lib/rigor/type/float_range.rb
1033
1096
  - lib/rigor/type/hash_shape.rb
1034
1097
  - lib/rigor/type/integer_range.rb
1098
+ - lib/rigor/type/interface.rb
1035
1099
  - lib/rigor/type/intersection.rb
1036
1100
  - lib/rigor/type/maybe.rb
1037
1101
  - lib/rigor/type/nominal.rb
@@ -1055,6 +1119,10 @@ files:
1055
1119
  - lib/rigor/type_node/string_literal.rb
1056
1120
  - lib/rigor/type_node/symbol_literal.rb
1057
1121
  - lib/rigor/type_node/union.rb
1122
+ - lib/rigor/type_of_memo.rb
1123
+ - lib/rigor/type_of_memo/serving.rb
1124
+ - lib/rigor/type_of_memo/stats.rb
1125
+ - lib/rigor/typing_state.rb
1058
1126
  - lib/rigor/value_semantics.rb
1059
1127
  - lib/rigor/version.rb
1060
1128
  - lib/rigortype.rb
@@ -1125,6 +1193,7 @@ files:
1125
1193
  - plugins/rigor-activesupport-core-ext/lib/rigor-activesupport-core-ext.rb
1126
1194
  - plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext.rb
1127
1195
  - plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext/effects.rb
1196
+ - plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext/symbolize_keys.rb
1128
1197
  - plugins/rigor-activesupport-core-ext/sig/active_support/core_ext.rbs
1129
1198
  - plugins/rigor-alba/lib/rigor-alba.rb
1130
1199
  - plugins/rigor-alba/lib/rigor/plugin/alba.rb
@@ -1269,6 +1338,7 @@ files:
1269
1338
  - sig/rigor/analysis/baseline.rbs
1270
1339
  - sig/rigor/analysis/check_rules/always_truthy_condition_collector.rbs
1271
1340
  - sig/rigor/analysis/check_rules/dead_assignment_collector.rbs
1341
+ - sig/rigor/analysis/check_rules/rule_walk.rbs
1272
1342
  - sig/rigor/analysis/dependency_source_inference/gem_resolver.rbs
1273
1343
  - sig/rigor/analysis/dependency_source_inference/index.rbs
1274
1344
  - sig/rigor/analysis/fact_store.rbs
@@ -1276,6 +1346,7 @@ files:
1276
1346
  - sig/rigor/analysis/reachability/scan_cache.rbs
1277
1347
  - sig/rigor/ast.rbs
1278
1348
  - sig/rigor/cache.rbs
1349
+ - sig/rigor/cache/descriptor.rbs
1279
1350
  - sig/rigor/cli/diff_command.rbs
1280
1351
  - sig/rigor/cli/explain_command.rbs
1281
1352
  - sig/rigor/cli/sig_gen_command.rbs
@@ -1309,10 +1380,12 @@ files:
1309
1380
  - sig/rigor/plugin/effect_edge.rbs
1310
1381
  - sig/rigor/plugin/effect_entry_points.rbs
1311
1382
  - sig/rigor/plugin/fact_store.rbs
1383
+ - sig/rigor/plugin/interfaces.rbs
1312
1384
  - sig/rigor/plugin/io_boundary.rbs
1313
1385
  - sig/rigor/plugin/load_error.rbs
1314
1386
  - sig/rigor/plugin/loader.rbs
1315
1387
  - sig/rigor/plugin/manifest.rbs
1388
+ - sig/rigor/plugin/node_context.rbs
1316
1389
  - sig/rigor/plugin/protocol_contract.rbs
1317
1390
  - sig/rigor/plugin/registry.rbs
1318
1391
  - sig/rigor/plugin/services.rbs
@@ -1353,6 +1426,12 @@ files:
1353
1426
  - skills/rigor-project-init/references/05-jit-performance.md
1354
1427
  - skills/rigor-project-init/references/06-agent-contract.md
1355
1428
  - skills/rigor-protection-uplift/SKILL.md
1429
+ - skills/rigor-rbs-contract/SKILL.md
1430
+ - skills/rigor-rbs-contract/references/01-finding-candidates.md
1431
+ - skills/rigor-rbs-contract/references/02-contract-rules.md
1432
+ - skills/rigor-rbs-contract/references/03-target-own-code.md
1433
+ - skills/rigor-rbs-contract/references/04-target-gem-rbs-collection.md
1434
+ - skills/rigor-rbs-contract/references/05-declaration-mutants.md
1356
1435
  - skills/rigor-rbs-setup/SKILL.md
1357
1436
  - skills/rigor-type-oracle/SKILL.md
1358
1437
  - skills/rigor-type-oracle/references/01-oracle-commands.md
@@ -1436,7 +1515,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1436
1515
  - !ruby/object:Gem::Version
1437
1516
  version: '0'
1438
1517
  requirements: []
1439
- rubygems_version: 4.0.10
1518
+ rubygems_version: 3.7.2
1440
1519
  specification_version: 4
1441
1520
  summary: Inference-first static analysis for Ruby.
1442
1521
  test_files: []