rigortype 0.3.8 → 0.4.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 (634) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/data/capability_roles/capability_roles.rbs +36 -0
  4. data/data/core_overlay/enumerable.rbs +51 -0
  5. data/data/core_overlay/enumerator.rbs +84 -0
  6. data/data/core_overlay/hash_rbs3.rbs +41 -0
  7. data/data/core_overlay/process.rbs +40 -0
  8. data/data/core_overlay/string_io.rbs +33 -0
  9. data/data/effects/core.yml +3 -3
  10. data/data/gem_overlay/activesupport/core_ext.rbs +236 -17
  11. data/docs/handbook/02-everyday-types.md +17 -14
  12. data/docs/handbook/03-narrowing.md +132 -14
  13. data/docs/handbook/04-tuples-and-shapes.md +8 -6
  14. data/docs/handbook/05-methods-and-blocks.md +1 -1
  15. data/docs/handbook/06-classes.md +2 -2
  16. data/docs/handbook/07-rbs-and-extended.md +19 -1
  17. data/docs/handbook/10-sorbet.md +9 -10
  18. data/docs/handbook/11-sig-gen.md +525 -13
  19. data/docs/handbook/README.md +1 -1
  20. data/docs/handbook/appendix-elixir.md +2 -2
  21. data/docs/handbook/appendix-go.md +2 -2
  22. data/docs/handbook/appendix-java-csharp.md +2 -2
  23. data/docs/handbook/appendix-mypy.md +2 -2
  24. data/docs/handbook/appendix-phpstan.md +1 -1
  25. data/docs/handbook/appendix-rust.md +1 -1
  26. data/docs/handbook/appendix-type-theory.md +4 -4
  27. data/docs/handbook/appendix-typescript.md +1 -1
  28. data/docs/llms.txt +2 -0
  29. data/docs/manual/02-cli-reference.md +95 -6
  30. data/docs/manual/03-configuration.md +18 -0
  31. data/docs/manual/04-diagnostics.md +15 -0
  32. data/docs/manual/07-plugins.md +15 -5
  33. data/docs/manual/08-skills.md +23 -2
  34. data/docs/manual/10-mcp-server.md +3 -2
  35. data/docs/manual/11-ci.md +9 -0
  36. data/docs/manual/15-type-protection-coverage.md +8 -0
  37. data/docs/manual/16-rbs-extended-annotations.md +46 -8
  38. data/docs/manual/18-removing-dead-code.md +10 -8
  39. data/docs/manual/19-effect-labels.md +10 -0
  40. data/docs/manual/plugins/README.md +7 -0
  41. data/docs/manual/plugins/rigor-actioncable.md +8 -1
  42. data/docs/manual/plugins/rigor-actionmailer.md +7 -0
  43. data/docs/manual/plugins/rigor-actionpack.md +261 -0
  44. data/docs/manual/plugins/rigor-active-model-serializers.md +153 -0
  45. data/docs/manual/plugins/rigor-activejob.md +7 -0
  46. data/docs/manual/plugins/rigor-activerecord.md +138 -4
  47. data/docs/manual/plugins/rigor-activestorage.md +8 -1
  48. data/docs/manual/plugins/rigor-activesupport-core-ext.md +43 -7
  49. data/docs/manual/plugins/rigor-grape.md +106 -0
  50. data/docs/manual/plugins/rigor-graphql.md +23 -2
  51. data/docs/manual/plugins/rigor-pundit.md +8 -1
  52. data/docs/manual/plugins/rigor-rails-i18n.md +10 -5
  53. data/docs/manual/plugins/rigor-rails-routes.md +7 -0
  54. data/docs/manual/plugins/rigor-rbs-inline.md +229 -1
  55. data/docs/manual/plugins/rigor-sidekiq.md +8 -1
  56. data/docs/manual/plugins/rigor-sorbet.md +21 -5
  57. data/exe/rigor +19 -4
  58. data/lib/rigor/analysis/baseline.rb +3 -3
  59. data/lib/rigor/analysis/check_rules/always_truthy_condition_collector.rb +1 -1
  60. data/lib/rigor/analysis/check_rules/dead_version_guard_arms.rb +1 -5
  61. data/lib/rigor/analysis/check_rules/declaration_sourced_guard.rb +167 -2
  62. data/lib/rigor/analysis/check_rules/ivar_write_collector.rb +10 -2
  63. data/lib/rigor/analysis/check_rules/lexical_method_sites.rb +189 -0
  64. data/lib/rigor/analysis/check_rules/main_pass_collector.rb +6 -4
  65. data/lib/rigor/analysis/check_rules/published_constant_guard.rb +15 -6
  66. data/lib/rigor/analysis/check_rules/rule_ids.rb +21 -6
  67. data/lib/rigor/analysis/check_rules/rule_walk.rb +41 -5
  68. data/lib/rigor/analysis/check_rules/self_closedness_scanner.rb +1 -1
  69. data/lib/rigor/analysis/check_rules/shadowed_rescue_collector.rb +1 -1
  70. data/lib/rigor/analysis/check_rules/source_arity.rb +323 -0
  71. data/lib/rigor/analysis/check_rules/special_global_setters.rb +146 -0
  72. data/lib/rigor/analysis/check_rules/unreachable_clause_collector.rb +38 -4
  73. data/lib/rigor/analysis/check_rules/void_value_use_collector.rb +0 -1
  74. data/lib/rigor/analysis/check_rules.rb +718 -79
  75. data/lib/rigor/analysis/crash_signature.rb +8 -24
  76. data/lib/rigor/analysis/dependency_recorder.rb +23 -0
  77. data/lib/rigor/analysis/dependency_source_inference/boundary_cross_reporter.rb +1 -1
  78. data/lib/rigor/analysis/dependency_source_inference/builder.rb +0 -2
  79. data/lib/rigor/analysis/dependency_source_inference/gem_resolver.rb +0 -2
  80. data/lib/rigor/analysis/dependency_source_inference/index.rb +5 -5
  81. data/lib/rigor/analysis/dependency_source_inference/return_type_heuristic.rb +1 -2
  82. data/lib/rigor/analysis/dependency_source_inference/walker.rb +4 -4
  83. data/lib/rigor/analysis/effects_cache_probe.rb +3 -4
  84. data/lib/rigor/analysis/erb_template_detector.rb +1 -2
  85. data/lib/rigor/analysis/fact_store.rb +15 -1
  86. data/lib/rigor/analysis/incremental.rb +42 -0
  87. data/lib/rigor/analysis/incremental_session.rb +117 -26
  88. data/lib/rigor/analysis/plugin_fact_fingerprint.rb +0 -1
  89. data/lib/rigor/analysis/project_scan.rb +11 -1
  90. data/lib/rigor/analysis/reachability/graph.rb +3 -5
  91. data/lib/rigor/analysis/reachability/plugin_roots.rb +5 -5
  92. data/lib/rigor/analysis/reachability/project_files.rb +2 -2
  93. data/lib/rigor/analysis/reachability/scan.rb +5 -5
  94. data/lib/rigor/analysis/reachability/scan_cache.rb +3 -2
  95. data/lib/rigor/analysis/reachability/signature_scan.rb +2 -2
  96. data/lib/rigor/analysis/result.rb +1 -3
  97. data/lib/rigor/analysis/rule_catalog.rb +131 -1
  98. data/lib/rigor/analysis/run_cache_key.rb +21 -12
  99. data/lib/rigor/analysis/run_cache_probe.rb +3 -5
  100. data/lib/rigor/analysis/runner/buffer_pool_dispatcher.rb +6 -8
  101. data/lib/rigor/analysis/runner/declaration_position.rb +1 -2
  102. data/lib/rigor/analysis/runner/diagnostic_aggregator.rb +340 -33
  103. data/lib/rigor/analysis/runner/effect_annotation_residual_pass.rb +2 -3
  104. data/lib/rigor/analysis/runner/effect_envelope_pass.rb +18 -14
  105. data/lib/rigor/analysis/runner/pool_coordinator.rb +357 -97
  106. data/lib/rigor/analysis/runner/project_pre_passes.rb +38 -13
  107. data/lib/rigor/analysis/runner/run_snapshots.rb +6 -1
  108. data/lib/rigor/analysis/runner.rb +407 -51
  109. data/lib/rigor/analysis/template_unit_collector.rb +303 -0
  110. data/lib/rigor/analysis/template_unit_paths.rb +91 -0
  111. data/lib/rigor/analysis/template_unit_positions.rb +293 -0
  112. data/lib/rigor/analysis/template_units.rb +399 -0
  113. data/lib/rigor/analysis/worker_session.rb +62 -20
  114. data/lib/rigor/bleeding_edge.rb +10 -24
  115. data/lib/rigor/builtins/hkt_builtins.rb +3 -2
  116. data/lib/rigor/builtins/imported_refinements.rb +159 -21
  117. data/lib/rigor/builtins/predefined_constant_refinements.rb +5 -7
  118. data/lib/rigor/builtins/regex_refinement.rb +21 -13
  119. data/lib/rigor/builtins/static_return_refinements.rb +7 -6
  120. data/lib/rigor/cache/annotation_location.rb +2 -4
  121. data/lib/rigor/cache/descriptor.rb +63 -20
  122. data/lib/rigor/cache/engine_source.rb +33 -5
  123. data/lib/rigor/cache/file_digest.rb +9 -1
  124. data/lib/rigor/cache/incremental_snapshot.rb +72 -6
  125. data/lib/rigor/cache/rbs_cache_producer.rb +4 -0
  126. data/lib/rigor/cache/rbs_class_ancestor_table.rb +0 -3
  127. data/lib/rigor/cache/rbs_class_type_param_names.rb +0 -3
  128. data/lib/rigor/cache/rbs_constant_table.rb +0 -3
  129. data/lib/rigor/cache/rbs_descriptor.rb +112 -14
  130. data/lib/rigor/cache/rbs_environment.rb +8 -4
  131. data/lib/rigor/cache/rbs_known_class_names.rb +0 -3
  132. data/lib/rigor/cache/store.rb +76 -32
  133. data/lib/rigor/ci_detector.rb +1 -0
  134. data/lib/rigor/cli/annotate_command.rb +5 -6
  135. data/lib/rigor/cli/check_command.rb +57 -10
  136. data/lib/rigor/cli/check_invocation.rb +6 -11
  137. data/lib/rigor/cli/check_runner_factory.rb +1 -5
  138. data/lib/rigor/cli/coverage_command.rb +1 -1
  139. data/lib/rigor/cli/coverage_mutation.rb +12 -3
  140. data/lib/rigor/cli/coverage_scan.rb +1 -5
  141. data/lib/rigor/cli/diff_command.rb +1 -1
  142. data/lib/rigor/cli/doc_links.rb +4 -4
  143. data/lib/rigor/cli/docs_command.rb +6 -6
  144. data/lib/rigor/cli/doctor_command.rb +85 -38
  145. data/lib/rigor/cli/effects_command.rb +2 -2
  146. data/lib/rigor/cli/effects_diff_renderer.rb +3 -3
  147. data/lib/rigor/cli/effects_snapshot_command.rb +1 -1
  148. data/lib/rigor/cli/explain_command.rb +34 -1
  149. data/lib/rigor/cli/fused_protection_report.rb +7 -1
  150. data/lib/rigor/cli/lsp_command.rb +1 -1
  151. data/lib/rigor/cli/mcp_command.rb +1 -1
  152. data/lib/rigor/cli/measurement_integrity_warning.rb +4 -5
  153. data/lib/rigor/cli/mutation_fork_scan.rb +6 -6
  154. data/lib/rigor/cli/mutation_protection_report.rb +7 -1
  155. data/lib/rigor/cli/plugin_command.rb +4 -4
  156. data/lib/rigor/cli/plugins_command.rb +2 -1
  157. data/lib/rigor/cli/prism_colorizer.rb +1 -2
  158. data/lib/rigor/cli/protection_fork_scan.rb +6 -6
  159. data/lib/rigor/cli/show_bleedingedge_command.rb +1 -1
  160. data/lib/rigor/cli/sig_gen_command.rb +212 -31
  161. data/lib/rigor/cli/skill_command.rb +2 -2
  162. data/lib/rigor/cli/skill_deep_probe.rb +4 -4
  163. data/lib/rigor/cli/skill_describe.rb +35 -35
  164. data/lib/rigor/cli/trace_command.rb +4 -4
  165. data/lib/rigor/cli/trace_renderer.rb +5 -6
  166. data/lib/rigor/cli/triage_command.rb +1 -1
  167. data/lib/rigor/cli/type_of_command.rb +29 -11
  168. data/lib/rigor/cli/type_of_renderer.rb +20 -9
  169. data/lib/rigor/cli/type_of_template_probe.rb +189 -0
  170. data/lib/rigor/cli/type_scan_command.rb +4 -4
  171. data/lib/rigor/cli/unused_command.rb +11 -3
  172. data/lib/rigor/cli/upgrade_command.rb +1 -1
  173. data/lib/rigor/cli.rb +89 -9
  174. data/lib/rigor/config_audit.rb +30 -5
  175. data/lib/rigor/configuration/severity_profile.rb +25 -9
  176. data/lib/rigor/configuration.rb +109 -7
  177. data/lib/rigor/effects/ancestry_recorder.rb +191 -0
  178. data/lib/rigor/effects/attribution.rb +12 -5
  179. data/lib/rigor/effects/callee_rule.rb +368 -0
  180. data/lib/rigor/effects/catalog.rb +7 -4
  181. data/lib/rigor/effects/collector.rb +11 -5
  182. data/lib/rigor/effects/config_envelopes.rb +15 -10
  183. data/lib/rigor/effects/definition_context.rb +179 -0
  184. data/lib/rigor/effects/definition_lines.rb +25 -6
  185. data/lib/rigor/effects/effect_table.rb +11 -4
  186. data/lib/rigor/effects/entry_points.rb +0 -2
  187. data/lib/rigor/effects/envelope_check.rb +9 -9
  188. data/lib/rigor/effects/envelope_index.rb +20 -8
  189. data/lib/rigor/effects/file_collection.rb +59 -5
  190. data/lib/rigor/effects/framework_units.rb +5 -7
  191. data/lib/rigor/effects/identity.rb +20 -6
  192. data/lib/rigor/effects/inline_anchor.rb +7 -7
  193. data/lib/rigor/effects/label_intent.rb +3 -4
  194. data/lib/rigor/effects/liskov_check.rb +8 -8
  195. data/lib/rigor/effects/local_ownership.rb +38 -12
  196. data/lib/rigor/effects/method_key.rb +22 -1
  197. data/lib/rigor/effects/mutation_classifier.rb +23 -12
  198. data/lib/rigor/effects/plugin_facts.rb +47 -37
  199. data/lib/rigor/effects/propagator.rb +297 -19
  200. data/lib/rigor/effects/registry.rb +1 -1
  201. data/lib/rigor/effects/scanner.rb +122 -73
  202. data/lib/rigor/effects/signature_sources.rb +4 -6
  203. data/lib/rigor/effects/snapshot.rb +12 -11
  204. data/lib/rigor/effects/snapshot_diff.rb +1 -1
  205. data/lib/rigor/effects/summary.rb +27 -4
  206. data/lib/rigor/effects/unit_scan.rb +393 -38
  207. data/lib/rigor/effects/unknown_label_check.rb +3 -8
  208. data/lib/rigor/effects/unknown_label_report.rb +3 -4
  209. data/lib/rigor/effects/visibility.rb +101 -0
  210. data/lib/rigor/environment/bundle_sig_discovery.rb +6 -6
  211. data/lib/rigor/environment/class_registry.rb +3 -1
  212. data/lib/rigor/environment/failure_slot.rb +2 -2
  213. data/lib/rigor/environment/installed_gem_set.rb +85 -0
  214. data/lib/rigor/environment/lockfile_resolver.rb +68 -4
  215. data/lib/rigor/environment/member_consistency/comparator.rb +708 -0
  216. data/lib/rigor/environment/member_consistency.rb +298 -0
  217. data/lib/rigor/environment/missing_gem_constant_index.rb +4 -4
  218. data/lib/rigor/environment/rbs_collection_discovery.rb +5 -5
  219. data/lib/rigor/environment/rbs_coverage_report.rb +5 -5
  220. data/lib/rigor/environment/rbs_hierarchy.rb +3 -1
  221. data/lib/rigor/environment/rbs_loader.rb +674 -79
  222. data/lib/rigor/environment.rb +174 -24
  223. data/lib/rigor/flow_contribution/merger.rb +0 -2
  224. data/lib/rigor/flow_contribution.rb +11 -13
  225. data/lib/rigor/hashing/xxh3.rb +264 -0
  226. data/lib/rigor/inference/acceptance.rb +292 -17
  227. data/lib/rigor/inference/block_auto_splat.rb +216 -0
  228. data/lib/rigor/inference/block_call_timing.rb +338 -0
  229. data/lib/rigor/inference/block_parameter_binder.rb +75 -30
  230. data/lib/rigor/inference/block_repetition.rb +71 -0
  231. data/lib/rigor/inference/body_fixpoint.rb +7 -6
  232. data/lib/rigor/inference/budget_trace.rb +3 -6
  233. data/lib/rigor/inference/builtins/method_catalog.rb +2 -1
  234. data/lib/rigor/inference/builtins/string_catalog.rb +1 -1
  235. data/lib/rigor/inference/captured_locals.rb +389 -18
  236. data/lib/rigor/inference/closure_escape_analyzer.rb +159 -17
  237. data/lib/rigor/inference/content_join.rb +200 -27
  238. data/lib/rigor/inference/coverage_scanner.rb +4 -6
  239. data/lib/rigor/inference/def_return_typer.rb +11 -7
  240. data/lib/rigor/inference/define_method_block_self.rb +64 -0
  241. data/lib/rigor/inference/dynamic_origin.rb +1 -1
  242. data/lib/rigor/inference/element_read_widening.rb +180 -0
  243. data/lib/rigor/inference/error_info.rb +196 -0
  244. data/lib/rigor/inference/expression_typer.rb +2124 -468
  245. data/lib/rigor/inference/external_ancestor_resolution.rb +267 -0
  246. data/lib/rigor/inference/fork_map.rb +5 -7
  247. data/lib/rigor/inference/fresh_frame_blocks.rb +127 -0
  248. data/lib/rigor/inference/global_write_census.rb +239 -0
  249. data/lib/rigor/inference/guard_rebinding.rb +447 -0
  250. data/lib/rigor/inference/hash_lookup_mutation.rb +88 -0
  251. data/lib/rigor/inference/hkt_reducer.rb +2 -3
  252. data/lib/rigor/inference/hkt_registry.rb +4 -7
  253. data/lib/rigor/inference/index_write_widening.rb +16 -7
  254. data/lib/rigor/inference/indexed_narrowing.rb +61 -9
  255. data/lib/rigor/inference/jump_targets.rb +82 -0
  256. data/lib/rigor/inference/last_line/implicit_self.rb +210 -0
  257. data/lib/rigor/inference/last_line/self_evidence.rb +329 -0
  258. data/lib/rigor/inference/last_line.rb +340 -0
  259. data/lib/rigor/inference/last_status.rb +144 -0
  260. data/lib/rigor/inference/macro_block_self_type.rb +168 -21
  261. data/lib/rigor/inference/match_rebinding/calls.rb +281 -0
  262. data/lib/rigor/inference/match_rebinding/frame.rb +148 -0
  263. data/lib/rigor/inference/match_rebinding/operands.rb +236 -0
  264. data/lib/rigor/inference/match_rebinding/self_calls.rb +83 -0
  265. data/lib/rigor/inference/match_rebinding.rb +392 -0
  266. data/lib/rigor/inference/method_dispatcher/alias_strict_nominals.rb +36 -0
  267. data/lib/rigor/inference/method_dispatcher/block_folding.rb +87 -33
  268. data/lib/rigor/inference/method_dispatcher/cgi_folding.rb +1 -1
  269. data/lib/rigor/inference/method_dispatcher/constant_folding.rb +305 -19
  270. data/lib/rigor/inference/method_dispatcher/data_folding.rb +1 -1
  271. data/lib/rigor/inference/method_dispatcher/facet_distribution.rb +147 -0
  272. data/lib/rigor/inference/method_dispatcher/file_folding.rb +1 -1
  273. data/lib/rigor/inference/method_dispatcher/hash_transform_keys_folding.rb +191 -0
  274. data/lib/rigor/inference/method_dispatcher/iterator_dispatch.rb +6 -2
  275. data/lib/rigor/inference/method_dispatcher/json_folding.rb +1 -1
  276. data/lib/rigor/inference/method_dispatcher/kernel_dispatch.rb +7 -1
  277. data/lib/rigor/inference/method_dispatcher/match_data_folding.rb +159 -0
  278. data/lib/rigor/inference/method_dispatcher/math_folding.rb +41 -3
  279. data/lib/rigor/inference/method_dispatcher/method_folding.rb +2 -5
  280. data/lib/rigor/inference/method_dispatcher/overload_selector.rb +165 -111
  281. data/lib/rigor/inference/method_dispatcher/process_folding.rb +56 -0
  282. data/lib/rigor/inference/method_dispatcher/proven_overload.rb +72 -0
  283. data/lib/rigor/inference/method_dispatcher/random_folding.rb +82 -0
  284. data/lib/rigor/inference/method_dispatcher/rbs_dispatch.rb +1046 -69
  285. data/lib/rigor/inference/method_dispatcher/receiver_affinity.rb +25 -4
  286. data/lib/rigor/inference/method_dispatcher/reduce_folding.rb +2 -8
  287. data/lib/rigor/inference/method_dispatcher/regexp_folding.rb +1 -1
  288. data/lib/rigor/inference/method_dispatcher/self_substitute.rb +142 -0
  289. data/lib/rigor/inference/method_dispatcher/set_folding.rb +1 -1
  290. data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +129 -54
  291. data/lib/rigor/inference/method_dispatcher/shellwords_folding.rb +1 -1
  292. data/lib/rigor/inference/method_dispatcher/singleton_mixin_dispatch.rb +1 -2
  293. data/lib/rigor/inference/method_dispatcher/struct_folding.rb +5 -6
  294. data/lib/rigor/inference/method_dispatcher/struct_materialization.rb +85 -4
  295. data/lib/rigor/inference/method_dispatcher/time_folding.rb +1 -1
  296. data/lib/rigor/inference/method_dispatcher/universal_object_dispatch.rb +1 -2
  297. data/lib/rigor/inference/method_dispatcher/uri_folding.rb +1 -1
  298. data/lib/rigor/inference/method_dispatcher.rb +225 -25
  299. data/lib/rigor/inference/method_parameter_binder.rb +12 -9
  300. data/lib/rigor/inference/multi_target_binder.rb +341 -55
  301. data/lib/rigor/inference/mutation_rejoin.rb +171 -0
  302. data/lib/rigor/inference/mutation_widening.rb +156 -85
  303. data/lib/rigor/inference/narrowing.rb +835 -162
  304. data/lib/rigor/inference/operand_effects.rb +167 -0
  305. data/lib/rigor/inference/operand_walk.rb +88 -0
  306. data/lib/rigor/inference/optimistic_origin.rb +153 -16
  307. data/lib/rigor/inference/origin_lookup.rb +2 -3
  308. data/lib/rigor/inference/parameter_inference_collector.rb +7 -7
  309. data/lib/rigor/inference/pre_eval_constants.rb +6 -5
  310. data/lib/rigor/inference/precision_scanner.rb +3 -4
  311. data/lib/rigor/inference/project_method_ownership.rb +136 -0
  312. data/lib/rigor/inference/project_patched_methods.rb +9 -4
  313. data/lib/rigor/inference/project_patched_scanner.rb +10 -6
  314. data/lib/rigor/inference/protection_scanner.rb +1 -2
  315. data/lib/rigor/inference/range_constant.rb +57 -0
  316. data/lib/rigor/inference/rbs_type_translator.rb +49 -11
  317. data/lib/rigor/inference/receiver_alias.rb +93 -4
  318. data/lib/rigor/inference/receiver_blind_block.rb +219 -0
  319. data/lib/rigor/inference/refinement_mutation.rb +76 -0
  320. data/lib/rigor/inference/repeated_or_writes.rb +463 -0
  321. data/lib/rigor/inference/return_barrier.rb +54 -0
  322. data/lib/rigor/inference/rewrite_mutation.rb +120 -0
  323. data/lib/rigor/inference/scope_indexer.rb +5228 -627
  324. data/lib/rigor/inference/statement_evaluator.rb +3452 -595
  325. data/lib/rigor/inference/stored_block_call.rb +54 -0
  326. data/lib/rigor/inference/string_mutation.rb +97 -0
  327. data/lib/rigor/inference/struct_fold_safety.rb +6 -7
  328. data/lib/rigor/inference/synthetic_method_index.rb +1 -2
  329. data/lib/rigor/inference/synthetic_method_scanner.rb +4 -6
  330. data/lib/rigor/inference/unknown_store_widening.rb +200 -0
  331. data/lib/rigor/inference/unthreaded_rebinds.rb +282 -0
  332. data/lib/rigor/inference/version_guard.rb +28 -21
  333. data/lib/rigor/inference/void_origin.rb +3 -3
  334. data/lib/rigor/inference/void_tail_summary.rb +2 -4
  335. data/lib/rigor/language_server/buffer_table.rb +4 -4
  336. data/lib/rigor/language_server/completion_provider.rb +1 -1
  337. data/lib/rigor/language_server/debouncer.rb +0 -1
  338. data/lib/rigor/language_server/diagnostic_publisher.rb +7 -6
  339. data/lib/rigor/language_server/document_symbol_provider.rb +1 -1
  340. data/lib/rigor/language_server/folding_range_provider.rb +1 -1
  341. data/lib/rigor/language_server/hover_provider.rb +1 -1
  342. data/lib/rigor/language_server/hover_renderer.rb +4 -4
  343. data/lib/rigor/language_server/incremental_sync.rb +6 -6
  344. data/lib/rigor/language_server/project_context.rb +7 -8
  345. data/lib/rigor/language_server/publish_batcher.rb +2 -2
  346. data/lib/rigor/language_server/selection_range_provider.rb +2 -2
  347. data/lib/rigor/language_server/server.rb +9 -9
  348. data/lib/rigor/language_server/signature_help_provider.rb +1 -1
  349. data/lib/rigor/language_server/uri.rb +1 -1
  350. data/lib/rigor/mcp/server.rb +2 -1
  351. data/lib/rigor/plugin/base.rb +258 -26
  352. data/lib/rigor/plugin/box_probe.rb +91 -0
  353. data/lib/rigor/plugin/bundled_catalog.rb +167 -0
  354. data/lib/rigor/plugin/effect_attribution.rb +65 -11
  355. data/lib/rigor/plugin/effect_entry_points.rb +3 -3
  356. data/lib/rigor/plugin/fact_store.rb +6 -6
  357. data/lib/rigor/plugin/io_boundary.rb +93 -8
  358. data/lib/rigor/plugin/isolation.rb +29 -6
  359. data/lib/rigor/plugin/loader.rb +33 -13
  360. data/lib/rigor/plugin/macro/block_as_method.rb +45 -6
  361. data/lib/rigor/plugin/macro/heredoc_template.rb +1 -1
  362. data/lib/rigor/plugin/macro/trait_registry.rb +1 -1
  363. data/lib/rigor/plugin/manifest.rb +94 -11
  364. data/lib/rigor/plugin/registry.rb +76 -12
  365. data/lib/rigor/plugin/source_rbs_synthesis_reporter.rb +21 -4
  366. data/lib/rigor/plugin/template_unit.rb +196 -0
  367. data/lib/rigor/plugin/trust_policy.rb +2 -4
  368. data/lib/rigor/plugin/type_node_resolver.rb +3 -3
  369. data/lib/rigor/plugin.rb +1 -0
  370. data/lib/rigor/plugin_gap_advisory.rb +96 -0
  371. data/lib/rigor/project_environment.rb +138 -0
  372. data/lib/rigor/protection/analysis_guard.rb +93 -14
  373. data/lib/rigor/protection/closure_kill_oracle.rb +67 -23
  374. data/lib/rigor/protection/dependency_closure.rb +5 -8
  375. data/lib/rigor/protection/diagnostic_oracle.rb +2 -2
  376. data/lib/rigor/protection/discovery_seed.rb +14 -12
  377. data/lib/rigor/protection/kill_signature.rb +1 -4
  378. data/lib/rigor/protection/measurement_integrity.rb +1 -3
  379. data/lib/rigor/protection/mutation_cache.rb +7 -11
  380. data/lib/rigor/protection/mutation_scanner.rb +12 -15
  381. data/lib/rigor/protection/mutator.rb +2 -1
  382. data/lib/rigor/protection/test_suite_oracle.rb +5 -5
  383. data/lib/rigor/rbs_extended/conformance_checker.rb +4 -3
  384. data/lib/rigor/rbs_extended/envelope_scanner.rb +4 -6
  385. data/lib/rigor/rbs_extended/reporter.rb +36 -10
  386. data/lib/rigor/rbs_extended.rb +88 -21
  387. data/lib/rigor/reflection/constant_ancestors.rb +97 -0
  388. data/lib/rigor/reflection/constant_path.rb +139 -0
  389. data/lib/rigor/reflection.rb +93 -110
  390. data/lib/rigor/runtime/jit.rb +6 -8
  391. data/lib/rigor/scope/discovery_index.rb +165 -2
  392. data/lib/rigor/scope.rb +1041 -32
  393. data/lib/rigor/sig_gen/alias_index.rb +289 -0
  394. data/lib/rigor/sig_gen/classification.rb +22 -5
  395. data/lib/rigor/sig_gen/declaration_equivalence.rb +127 -0
  396. data/lib/rigor/sig_gen/effect_annotation.rb +202 -0
  397. data/lib/rigor/sig_gen/generator.rb +673 -53
  398. data/lib/rigor/sig_gen/inline_declarations.rb +184 -0
  399. data/lib/rigor/sig_gen/layout_index.rb +3 -4
  400. data/lib/rigor/sig_gen/meta_class_shape.rb +3 -5
  401. data/lib/rigor/sig_gen/method_candidate.rb +47 -3
  402. data/lib/rigor/sig_gen/observation_collector.rb +18 -16
  403. data/lib/rigor/sig_gen/path_mapper.rb +4 -6
  404. data/lib/rigor/sig_gen/rbs_validity.rb +4 -4
  405. data/lib/rigor/sig_gen/renderer.rb +128 -14
  406. data/lib/rigor/sig_gen/skip_reason_catalog.rb +154 -0
  407. data/lib/rigor/sig_gen/superclass_spelling.rb +27 -0
  408. data/lib/rigor/sig_gen/type_elaborator.rb +1 -3
  409. data/lib/rigor/sig_gen/write_result.rb +19 -3
  410. data/lib/rigor/sig_gen/writer.rb +189 -41
  411. data/lib/rigor/sig_gen.rb +3 -0
  412. data/lib/rigor/signature_path_audit.rb +153 -6
  413. data/lib/rigor/source/literals.rb +0 -23
  414. data/lib/rigor/source/node_children.rb +0 -2
  415. data/lib/rigor/source/node_locator.rb +5 -11
  416. data/lib/rigor/source/node_walker.rb +0 -6
  417. data/lib/rigor/source/parameter_envelope.rb +72 -0
  418. data/lib/rigor/source.rb +1 -0
  419. data/lib/rigor/triage/catalogue.rb +1 -3
  420. data/lib/rigor/triage.rb +3 -5
  421. data/lib/rigor/type/accepts_result.rb +24 -6
  422. data/lib/rigor/type/combinator.rb +144 -5
  423. data/lib/rigor/type/data_class.rb +2 -2
  424. data/lib/rigor/type/data_instance.rb +4 -4
  425. data/lib/rigor/type/difference.rb +1 -0
  426. data/lib/rigor/type/float_range.rb +128 -0
  427. data/lib/rigor/type/hash_shape.rb +6 -6
  428. data/lib/rigor/type/integer_range.rb +13 -8
  429. data/lib/rigor/type/nominal.rb +8 -2
  430. data/lib/rigor/type/refined.rb +4 -3
  431. data/lib/rigor/type/struct_class.rb +3 -3
  432. data/lib/rigor/type/struct_instance.rb +4 -4
  433. data/lib/rigor/type.rb +1 -0
  434. data/lib/rigor/type_node/generic.rb +1 -1
  435. data/lib/rigor/type_node/range_literal.rb +25 -0
  436. data/lib/rigor/type_node/resolver_chain.rb +1 -1
  437. data/lib/rigor/type_node.rb +1 -0
  438. data/lib/rigor/version.rb +1 -1
  439. data/lib/rigor.rb +1 -0
  440. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable/analyzer.rb +0 -4
  441. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable/channel_discoverer.rb +0 -1
  442. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable/channel_index.rb +0 -2
  443. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable/effects.rb +1 -0
  444. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable.rb +10 -5
  445. data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer/analyzer.rb +0 -4
  446. data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer/mailer_discoverer.rb +3 -5
  447. data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer/mailer_index.rb +1 -4
  448. data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer.rb +14 -4
  449. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/analyzer.rb +32 -30
  450. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/controller_discoverer.rb +0 -1
  451. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/controller_index.rb +1 -3
  452. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/controller_scan.rb +96 -0
  453. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/effects.rb +65 -8
  454. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/erb_compiler.rb +270 -0
  455. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/render_locals.rb +402 -0
  456. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/view_assigns.rb +370 -0
  457. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/view_units.rb +132 -0
  458. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack.rb +264 -3
  459. data/plugins/rigor-actionpack/sig/action_controller.rbs +71 -0
  460. data/plugins/rigor-actionpack/sig/action_view.rbs +43 -0
  461. data/plugins/rigor-active-model-serializers/lib/rigor/plugin/active_model_serializers/serializer_discoverer.rb +220 -0
  462. data/plugins/rigor-active-model-serializers/lib/rigor/plugin/active_model_serializers/serializer_index.rb +56 -0
  463. data/plugins/rigor-active-model-serializers/lib/rigor/plugin/active_model_serializers.rb +263 -0
  464. data/plugins/rigor-active-model-serializers/lib/rigor-active-model-serializers.rb +7 -0
  465. data/plugins/rigor-active-model-serializers/sig/active_model_serializers.rbs +45 -0
  466. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/analyzer.rb +0 -4
  467. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/effects.rb +2 -1
  468. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/job_discoverer.rb +0 -1
  469. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/job_index.rb +0 -2
  470. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/recurring_scan.rb +1 -1
  471. data/plugins/rigor-activejob/lib/rigor/plugin/activejob.rb +10 -5
  472. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/analyzer.rb +35 -3
  473. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/effects.rb +72 -12
  474. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_discoverer.rb +383 -7
  475. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_index.rb +14 -6
  476. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_parser.rb +1 -2
  477. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/structure_sql_parser.rb +1 -2
  478. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord.rb +322 -41
  479. data/plugins/rigor-activerecord/sig/active_record/framework.rbs +123 -0
  480. data/plugins/rigor-activerecord/sig/active_record/relation.rbs +206 -31
  481. data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage.rb +26 -14
  482. data/plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext/effects.rb +9 -2
  483. data/plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext.rb +9 -2
  484. data/plugins/rigor-activesupport-core-ext/sig/active_support/core_ext.rbs +290 -19
  485. data/plugins/rigor-devise/lib/rigor/plugin/devise.rb +1 -0
  486. data/plugins/rigor-dry-monads/lib/rigor/plugin/dry_monads.rb +3 -0
  487. data/plugins/rigor-dry-schema/lib/rigor/plugin/dry_schema/schema_scanner.rb +9 -7
  488. data/plugins/rigor-dry-schema/lib/rigor/plugin/dry_schema.rb +7 -3
  489. data/plugins/rigor-dry-struct/lib/rigor/plugin/dry_struct.rb +1 -0
  490. data/plugins/rigor-dry-types/lib/rigor/plugin/dry_types/alias_scanner.rb +8 -6
  491. data/plugins/rigor-dry-types/lib/rigor/plugin/dry_types.rb +11 -7
  492. data/plugins/rigor-dry-validation/lib/rigor/plugin/dry_validation/contract_scanner.rb +13 -11
  493. data/plugins/rigor-dry-validation/lib/rigor/plugin/dry_validation.rb +9 -4
  494. data/plugins/rigor-ethon/lib/rigor/plugin/ethon.rb +2 -0
  495. data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot/analyzer.rb +0 -5
  496. data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot/factory_discoverer.rb +0 -1
  497. data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot/factory_index.rb +0 -1
  498. data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot.rb +8 -1
  499. data/plugins/rigor-ffi/lib/rigor/plugin/ffi/types.rb +1 -1
  500. data/plugins/rigor-ffi/lib/rigor/plugin/ffi.rb +36 -4
  501. data/plugins/rigor-ffi-rzmq/lib/rigor/plugin/ffi_rzmq.rb +1 -0
  502. data/plugins/rigor-grape/lib/rigor/plugin/grape.rb +141 -0
  503. data/plugins/rigor-grape/lib/rigor-grape.rb +6 -0
  504. data/plugins/rigor-grape/sig/grape.rbs +263 -0
  505. data/plugins/rigor-graphql/lib/rigor/plugin/graphql/type_scanner.rb +8 -6
  506. data/plugins/rigor-graphql/lib/rigor/plugin/graphql.rb +78 -5
  507. data/plugins/rigor-graphql/sig/graphql.rbs +485 -0
  508. data/plugins/rigor-hanami/lib/rigor/plugin/hanami.rb +1 -0
  509. data/plugins/rigor-mangrove/lib/rigor/plugin/mangrove.rb +2 -1
  510. data/plugins/rigor-minitest/lib/rigor/plugin/minitest/assertion_analyzer.rb +2 -3
  511. data/plugins/rigor-minitest/lib/rigor/plugin/minitest.rb +1 -0
  512. data/plugins/rigor-pundit/lib/rigor/plugin/pundit/analyzer.rb +0 -5
  513. data/plugins/rigor-pundit/lib/rigor/plugin/pundit/authorization_scan.rb +2 -2
  514. data/plugins/rigor-pundit/lib/rigor/plugin/pundit/policy_discoverer.rb +0 -1
  515. data/plugins/rigor-pundit/lib/rigor/plugin/pundit/policy_index.rb +0 -1
  516. data/plugins/rigor-pundit/lib/rigor/plugin/pundit.rb +12 -7
  517. data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/analyzer.rb +0 -12
  518. data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/locale_index.rb +1 -3
  519. data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/locale_loader.rb +0 -1
  520. data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n.rb +36 -37
  521. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/acronyms.rb +5 -5
  522. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/analyzer.rb +0 -10
  523. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/devise_routes.rb +5 -3
  524. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/doorkeeper_routes.rb +3 -2
  525. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/grape_api_discoverer.rb +2 -2
  526. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/helper_discoverer.rb +2 -2
  527. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/helper_table.rb +9 -10
  528. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/routes_parser.rb +2 -3
  529. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes.rb +10 -17
  530. data/plugins/rigor-railties/lib/rigor/plugin/railties.rb +1 -0
  531. data/plugins/rigor-rbnacl/lib/rigor/plugin/rbnacl.rb +13 -1
  532. data/plugins/rigor-rbs-inline/lib/rigor/plugin/rbs_inline/same_line_annotations.rb +149 -0
  533. data/plugins/rigor-rbs-inline/lib/rigor/plugin/rbs_inline.rb +324 -18
  534. data/plugins/rigor-rspec/lib/rigor/plugin/rspec/analyzer.rb +0 -3
  535. data/plugins/rigor-rspec/lib/rigor/plugin/rspec/let_scope_index.rb +0 -3
  536. data/plugins/rigor-rspec/lib/rigor/plugin/rspec/let_type_resolver.rb +1 -5
  537. data/plugins/rigor-rspec/lib/rigor/plugin/rspec/matcher_analyzer.rb +2 -3
  538. data/plugins/rigor-rspec/lib/rigor/plugin/rspec.rb +1 -0
  539. data/plugins/rigor-rspec-rails/lib/rigor/plugin/rspec_rails/have_http_status_analyzer.rb +0 -3
  540. data/plugins/rigor-rspec-rails/lib/rigor/plugin/rspec_rails.rb +1 -0
  541. data/plugins/rigor-sassc/lib/rigor/plugin/sassc.rb +1 -0
  542. data/plugins/rigor-shoulda-matchers/lib/rigor/plugin/shoulda_matchers/analyzer.rb +1 -9
  543. data/plugins/rigor-shoulda-matchers/lib/rigor/plugin/shoulda_matchers.rb +1 -0
  544. data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq/analyzer.rb +0 -4
  545. data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq/effects.rb +1 -1
  546. data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq/schedule_scan.rb +2 -1
  547. data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq/worker_discoverer.rb +0 -1
  548. data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq/worker_index.rb +0 -2
  549. data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq.rb +10 -5
  550. data/plugins/rigor-sinatra/lib/rigor/plugin/sinatra.rb +1 -0
  551. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/absurd_recognizer.rb +2 -5
  552. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/assertion_recognizer.rb +1 -4
  553. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/catalog.rb +3 -9
  554. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/catalog_walker.rb +4 -4
  555. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/sig_parser.rb +1 -2
  556. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/sigil_detector.rb +3 -5
  557. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/type_translator.rb +7 -5
  558. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet.rb +51 -6
  559. data/plugins/rigor-sorbet/sig/sorbet.rbs +277 -0
  560. data/plugins/rigor-statesman/lib/rigor/plugin/statesman.rb +1 -0
  561. data/sig/rigor/analysis/baseline.rbs +69 -7
  562. data/sig/rigor/analysis/fact_store.rbs +1 -1
  563. data/sig/rigor/analysis/project_scan.rbs +74 -0
  564. data/sig/rigor/analysis/reachability/scan_cache.rbs +12 -0
  565. data/sig/rigor/cache.rbs +2 -3
  566. data/sig/rigor/effects/config_envelopes.rbs +100 -0
  567. data/sig/rigor/effects/effect_table.rbs +60 -0
  568. data/sig/rigor/effects/envelope.rbs +97 -0
  569. data/sig/rigor/effects/envelope_index.rbs +33 -0
  570. data/sig/rigor/effects/file_collection.rbs +81 -0
  571. data/sig/rigor/effects/label.rbs +26 -0
  572. data/sig/rigor/effects/label_set.rbs +46 -0
  573. data/sig/rigor/effects/method_key.rbs +24 -0
  574. data/sig/rigor/effects/origin.rbs +50 -0
  575. data/sig/rigor/effects/plugin_facts.rbs +141 -0
  576. data/sig/rigor/effects/registry.rbs +68 -0
  577. data/sig/rigor/effects/summary.rbs +50 -0
  578. data/sig/rigor/effects/taint_cause.rbs +12 -0
  579. data/sig/rigor/environment.rbs +17 -10
  580. data/sig/rigor/inference/optimistic_origin.rbs +10 -0
  581. data/sig/rigor/inference.rbs +9 -14
  582. data/sig/rigor/plugin/additional_initializer.rbs +36 -0
  583. data/sig/rigor/plugin/base.rbs +30 -7
  584. data/sig/rigor/plugin/effect_ancestry.rbs +27 -0
  585. data/sig/rigor/plugin/effect_attribution.rbs +66 -0
  586. data/sig/rigor/plugin/effect_edge.rbs +33 -0
  587. data/sig/rigor/plugin/effect_entry_points.rbs +25 -0
  588. data/sig/rigor/plugin/io_boundary.rbs +4 -0
  589. data/sig/rigor/plugin/loader.rbs +3 -3
  590. data/sig/rigor/plugin/manifest.rbs +51 -11
  591. data/sig/rigor/plugin/protocol_contract.rbs +68 -0
  592. data/sig/rigor/plugin/registry.rbs +62 -1
  593. data/sig/rigor/plugin.rbs +1 -1
  594. data/sig/rigor/rbs_extended.rbs +1 -1
  595. data/sig/rigor/reflection.rbs +9 -6
  596. data/sig/rigor/scope.rbs +148 -12
  597. data/sig/rigor/sig_gen/skip_reason_catalog.rbs +21 -0
  598. data/sig/rigor/source.rbs +4 -4
  599. data/sig/rigor/testing.rbs +10 -4
  600. data/sig/rigor/type.rbs +33 -1
  601. data/sig/rigor.rbs +39 -20
  602. data/skills/rigor-ask/SKILL.md +16 -11
  603. data/skills/rigor-baseline-reduce/SKILL.md +4 -6
  604. data/skills/rigor-ci-setup/SKILL.md +17 -21
  605. data/skills/rigor-doctor/SKILL.md +24 -22
  606. data/skills/rigor-doctor/references/01-checks.md +97 -33
  607. data/skills/rigor-editor-setup/SKILL.md +6 -4
  608. data/skills/rigor-mcp-setup/SKILL.md +5 -4
  609. data/skills/rigor-monkeypatch-resolve/SKILL.md +5 -3
  610. data/skills/rigor-next-steps/SKILL.md +4 -2
  611. data/skills/rigor-plugin-author/SKILL.md +19 -23
  612. data/skills/rigor-plugin-author/references/01-plan-and-scaffold.md +9 -8
  613. data/skills/rigor-plugin-author/references/02-walker-and-types.md +25 -27
  614. data/skills/rigor-plugin-author/references/03-test-and-ship.md +6 -8
  615. data/skills/rigor-plugin-review/SKILL.md +6 -4
  616. data/skills/rigor-plugin-review/references/01-best-practices-checklist.md +2 -1
  617. data/skills/rigor-plugin-tune/SKILL.md +4 -2
  618. data/skills/rigor-project-init/SKILL.md +15 -10
  619. data/skills/rigor-project-init/references/01-detect.md +13 -9
  620. data/skills/rigor-project-init/references/02-configure.md +43 -14
  621. data/skills/rigor-project-init/references/03-baseline-and-bugs.md +14 -14
  622. data/skills/rigor-project-init/references/04-sig-uplift.md +27 -14
  623. data/skills/rigor-project-init/references/06-agent-contract.md +67 -0
  624. data/skills/rigor-protection-uplift/SKILL.md +4 -6
  625. data/skills/rigor-rbs-setup/SKILL.md +4 -2
  626. data/skills/rigor-type-oracle/SKILL.md +226 -0
  627. data/skills/rigor-type-oracle/references/01-oracle-commands.md +265 -0
  628. data/skills/rigor-type-oracle/references/02-agents-md-fragment.md +52 -0
  629. data/skills/rigor-type-oracle/references/03-gap-protocol.md +125 -0
  630. data/skills/rigor-unused-adjudicate/SKILL.md +12 -7
  631. data/skills/rigor-upgrade/SKILL.md +13 -8
  632. metadata +133 -3
  633. data/lib/rigor/cli/probe_environment.rb +0 -85
  634. data/sig/rigor/inference/builtins/numeric_catalog.rbs +0 -3
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rigortype
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.8
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rigor contributors
@@ -306,11 +306,17 @@ files:
306
306
  - data/builtins/ruby_core/string.yml
307
307
  - data/builtins/ruby_core/struct.yml
308
308
  - data/builtins/ruby_core/time.yml
309
+ - data/capability_roles/capability_roles.rbs
309
310
  - data/core_overlay/csv.rbs
311
+ - data/core_overlay/enumerable.rbs
312
+ - data/core_overlay/enumerator.rbs
313
+ - data/core_overlay/hash_rbs3.rbs
310
314
  - data/core_overlay/numeric.rbs
311
315
  - data/core_overlay/pathname.rbs
316
+ - data/core_overlay/process.rbs
312
317
  - data/core_overlay/psych.rbs
313
318
  - data/core_overlay/resolv.rbs
319
+ - data/core_overlay/string_io.rbs
314
320
  - data/core_overlay/string_scanner.rbs
315
321
  - data/effects/core.yml
316
322
  - data/effects/registry.yml
@@ -387,6 +393,7 @@ files:
387
393
  - docs/manual/plugins/rigor-actioncable.md
388
394
  - docs/manual/plugins/rigor-actionmailer.md
389
395
  - docs/manual/plugins/rigor-actionpack.md
396
+ - docs/manual/plugins/rigor-active-model-serializers.md
390
397
  - docs/manual/plugins/rigor-activejob.md
391
398
  - docs/manual/plugins/rigor-activerecord.md
392
399
  - docs/manual/plugins/rigor-activestorage.md
@@ -397,6 +404,7 @@ files:
397
404
  - docs/manual/plugins/rigor-dry-types.md
398
405
  - docs/manual/plugins/rigor-dry-validation.md
399
406
  - docs/manual/plugins/rigor-factorybot.md
407
+ - docs/manual/plugins/rigor-grape.md
400
408
  - docs/manual/plugins/rigor-graphql.md
401
409
  - docs/manual/plugins/rigor-hanami.md
402
410
  - docs/manual/plugins/rigor-mangrove.md
@@ -426,6 +434,7 @@ files:
426
434
  - lib/rigor/analysis/check_rules/duplicate_hash_key_collector.rb
427
435
  - lib/rigor/analysis/check_rules/inferred_param_guard.rb
428
436
  - lib/rigor/analysis/check_rules/ivar_write_collector.rb
437
+ - lib/rigor/analysis/check_rules/lexical_method_sites.rb
429
438
  - lib/rigor/analysis/check_rules/main_pass_collector.rb
430
439
  - lib/rigor/analysis/check_rules/published_constant_guard.rb
431
440
  - lib/rigor/analysis/check_rules/return_in_ensure_collector.rb
@@ -433,6 +442,8 @@ files:
433
442
  - lib/rigor/analysis/check_rules/rule_walk.rb
434
443
  - lib/rigor/analysis/check_rules/self_closedness_scanner.rb
435
444
  - lib/rigor/analysis/check_rules/shadowed_rescue_collector.rb
445
+ - lib/rigor/analysis/check_rules/source_arity.rb
446
+ - lib/rigor/analysis/check_rules/special_global_setters.rb
436
447
  - lib/rigor/analysis/check_rules/unreachable_clause_collector.rb
437
448
  - lib/rigor/analysis/check_rules/void_value_use_collector.rb
438
449
  - lib/rigor/analysis/crash_signature.rb
@@ -476,6 +487,10 @@ files:
476
487
  - lib/rigor/analysis/runner/run_snapshots.rb
477
488
  - lib/rigor/analysis/self_call_resolution_recorder.rb
478
489
  - lib/rigor/analysis/severity_stamp.rb
490
+ - lib/rigor/analysis/template_unit_collector.rb
491
+ - lib/rigor/analysis/template_unit_paths.rb
492
+ - lib/rigor/analysis/template_unit_positions.rb
493
+ - lib/rigor/analysis/template_units.rb
479
494
  - lib/rigor/analysis/worker_session.rb
480
495
  - lib/rigor/ast.rb
481
496
  - lib/rigor/ast/type_node.rb
@@ -537,7 +552,6 @@ files:
537
552
  - lib/rigor/cli/plugins_command.rb
538
553
  - lib/rigor/cli/plugins_renderer.rb
539
554
  - lib/rigor/cli/prism_colorizer.rb
540
- - lib/rigor/cli/probe_environment.rb
541
555
  - lib/rigor/cli/protection_fork_scan.rb
542
556
  - lib/rigor/cli/protection_renderer.rb
543
557
  - lib/rigor/cli/protection_report.rb
@@ -553,6 +567,7 @@ files:
553
567
  - lib/rigor/cli/triage_renderer.rb
554
568
  - lib/rigor/cli/type_of_command.rb
555
569
  - lib/rigor/cli/type_of_renderer.rb
570
+ - lib/rigor/cli/type_of_template_probe.rb
556
571
  - lib/rigor/cli/type_scan_command.rb
557
572
  - lib/rigor/cli/type_scan_renderer.rb
558
573
  - lib/rigor/cli/type_scan_report.rb
@@ -564,10 +579,13 @@ files:
564
579
  - lib/rigor/configuration/severity_profile.rb
565
580
  - lib/rigor/configuration_error.rb
566
581
  - lib/rigor/effects.rb
582
+ - lib/rigor/effects/ancestry_recorder.rb
567
583
  - lib/rigor/effects/attribution.rb
584
+ - lib/rigor/effects/callee_rule.rb
568
585
  - lib/rigor/effects/catalog.rb
569
586
  - lib/rigor/effects/collector.rb
570
587
  - lib/rigor/effects/config_envelopes.rb
588
+ - lib/rigor/effects/definition_context.rb
571
589
  - lib/rigor/effects/definition_lines.rb
572
590
  - lib/rigor/effects/discharge.rb
573
591
  - lib/rigor/effects/effect_table.rb
@@ -601,6 +619,7 @@ files:
601
619
  - lib/rigor/effects/unit_scan.rb
602
620
  - lib/rigor/effects/unknown_label_check.rb
603
621
  - lib/rigor/effects/unknown_label_report.rb
622
+ - lib/rigor/effects/visibility.rb
604
623
  - lib/rigor/environment.rb
605
624
  - lib/rigor/environment/bundle_sig_discovery.rb
606
625
  - lib/rigor/environment/class_registry.rb
@@ -608,7 +627,10 @@ files:
608
627
  - lib/rigor/environment/default_libraries.rb
609
628
  - lib/rigor/environment/failure_slot.rb
610
629
  - lib/rigor/environment/hkt_registry_holder.rb
630
+ - lib/rigor/environment/installed_gem_set.rb
611
631
  - lib/rigor/environment/lockfile_resolver.rb
632
+ - lib/rigor/environment/member_consistency.rb
633
+ - lib/rigor/environment/member_consistency/comparator.rb
612
634
  - lib/rigor/environment/missing_gem_constant_index.rb
613
635
  - lib/rigor/environment/rbs_collection_discovery.rb
614
636
  - lib/rigor/environment/rbs_coverage_report.rb
@@ -622,9 +644,13 @@ files:
622
644
  - lib/rigor/flow_contribution/fact.rb
623
645
  - lib/rigor/flow_contribution/merge_result.rb
624
646
  - lib/rigor/flow_contribution/merger.rb
647
+ - lib/rigor/hashing/xxh3.rb
625
648
  - lib/rigor/inference/acceptance.rb
626
649
  - lib/rigor/inference/anonymous_meta_class.rb
650
+ - lib/rigor/inference/block_auto_splat.rb
651
+ - lib/rigor/inference/block_call_timing.rb
627
652
  - lib/rigor/inference/block_parameter_binder.rb
653
+ - lib/rigor/inference/block_repetition.rb
628
654
  - lib/rigor/inference/body_fixpoint.rb
629
655
  - lib/rigor/inference/budget_trace.rb
630
656
  - lib/rigor/inference/builtins/array_catalog.rb
@@ -654,12 +680,20 @@ files:
654
680
  - lib/rigor/inference/def_handle.rb
655
681
  - lib/rigor/inference/def_node_resolver.rb
656
682
  - lib/rigor/inference/def_return_typer.rb
683
+ - lib/rigor/inference/define_method_block_self.rb
657
684
  - lib/rigor/inference/dynamic_origin.rb
685
+ - lib/rigor/inference/element_read_widening.rb
686
+ - lib/rigor/inference/error_info.rb
658
687
  - lib/rigor/inference/expression_typer.rb
688
+ - lib/rigor/inference/external_ancestor_resolution.rb
659
689
  - lib/rigor/inference/fallback.rb
660
690
  - lib/rigor/inference/fallback_tracer.rb
661
691
  - lib/rigor/inference/flow_tracer.rb
662
692
  - lib/rigor/inference/fork_map.rb
693
+ - lib/rigor/inference/fresh_frame_blocks.rb
694
+ - lib/rigor/inference/global_write_census.rb
695
+ - lib/rigor/inference/guard_rebinding.rb
696
+ - lib/rigor/inference/hash_lookup_mutation.rb
663
697
  - lib/rigor/inference/hkt_body.rb
664
698
  - lib/rigor/inference/hkt_body_parser.rb
665
699
  - lib/rigor/inference/hkt_reducer.rb
@@ -667,27 +701,45 @@ files:
667
701
  - lib/rigor/inference/hkt_sugar_translator.rb
668
702
  - lib/rigor/inference/index_write_widening.rb
669
703
  - lib/rigor/inference/indexed_narrowing.rb
704
+ - lib/rigor/inference/jump_targets.rb
705
+ - lib/rigor/inference/last_line.rb
706
+ - lib/rigor/inference/last_line/implicit_self.rb
707
+ - lib/rigor/inference/last_line/self_evidence.rb
708
+ - lib/rigor/inference/last_status.rb
670
709
  - lib/rigor/inference/macro_block_self_type.rb
710
+ - lib/rigor/inference/match_rebinding.rb
711
+ - lib/rigor/inference/match_rebinding/calls.rb
712
+ - lib/rigor/inference/match_rebinding/frame.rb
713
+ - lib/rigor/inference/match_rebinding/operands.rb
714
+ - lib/rigor/inference/match_rebinding/self_calls.rb
671
715
  - lib/rigor/inference/method_dispatcher.rb
716
+ - lib/rigor/inference/method_dispatcher/alias_strict_nominals.rb
672
717
  - lib/rigor/inference/method_dispatcher/array_to_h_folding.rb
673
718
  - lib/rigor/inference/method_dispatcher/block_folding.rb
674
719
  - lib/rigor/inference/method_dispatcher/call_context.rb
675
720
  - lib/rigor/inference/method_dispatcher/cgi_folding.rb
676
721
  - lib/rigor/inference/method_dispatcher/constant_folding.rb
677
722
  - lib/rigor/inference/method_dispatcher/data_folding.rb
723
+ - lib/rigor/inference/method_dispatcher/facet_distribution.rb
678
724
  - lib/rigor/inference/method_dispatcher/file_folding.rb
725
+ - lib/rigor/inference/method_dispatcher/hash_transform_keys_folding.rb
679
726
  - lib/rigor/inference/method_dispatcher/iterator_dispatch.rb
680
727
  - lib/rigor/inference/method_dispatcher/json_folding.rb
681
728
  - lib/rigor/inference/method_dispatcher/kernel_dispatch.rb
682
729
  - lib/rigor/inference/method_dispatcher/literal_string_folding.rb
730
+ - lib/rigor/inference/method_dispatcher/match_data_folding.rb
683
731
  - lib/rigor/inference/method_dispatcher/math_folding.rb
684
732
  - lib/rigor/inference/method_dispatcher/member_shape_projection.rb
685
733
  - lib/rigor/inference/method_dispatcher/method_folding.rb
686
734
  - lib/rigor/inference/method_dispatcher/overload_selector.rb
735
+ - lib/rigor/inference/method_dispatcher/process_folding.rb
736
+ - lib/rigor/inference/method_dispatcher/proven_overload.rb
737
+ - lib/rigor/inference/method_dispatcher/random_folding.rb
687
738
  - lib/rigor/inference/method_dispatcher/rbs_dispatch.rb
688
739
  - lib/rigor/inference/method_dispatcher/receiver_affinity.rb
689
740
  - lib/rigor/inference/method_dispatcher/reduce_folding.rb
690
741
  - lib/rigor/inference/method_dispatcher/regexp_folding.rb
742
+ - lib/rigor/inference/method_dispatcher/self_substitute.rb
691
743
  - lib/rigor/inference/method_dispatcher/set_folding.rb
692
744
  - lib/rigor/inference/method_dispatcher/shape_dispatch.rb
693
745
  - lib/rigor/inference/method_dispatcher/shellwords_folding.rb
@@ -700,25 +752,39 @@ files:
700
752
  - lib/rigor/inference/method_dispatcher/uri_folding.rb
701
753
  - lib/rigor/inference/method_parameter_binder.rb
702
754
  - lib/rigor/inference/multi_target_binder.rb
755
+ - lib/rigor/inference/mutation_rejoin.rb
703
756
  - lib/rigor/inference/mutation_widening.rb
704
757
  - lib/rigor/inference/narrowing.rb
758
+ - lib/rigor/inference/operand_effects.rb
759
+ - lib/rigor/inference/operand_walk.rb
705
760
  - lib/rigor/inference/optimistic_origin.rb
706
761
  - lib/rigor/inference/origin_lookup.rb
707
762
  - lib/rigor/inference/parameter_inference_collector.rb
708
763
  - lib/rigor/inference/pre_eval_constants.rb
709
764
  - lib/rigor/inference/precision_scanner.rb
765
+ - lib/rigor/inference/project_method_ownership.rb
710
766
  - lib/rigor/inference/project_patched_methods.rb
711
767
  - lib/rigor/inference/project_patched_scanner.rb
712
768
  - lib/rigor/inference/protection_scanner.rb
769
+ - lib/rigor/inference/range_constant.rb
713
770
  - lib/rigor/inference/rbs_type_translator.rb
714
771
  - lib/rigor/inference/receiver_alias.rb
772
+ - lib/rigor/inference/receiver_blind_block.rb
773
+ - lib/rigor/inference/refinement_mutation.rb
774
+ - lib/rigor/inference/repeated_or_writes.rb
775
+ - lib/rigor/inference/return_barrier.rb
776
+ - lib/rigor/inference/rewrite_mutation.rb
715
777
  - lib/rigor/inference/scope_indexer.rb
716
778
  - lib/rigor/inference/singleton_object_constant.rb
717
779
  - lib/rigor/inference/statement_evaluator.rb
780
+ - lib/rigor/inference/stored_block_call.rb
781
+ - lib/rigor/inference/string_mutation.rb
718
782
  - lib/rigor/inference/struct_fold_safety.rb
719
783
  - lib/rigor/inference/synthetic_method.rb
720
784
  - lib/rigor/inference/synthetic_method_index.rb
721
785
  - lib/rigor/inference/synthetic_method_scanner.rb
786
+ - lib/rigor/inference/unknown_store_widening.rb
787
+ - lib/rigor/inference/unthreaded_rebinds.rb
722
788
  - lib/rigor/inference/version_guard.rb
723
789
  - lib/rigor/inference/void_origin.rb
724
790
  - lib/rigor/inference/void_tail_summary.rb
@@ -750,6 +816,8 @@ files:
750
816
  - lib/rigor/plugin/base.rb
751
817
  - lib/rigor/plugin/blueprint.rb
752
818
  - lib/rigor/plugin/box.rb
819
+ - lib/rigor/plugin/box_probe.rb
820
+ - lib/rigor/plugin/bundled_catalog.rb
753
821
  - lib/rigor/plugin/effect_ancestry.rb
754
822
  - lib/rigor/plugin/effect_attribution.rb
755
823
  - lib/rigor/plugin/effect_edge.rb
@@ -773,8 +841,11 @@ files:
773
841
  - lib/rigor/plugin/registry.rb
774
842
  - lib/rigor/plugin/services.rb
775
843
  - lib/rigor/plugin/source_rbs_synthesis_reporter.rb
844
+ - lib/rigor/plugin/template_unit.rb
776
845
  - lib/rigor/plugin/trust_policy.rb
777
846
  - lib/rigor/plugin/type_node_resolver.rb
847
+ - lib/rigor/plugin_gap_advisory.rb
848
+ - lib/rigor/project_environment.rb
778
849
  - lib/rigor/protection/analysis_guard.rb
779
850
  - lib/rigor/protection/closure_kill_oracle.rb
780
851
  - lib/rigor/protection/dependency_closure.rb
@@ -792,12 +863,18 @@ files:
792
863
  - lib/rigor/rbs_extended/hkt_directives.rb
793
864
  - lib/rigor/rbs_extended/reporter.rb
794
865
  - lib/rigor/reflection.rb
866
+ - lib/rigor/reflection/constant_ancestors.rb
867
+ - lib/rigor/reflection/constant_path.rb
795
868
  - lib/rigor/runtime/jit.rb
796
869
  - lib/rigor/scope.rb
797
870
  - lib/rigor/scope/discovery_index.rb
798
871
  - lib/rigor/sig_gen.rb
872
+ - lib/rigor/sig_gen/alias_index.rb
799
873
  - lib/rigor/sig_gen/classification.rb
874
+ - lib/rigor/sig_gen/declaration_equivalence.rb
875
+ - lib/rigor/sig_gen/effect_annotation.rb
800
876
  - lib/rigor/sig_gen/generator.rb
877
+ - lib/rigor/sig_gen/inline_declarations.rb
801
878
  - lib/rigor/sig_gen/layout_index.rb
802
879
  - lib/rigor/sig_gen/meta_class_shape.rb
803
880
  - lib/rigor/sig_gen/method_candidate.rb
@@ -806,6 +883,8 @@ files:
806
883
  - lib/rigor/sig_gen/path_mapper.rb
807
884
  - lib/rigor/sig_gen/rbs_validity.rb
808
885
  - lib/rigor/sig_gen/renderer.rb
886
+ - lib/rigor/sig_gen/skip_reason_catalog.rb
887
+ - lib/rigor/sig_gen/superclass_spelling.rb
809
888
  - lib/rigor/sig_gen/type_elaborator.rb
810
889
  - lib/rigor/sig_gen/write_result.rb
811
890
  - lib/rigor/sig_gen/writer.rb
@@ -816,6 +895,7 @@ files:
816
895
  - lib/rigor/source/node_children.rb
817
896
  - lib/rigor/source/node_locator.rb
818
897
  - lib/rigor/source/node_walker.rb
898
+ - lib/rigor/source/parameter_envelope.rb
819
899
  - lib/rigor/testing.rb
820
900
  - lib/rigor/triage.rb
821
901
  - lib/rigor/triage/catalogue.rb
@@ -834,6 +914,7 @@ files:
834
914
  - lib/rigor/type/data_instance.rb
835
915
  - lib/rigor/type/difference.rb
836
916
  - lib/rigor/type/dynamic.rb
917
+ - lib/rigor/type/float_range.rb
837
918
  - lib/rigor/type/hash_shape.rb
838
919
  - lib/rigor/type/integer_range.rb
839
920
  - lib/rigor/type/intersection.rb
@@ -854,6 +935,7 @@ files:
854
935
  - lib/rigor/type_node/indexed_access.rb
855
936
  - lib/rigor/type_node/integer_literal.rb
856
937
  - lib/rigor/type_node/name_scope.rb
938
+ - lib/rigor/type_node/range_literal.rb
857
939
  - lib/rigor/type_node/resolver_chain.rb
858
940
  - lib/rigor/type_node/string_literal.rb
859
941
  - lib/rigor/type_node/symbol_literal.rb
@@ -878,7 +960,19 @@ files:
878
960
  - plugins/rigor-actionpack/lib/rigor/plugin/actionpack/analyzer.rb
879
961
  - plugins/rigor-actionpack/lib/rigor/plugin/actionpack/controller_discoverer.rb
880
962
  - plugins/rigor-actionpack/lib/rigor/plugin/actionpack/controller_index.rb
963
+ - plugins/rigor-actionpack/lib/rigor/plugin/actionpack/controller_scan.rb
881
964
  - plugins/rigor-actionpack/lib/rigor/plugin/actionpack/effects.rb
965
+ - plugins/rigor-actionpack/lib/rigor/plugin/actionpack/erb_compiler.rb
966
+ - plugins/rigor-actionpack/lib/rigor/plugin/actionpack/render_locals.rb
967
+ - plugins/rigor-actionpack/lib/rigor/plugin/actionpack/view_assigns.rb
968
+ - plugins/rigor-actionpack/lib/rigor/plugin/actionpack/view_units.rb
969
+ - plugins/rigor-actionpack/sig/action_controller.rbs
970
+ - plugins/rigor-actionpack/sig/action_view.rbs
971
+ - plugins/rigor-active-model-serializers/lib/rigor-active-model-serializers.rb
972
+ - plugins/rigor-active-model-serializers/lib/rigor/plugin/active_model_serializers.rb
973
+ - plugins/rigor-active-model-serializers/lib/rigor/plugin/active_model_serializers/serializer_discoverer.rb
974
+ - plugins/rigor-active-model-serializers/lib/rigor/plugin/active_model_serializers/serializer_index.rb
975
+ - plugins/rigor-active-model-serializers/sig/active_model_serializers.rbs
882
976
  - plugins/rigor-activejob/lib/rigor-activejob.rb
883
977
  - plugins/rigor-activejob/lib/rigor/plugin/activejob.rb
884
978
  - plugins/rigor-activejob/lib/rigor/plugin/activejob/analyzer.rb
@@ -895,6 +989,7 @@ files:
895
989
  - plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_parser.rb
896
990
  - plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_table.rb
897
991
  - plugins/rigor-activerecord/lib/rigor/plugin/activerecord/structure_sql_parser.rb
992
+ - plugins/rigor-activerecord/sig/active_record/framework.rbs
898
993
  - plugins/rigor-activerecord/sig/active_record/relation.rbs
899
994
  - plugins/rigor-activestorage/lib/rigor-activestorage.rb
900
995
  - plugins/rigor-activestorage/lib/rigor/plugin/activestorage.rb
@@ -944,9 +1039,13 @@ files:
944
1039
  - plugins/rigor-ffi/lib/rigor/plugin/ffi/target_detector.rb
945
1040
  - plugins/rigor-ffi/lib/rigor/plugin/ffi/types.rb
946
1041
  - plugins/rigor-ffi/sig/ffi.rbs
1042
+ - plugins/rigor-grape/lib/rigor-grape.rb
1043
+ - plugins/rigor-grape/lib/rigor/plugin/grape.rb
1044
+ - plugins/rigor-grape/sig/grape.rbs
947
1045
  - plugins/rigor-graphql/lib/rigor-graphql.rb
948
1046
  - plugins/rigor-graphql/lib/rigor/plugin/graphql.rb
949
1047
  - plugins/rigor-graphql/lib/rigor/plugin/graphql/type_scanner.rb
1048
+ - plugins/rigor-graphql/sig/graphql.rbs
950
1049
  - plugins/rigor-hanami/lib/rigor-hanami.rb
951
1050
  - plugins/rigor-hanami/lib/rigor/plugin/hanami.rb
952
1051
  - plugins/rigor-hanami/lib/rigor/plugin/hanami/action_checker.rb
@@ -987,6 +1086,7 @@ files:
987
1086
  - plugins/rigor-rbnacl/sig/rbnacl.rbs
988
1087
  - plugins/rigor-rbs-inline/lib/rigor-rbs-inline.rb
989
1088
  - plugins/rigor-rbs-inline/lib/rigor/plugin/rbs_inline.rb
1089
+ - plugins/rigor-rbs-inline/lib/rigor/plugin/rbs_inline/same_line_annotations.rb
990
1090
  - plugins/rigor-rspec-rails/lib/rigor-rspec-rails.rb
991
1091
  - plugins/rigor-rspec-rails/lib/rigor/plugin/rspec_rails.rb
992
1092
  - plugins/rigor-rspec-rails/lib/rigor/plugin/rspec_rails/have_http_status_analyzer.rb
@@ -1023,6 +1123,7 @@ files:
1023
1123
  - plugins/rigor-sorbet/lib/rigor/plugin/sorbet/sig_parser.rb
1024
1124
  - plugins/rigor-sorbet/lib/rigor/plugin/sorbet/sigil_detector.rb
1025
1125
  - plugins/rigor-sorbet/lib/rigor/plugin/sorbet/type_translator.rb
1126
+ - plugins/rigor-sorbet/sig/sorbet.rbs
1026
1127
  - plugins/rigor-statesman/lib/rigor-statesman.rb
1027
1128
  - plugins/rigor-statesman/lib/rigor/plugin/statesman.rb
1028
1129
  - plugins/rigor-typescript-utility-types/lib/rigor-typescript-utility-types.rb
@@ -1035,27 +1136,48 @@ files:
1035
1136
  - sig/rigor/analysis/dependency_source_inference/gem_resolver.rbs
1036
1137
  - sig/rigor/analysis/dependency_source_inference/index.rbs
1037
1138
  - sig/rigor/analysis/fact_store.rbs
1139
+ - sig/rigor/analysis/project_scan.rbs
1140
+ - sig/rigor/analysis/reachability/scan_cache.rbs
1038
1141
  - sig/rigor/ast.rbs
1039
1142
  - sig/rigor/cache.rbs
1040
1143
  - sig/rigor/cli/diff_command.rbs
1041
1144
  - sig/rigor/cli/explain_command.rbs
1042
1145
  - sig/rigor/cli/sig_gen_command.rbs
1043
1146
  - sig/rigor/cli/type_scan_command.rbs
1147
+ - sig/rigor/effects/config_envelopes.rbs
1148
+ - sig/rigor/effects/effect_table.rbs
1149
+ - sig/rigor/effects/envelope.rbs
1150
+ - sig/rigor/effects/envelope_index.rbs
1151
+ - sig/rigor/effects/file_collection.rbs
1152
+ - sig/rigor/effects/label.rbs
1153
+ - sig/rigor/effects/label_set.rbs
1154
+ - sig/rigor/effects/method_key.rbs
1155
+ - sig/rigor/effects/origin.rbs
1156
+ - sig/rigor/effects/plugin_facts.rbs
1157
+ - sig/rigor/effects/registry.rbs
1158
+ - sig/rigor/effects/summary.rbs
1159
+ - sig/rigor/effects/taint_cause.rbs
1044
1160
  - sig/rigor/environment.rbs
1045
1161
  - sig/rigor/inference.rbs
1046
1162
  - sig/rigor/inference/builtins.rbs
1047
1163
  - sig/rigor/inference/builtins/method_catalog.rbs
1048
- - sig/rigor/inference/builtins/numeric_catalog.rbs
1164
+ - sig/rigor/inference/optimistic_origin.rbs
1049
1165
  - sig/rigor/inference/void_origin.rbs
1050
1166
  - sig/rigor/plugin.rbs
1051
1167
  - sig/rigor/plugin/access_denied_error.rbs
1168
+ - sig/rigor/plugin/additional_initializer.rbs
1052
1169
  - sig/rigor/plugin/base.rbs
1053
1170
  - sig/rigor/plugin/blueprint.rbs
1171
+ - sig/rigor/plugin/effect_ancestry.rbs
1172
+ - sig/rigor/plugin/effect_attribution.rbs
1173
+ - sig/rigor/plugin/effect_edge.rbs
1174
+ - sig/rigor/plugin/effect_entry_points.rbs
1054
1175
  - sig/rigor/plugin/fact_store.rbs
1055
1176
  - sig/rigor/plugin/io_boundary.rbs
1056
1177
  - sig/rigor/plugin/load_error.rbs
1057
1178
  - sig/rigor/plugin/loader.rbs
1058
1179
  - sig/rigor/plugin/manifest.rbs
1180
+ - sig/rigor/plugin/protocol_contract.rbs
1059
1181
  - sig/rigor/plugin/registry.rbs
1060
1182
  - sig/rigor/plugin/services.rbs
1061
1183
  - sig/rigor/plugin/trust_policy.rbs
@@ -1063,6 +1185,7 @@ files:
1063
1185
  - sig/rigor/rbs_extended.rbs
1064
1186
  - sig/rigor/reflection.rbs
1065
1187
  - sig/rigor/scope.rbs
1188
+ - sig/rigor/sig_gen/skip_reason_catalog.rbs
1066
1189
  - sig/rigor/source.rbs
1067
1190
  - sig/rigor/testing.rbs
1068
1191
  - sig/rigor/trinary.rbs
@@ -1091,8 +1214,13 @@ files:
1091
1214
  - skills/rigor-project-init/references/03-baseline-and-bugs.md
1092
1215
  - skills/rigor-project-init/references/04-sig-uplift.md
1093
1216
  - skills/rigor-project-init/references/05-jit-performance.md
1217
+ - skills/rigor-project-init/references/06-agent-contract.md
1094
1218
  - skills/rigor-protection-uplift/SKILL.md
1095
1219
  - skills/rigor-rbs-setup/SKILL.md
1220
+ - skills/rigor-type-oracle/SKILL.md
1221
+ - skills/rigor-type-oracle/references/01-oracle-commands.md
1222
+ - skills/rigor-type-oracle/references/02-agents-md-fragment.md
1223
+ - skills/rigor-type-oracle/references/03-gap-protocol.md
1096
1224
  - skills/rigor-unused-adjudicate/SKILL.md
1097
1225
  - skills/rigor-upgrade/SKILL.md
1098
1226
  homepage: https://github.com/rigortype/rigor
@@ -1118,6 +1246,7 @@ require_paths:
1118
1246
  - plugins/rigor-actioncable/lib
1119
1247
  - plugins/rigor-actionmailer/lib
1120
1248
  - plugins/rigor-actionpack/lib
1249
+ - plugins/rigor-active-model-serializers/lib
1121
1250
  - plugins/rigor-activejob/lib
1122
1251
  - plugins/rigor-activerecord/lib
1123
1252
  - plugins/rigor-activestorage/lib
@@ -1132,6 +1261,7 @@ require_paths:
1132
1261
  - plugins/rigor-factorybot/lib
1133
1262
  - plugins/rigor-ffi/lib
1134
1263
  - plugins/rigor-ffi-rzmq/lib
1264
+ - plugins/rigor-grape/lib
1135
1265
  - plugins/rigor-graphql/lib
1136
1266
  - plugins/rigor-hanami/lib
1137
1267
  - plugins/rigor-mangrove/lib
@@ -1,85 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../environment"
4
- require_relative "../plugin"
5
- require_relative "../plugin/loader"
6
- require_relative "../plugin/services"
7
- require_relative "../reflection"
8
- require_relative "../type/combinator"
9
-
10
- module Rigor
11
- class CLI
12
- # Shared construction of the analysis-observing environment for the single-shot probe commands
13
- # (`type-of`, `type-scan`, `trace`, `annotate`). Each of these answers "what does the engine infer here?"
14
- # for a hand-picked file or position, so the environment they type against MUST match the one `rigor check`
15
- # analyses with — otherwise a probe reports a type the real run never computes.
16
- #
17
- # The gap this closes: the probes historically built their environment with
18
- # `Environment.for_project(libraries:, signature_paths:)` only — no plugin registry, no `source_files:`. The
19
- # `source_rbs_synthesizer` plugin hook (ADR-32 / ADR-93's auto-wired `rigor-rbs-inline`) therefore never
20
- # ran there, so a class whose only signature comes from an inline `#: () -> void` annotation typed as
21
- # `Dynamic[top]` under a probe while `check` resolved it through the synthesized RBS. That divergence
22
- # misattributed a dispatch tier during the #162 transitive-void design pass (see the 2026-07-19 addendum in
23
- # docs/adr/100-static-diagnostic-family-and-void-origins.md).
24
- #
25
- # This threads the two things that were missing — the plugin registry built by the plugin loader, and the
26
- # `source_files:` the synthesizers run over — matching `rigor check`'s `Environment.for_project` call
27
- # (built in `Analysis::Runner::PoolCoordinator#build_runner_environment`). A probe legitimately simplifies
28
- # relative to check: no synthesis-failure reporter (a probe has no diagnostic pipeline) and no synthesis
29
- # cache store (a single-position probe recomputes cheaply). Plugin loading itself matches check — same
30
- # `.rigor.yml` `plugins:` config, same ADR-93 auto-wire (already applied by `Configuration.load`), same
31
- # `enabled:` / `require_magic_comment` semantics via `Plugin::Loader.load`.
32
- #
33
- # Fail-soft is the invariant: a project with no plugins, an unresolvable plugin gem, or any error during the
34
- # plugin-aware build degrades to the bare environment the probes used before — never a crash. `Plugin::Loader`
35
- # already isolates per-entry load failures onto the registry; the `rescue` here is the belt-and-suspenders
36
- # around anything the loader or the plugin-aware env build itself might raise.
37
- module ProbeEnvironment
38
- module_function
39
-
40
- # Builds the plugin-aware {Rigor::Environment} a probe types against.
41
- #
42
- # @param configuration [Rigor::Configuration] the loaded project configuration (already carries the
43
- # ADR-93 auto-wired `rigor-rbs-inline` entry when the library is resolvable).
44
- # @param source_files [Array<String>] the file(s) the probe inspects. Threaded so each loaded plugin's
45
- # `source_rbs_synthesizer` runs over them at env-build time; an empty list contributes no synthesized RBS.
46
- # @return [Rigor::Environment]
47
- def build(configuration:, source_files:)
48
- Environment.for_project(
49
- libraries: configuration.libraries,
50
- signature_paths: configuration.signature_paths,
51
- plugin_registry: load_plugin_registry(configuration),
52
- source_files: source_files
53
- )
54
- rescue StandardError
55
- bare(configuration)
56
- end
57
-
58
- # Loads the project's configured plugins the same way the plugin-inspection commands (`rigor plugins`,
59
- # `rigor doctor`) do: a `Plugin::Services` with no cache store (the probe recomputes) driving
60
- # `Plugin::Loader.load`. Returns `nil` — so `Environment.for_project` skips the plugin tier entirely —
61
- # when the project declares no plugins.
62
- def load_plugin_registry(configuration)
63
- return nil if configuration.plugins.empty?
64
-
65
- services = Plugin::Services.new(
66
- reflection: Reflection,
67
- type: Type::Combinator,
68
- configuration: configuration,
69
- cache_store: nil
70
- )
71
- Plugin::Loader.load(configuration: configuration, services: services)
72
- end
73
-
74
- # The pre-fix environment: RBS + project signatures only, no plugin tier and no synthesized RBS. The
75
- # fail-soft floor — a probe on a project with broken or absent plugin setup lands here and behaves exactly
76
- # as it did before this parity fix.
77
- def bare(configuration)
78
- Environment.for_project(
79
- libraries: configuration.libraries,
80
- signature_paths: configuration.signature_paths
81
- )
82
- end
83
- end
84
- end
85
- end
@@ -1,3 +0,0 @@
1
- class Rigor::Inference::Builtins::NumericCatalog
2
- def self.reset!: () -> nil
3
- end