rigortype 0.4.7 → 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 (268) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -1
  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 +29 -0
  6. data/data/gem_overlay/addressable/addressable.rbs +40 -0
  7. data/docs/handbook/01-getting-started.md +1 -1
  8. data/docs/handbook/11-sig-gen.md +35 -0
  9. data/docs/install.md +20 -0
  10. data/docs/manual/01-installation.md +67 -26
  11. data/docs/manual/02-cli-reference.md +307 -91
  12. data/docs/manual/03-configuration.md +41 -3
  13. data/docs/manual/04-diagnostics.md +5 -4
  14. data/docs/manual/08-skills.md +11 -0
  15. data/docs/manual/09-editor-integration.md +8 -0
  16. data/docs/manual/14-rails-quickstart.md +1 -1
  17. data/docs/manual/19-effect-labels.md +3 -4
  18. data/docs/manual/plugins/rigor-actionpack.md +15 -6
  19. data/docs/manual/plugins/rigor-activesupport-core-ext.md +3 -0
  20. data/docs/manual/plugins/rigor-sorbet.md +17 -3
  21. data/lib/rigor/analysis/check_rules/always_raises_shield.rb +147 -0
  22. data/lib/rigor/analysis/check_rules/call_facts.rb +58 -0
  23. data/lib/rigor/analysis/check_rules/declaration_sourced_guard.rb +8 -0
  24. data/lib/rigor/analysis/check_rules/ivar_write_collector.rb +13 -2
  25. data/lib/rigor/analysis/check_rules/lexical_method_sites.rb +6 -0
  26. data/lib/rigor/analysis/check_rules/plugin_api_surface.rb +195 -0
  27. data/lib/rigor/analysis/check_rules/published_constant_guard.rb +40 -11
  28. data/lib/rigor/analysis/check_rules/rbs_receiver_surface.rb +27 -1
  29. data/lib/rigor/analysis/check_rules/replaced_singleton_defs.rb +96 -0
  30. data/lib/rigor/analysis/check_rules/rule_ids.rb +8 -1
  31. data/lib/rigor/analysis/check_rules/void_value_use_collector.rb +1 -1
  32. data/lib/rigor/analysis/check_rules.rb +598 -99
  33. data/lib/rigor/analysis/crash_signature.rb +43 -1
  34. data/lib/rigor/analysis/dependency_recorder.rb +233 -76
  35. data/lib/rigor/analysis/incremental.rb +11 -1
  36. data/lib/rigor/analysis/incremental_run_slot/write_guard.rb +2 -1
  37. data/lib/rigor/analysis/incremental_session.rb +279 -37
  38. data/lib/rigor/analysis/reachability/plugin_roots.rb +6 -3
  39. data/lib/rigor/analysis/rule_catalog.rb +37 -1
  40. data/lib/rigor/analysis/run_cache_key.rb +27 -3
  41. data/lib/rigor/analysis/run_disclosure_credit.rb +26 -6
  42. data/lib/rigor/analysis/runner/buffer_pool_dispatcher.rb +4 -0
  43. data/lib/rigor/analysis/runner/declaration_position.rb +7 -7
  44. data/lib/rigor/analysis/runner/diagnostic_aggregator.rb +72 -20
  45. data/lib/rigor/analysis/runner/effect_envelope_pass.rb +3 -8
  46. data/lib/rigor/analysis/runner/pool_coordinator.rb +26 -5
  47. data/lib/rigor/analysis/runner/project_pre_passes.rb +4 -37
  48. data/lib/rigor/analysis/runner.rb +222 -39
  49. data/lib/rigor/analysis/self_call_resolution_recorder.rb +61 -22
  50. data/lib/rigor/analysis/worker_session.rb +42 -41
  51. data/lib/rigor/bleeding_edge.rb +19 -4
  52. data/lib/rigor/cache/file_digest.rb +39 -31
  53. data/lib/rigor/cache/incremental_snapshot.rb +66 -7
  54. data/lib/rigor/cache/rbs_descriptor.rb +37 -2
  55. data/lib/rigor/cache/rbs_environment.rb +5 -1
  56. data/lib/rigor/cli/baseline_command.rb +15 -2
  57. data/lib/rigor/cli/check_command.rb +4 -2
  58. data/lib/rigor/cli/effects_snapshot_command.rb +8 -1
  59. data/lib/rigor/cli/lens_command.rb +17 -2
  60. data/lib/rigor/cli/sig_gen_command.rb +8 -0
  61. data/lib/rigor/cli/skill_describe.rb +1 -0
  62. data/lib/rigor/cli.rb +5 -2
  63. data/lib/rigor/config_audit.rb +32 -18
  64. data/lib/rigor/configuration/severity_profile.rb +9 -0
  65. data/lib/rigor/configuration.rb +32 -5
  66. data/lib/rigor/effects/collector.rb +53 -21
  67. data/lib/rigor/environment/bundle_sig_discovery.rb +63 -28
  68. data/lib/rigor/environment/constant_type_cache_holder.rb +5 -0
  69. data/lib/rigor/environment/default_libraries.rb +17 -0
  70. data/lib/rigor/environment/deferred_signature_plan.rb +104 -6
  71. data/lib/rigor/environment/hkt_registry_holder.rb +6 -0
  72. data/lib/rigor/environment/rbs_collection_discovery.rb +123 -8
  73. data/lib/rigor/environment/rbs_coverage_report.rb +12 -11
  74. data/lib/rigor/environment/rbs_hierarchy.rb +6 -0
  75. data/lib/rigor/environment/rbs_loader.rb +312 -63
  76. data/lib/rigor/environment.rb +131 -35
  77. data/lib/rigor/inference/acceptance.rb +50 -15
  78. data/lib/rigor/inference/alias_mutation_floor/foreign_locals.rb +117 -0
  79. data/lib/rigor/inference/alias_mutation_floor/memos.rb +85 -0
  80. data/lib/rigor/inference/alias_mutation_floor/reach.rb +119 -0
  81. data/lib/rigor/inference/alias_mutation_floor/site_collector.rb +252 -0
  82. data/lib/rigor/inference/alias_mutation_floor.rb +339 -0
  83. data/lib/rigor/inference/anonymous_meta_class.rb +18 -0
  84. data/lib/rigor/inference/block_auto_splat.rb +1 -1
  85. data/lib/rigor/inference/block_run_count.rb +9 -2
  86. data/lib/rigor/inference/builtins/array_catalog.rb +2 -2
  87. data/lib/rigor/inference/callee_mutation_chain.rb +1 -1
  88. data/lib/rigor/inference/captured_locals.rb +2 -0
  89. data/lib/rigor/inference/census_foreign_block.rb +354 -0
  90. data/lib/rigor/inference/clause_widening.rb +1 -1
  91. data/lib/rigor/inference/closure_escape_analyzer.rb +11 -4
  92. data/lib/rigor/inference/construction_escape.rb +56 -15
  93. data/lib/rigor/inference/declaration_walk.rb +4 -0
  94. data/lib/rigor/inference/def_node_resolver.rb +32 -14
  95. data/lib/rigor/inference/def_return_typer.rb +1 -1
  96. data/lib/rigor/inference/definer_resolution.rb +15 -7
  97. data/lib/rigor/inference/definers_index.rb +72 -16
  98. data/lib/rigor/inference/error_info.rb +16 -0
  99. data/lib/rigor/inference/expression_typer.rb +1459 -287
  100. data/lib/rigor/inference/flow_tracer.rb +31 -14
  101. data/lib/rigor/inference/fork_map.rb +3 -0
  102. data/lib/rigor/inference/fresh_frame_blocks.rb +52 -1
  103. data/lib/rigor/inference/global_write_census.rb +8 -6
  104. data/lib/rigor/inference/in_effect_refinements.rb +7 -0
  105. data/lib/rigor/inference/indexed_narrowing.rb +57 -8
  106. data/lib/rigor/inference/ivar_writer_census.rb +106 -11
  107. data/lib/rigor/inference/key_presence_guard.rb +51 -25
  108. data/lib/rigor/inference/last_line/self_evidence.rb +30 -0
  109. data/lib/rigor/inference/last_line.rb +5 -2
  110. data/lib/rigor/inference/loop_value_record.rb +63 -15
  111. data/lib/rigor/inference/match_rebinding/frame.rb +11 -0
  112. data/lib/rigor/inference/match_rebinding/yielding_match.rb +74 -18
  113. data/lib/rigor/inference/match_rebinding.rb +21 -8
  114. data/lib/rigor/inference/method_dispatcher/block_folding.rb +43 -29
  115. data/lib/rigor/inference/method_dispatcher/class_keyed_block_params.rb +65 -0
  116. data/lib/rigor/inference/method_dispatcher/core_enumerable_receiver.rb +44 -0
  117. data/lib/rigor/inference/method_dispatcher/declared_constructor.rb +151 -0
  118. data/lib/rigor/inference/method_dispatcher/facet_distribution.rb +1 -1
  119. data/lib/rigor/inference/method_dispatcher/imprecise_argument.rb +2 -2
  120. data/lib/rigor/inference/method_dispatcher/interface_shape.rb +181 -0
  121. data/lib/rigor/inference/method_dispatcher/overload_selector.rb +12 -0
  122. data/lib/rigor/inference/method_dispatcher/rbs_dispatch.rb +409 -67
  123. data/lib/rigor/inference/method_dispatcher/self_substitute.rb +1 -1
  124. data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +384 -64
  125. data/lib/rigor/inference/method_dispatcher/singleton_type_params.rb +104 -0
  126. data/lib/rigor/inference/method_dispatcher.rb +66 -18
  127. data/lib/rigor/inference/method_parameter_binder.rb +136 -56
  128. data/lib/rigor/inference/module_function_state/spellings.rb +2 -2
  129. data/lib/rigor/inference/module_function_state.rb +13 -2
  130. data/lib/rigor/inference/multi_target_binder.rb +1 -1
  131. data/lib/rigor/inference/mutation_widening.rb +44 -4
  132. data/lib/rigor/inference/narrowing.rb +201 -27
  133. data/lib/rigor/inference/operand_effects.rb +43 -2
  134. data/lib/rigor/inference/optimistic_origin.rb +133 -8
  135. data/lib/rigor/inference/origin_lookup.rb +1 -1
  136. data/lib/rigor/inference/precision_scanner.rb +1 -1
  137. data/lib/rigor/inference/project_method_ownership.rb +28 -10
  138. data/lib/rigor/inference/project_patched_methods.rb +65 -13
  139. data/lib/rigor/inference/project_patched_scanner.rb +120 -25
  140. data/lib/rigor/inference/project_patched_visibility.rb +39 -3
  141. data/lib/rigor/inference/rbs_type_translator.rb +68 -15
  142. data/lib/rigor/inference/receiver_writer_call.rb +67 -0
  143. data/lib/rigor/inference/recursion_rebinding.rb +157 -0
  144. data/lib/rigor/inference/refined_dispatch/constructed_class.rb +56 -18
  145. data/lib/rigor/inference/refined_dispatch/own_method.rb +51 -17
  146. data/lib/rigor/inference/refined_dispatch.rb +13 -0
  147. data/lib/rigor/inference/reflective_ivar_write.rb +19 -11
  148. data/lib/rigor/inference/remover_holder_scan.rb +76 -22
  149. data/lib/rigor/inference/scope_indexer/class_cvars_collector.rb +13 -6
  150. data/lib/rigor/inference/scope_indexer/declared_param_writes.rb +12 -11
  151. data/lib/rigor/inference/scope_indexer/ivar_contributions.rb +188 -28
  152. data/lib/rigor/inference/scope_indexer/mixin_accumulator.rb +136 -9
  153. data/lib/rigor/inference/scope_indexer.rb +2079 -183
  154. data/lib/rigor/inference/self_call_ivar_writes.rb +26 -7
  155. data/lib/rigor/inference/self_preserving_block.rb +87 -0
  156. data/lib/rigor/inference/singleton_hook_decline.rb +41 -6
  157. data/lib/rigor/inference/singleton_object_constant.rb +32 -2
  158. data/lib/rigor/inference/statement_evaluator.rb +970 -250
  159. data/lib/rigor/inference/string_mutation.rb +14 -0
  160. data/lib/rigor/inference/synthetic_method_scanner.rb +35 -11
  161. data/lib/rigor/inference/toplevel_def_census.rb +14 -6
  162. data/lib/rigor/inference/unknown_store_widening.rb +1 -1
  163. data/lib/rigor/inference/untyped_rejoin.rb +1 -1
  164. data/lib/rigor/inference/void_tail_summary.rb +29 -10
  165. data/lib/rigor/lens/claims/comparison.rb +78 -0
  166. data/lib/rigor/lens/claims/request.rb +131 -0
  167. data/lib/rigor/lens/claims/type_reader.rb +216 -0
  168. data/lib/rigor/lens/claims.rb +208 -0
  169. data/lib/rigor/lens/contract_reader.rb +5 -0
  170. data/lib/rigor/lens/document.rb +1 -1
  171. data/lib/rigor/lens/file_reader.rb +21 -8
  172. data/lib/rigor/lens/run.rb +8 -0
  173. data/lib/rigor/lens.rb +1 -1
  174. data/lib/rigor/library_probe.rb +68 -0
  175. data/lib/rigor/memo_audit.rb +282 -0
  176. data/lib/rigor/plugin/base.rb +15 -2
  177. data/lib/rigor/plugin/io_boundary.rb +25 -3
  178. data/lib/rigor/plugin/manifest.rb +7 -3
  179. data/lib/rigor/plugin/registry.rb +13 -2
  180. data/lib/rigor/plugin/trust_policy.rb +46 -0
  181. data/lib/rigor/protection/mutation_cache.rb +4 -1
  182. data/lib/rigor/reflection/constant_ancestors.rb +79 -22
  183. data/lib/rigor/reflection/declaration_collectors.rb +55 -0
  184. data/lib/rigor/reflection/declarations.rb +58 -0
  185. data/lib/rigor/reflection/project_method.rb +177 -0
  186. data/lib/rigor/reflection.rb +2 -0
  187. data/lib/rigor/rooted_glob.rb +18 -1
  188. data/lib/rigor/run_scoped_slots.rb +20 -20
  189. data/lib/rigor/scope/discovery_index.rb +149 -2
  190. data/lib/rigor/scope/resolution_chain/relevance.rb +14 -1
  191. data/lib/rigor/scope/resolution_chain.rb +900 -55
  192. data/lib/rigor/scope.rb +307 -34
  193. data/lib/rigor/sig_gen/bot_proposal_guard.rb +306 -0
  194. data/lib/rigor/sig_gen/classification.rb +14 -1
  195. data/lib/rigor/sig_gen/generator.rb +222 -13
  196. data/lib/rigor/sig_gen/method_candidate.rb +14 -0
  197. data/lib/rigor/sig_gen/observation_collector.rb +11 -2
  198. data/lib/rigor/sig_gen/platform_guarded_files.rb +184 -0
  199. data/lib/rigor/sig_gen/skip_reason_catalog.rb +47 -0
  200. data/lib/rigor/sig_gen/writer.rb +21 -0
  201. data/lib/rigor/sig_gen.rb +1 -0
  202. data/lib/rigor/source/forwardable_delegators.rb +122 -0
  203. data/lib/rigor/source/node_children.rb +13 -0
  204. data/lib/rigor/type/combinator.rb +164 -8
  205. data/lib/rigor/type/interface.rb +60 -0
  206. data/lib/rigor/type.rb +1 -0
  207. data/lib/rigor/type_of_memo/serving.rb +99 -0
  208. data/lib/rigor/type_of_memo/stats.rb +43 -0
  209. data/lib/rigor/type_of_memo.rb +337 -0
  210. data/lib/rigor/typing_state.rb +1094 -0
  211. data/lib/rigor/version.rb +1 -1
  212. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/view_assigns.rb +2 -2
  213. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack.rb +57 -25
  214. data/plugins/rigor-active-model-serializers/lib/rigor/plugin/active_model_serializers.rb +3 -6
  215. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/analyzer.rb +25 -1
  216. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/job_discoverer.rb +16 -6
  217. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/job_index.rb +4 -2
  218. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/analyzer.rb +2 -1
  219. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_parser.rb +130 -30
  220. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_table.rb +20 -5
  221. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/structure_sql_parser.rb +7 -4
  222. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord.rb +49 -13
  223. data/plugins/rigor-activerecord/sig/active_record/relation.rbs +19 -5
  224. data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage.rb +4 -2
  225. data/plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext.rb +13 -5
  226. data/plugins/rigor-activesupport-core-ext/sig/active_support/core_ext.rbs +29 -0
  227. data/plugins/rigor-alba/lib/rigor/plugin/alba/resource_collector.rb +15 -21
  228. data/plugins/rigor-alba/lib/rigor/plugin/alba/resource_discoverer.rb +1 -6
  229. data/plugins/rigor-ffi/lib/rigor/plugin/ffi.rb +4 -2
  230. data/plugins/rigor-graphql/lib/rigor/plugin/graphql.rb +12 -2
  231. data/plugins/rigor-mangrove/lib/rigor/plugin/mangrove.rb +6 -0
  232. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/analyzer.rb +199 -1
  233. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes.rb +3 -2
  234. data/plugins/rigor-rspec/lib/rigor/plugin/rspec/matcher_analyzer.rb +4 -4
  235. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/catalog.rb +209 -2
  236. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/catalog_walker.rb +146 -7
  237. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/type_translator.rb +52 -34
  238. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet.rb +80 -3
  239. data/plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_collector.rb +16 -16
  240. data/plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_discoverer.rb +1 -6
  241. data/sig/rigor/analysis/check_rules/rule_walk.rbs +6 -0
  242. data/sig/rigor/analysis/fact_store.rbs +2 -3
  243. data/sig/rigor/cache/descriptor.rbs +14 -0
  244. data/sig/rigor/environment.rbs +4 -1
  245. data/sig/rigor/plugin/base.rbs +53 -19
  246. data/sig/rigor/plugin/interfaces.rbs +51 -0
  247. data/sig/rigor/plugin/io_boundary.rbs +2 -3
  248. data/sig/rigor/plugin/node_context.rbs +21 -0
  249. data/sig/rigor/reflection.rbs +37 -0
  250. data/sig/rigor/scope.rbs +22 -3
  251. data/sig/rigor/trinary.rbs +1 -0
  252. data/sig/rigor/type.rbs +9 -3
  253. data/sig/rigor.rbs +3 -2
  254. data/skills/rigor-ask/SKILL.md +1 -0
  255. data/skills/rigor-project-init/references/01-detect.md +1 -0
  256. data/skills/rigor-project-init/references/03-baseline-and-bugs.md +5 -1
  257. data/skills/rigor-project-init/references/06-agent-contract.md +4 -4
  258. data/skills/rigor-rbs-contract/SKILL.md +147 -0
  259. data/skills/rigor-rbs-contract/references/01-finding-candidates.md +212 -0
  260. data/skills/rigor-rbs-contract/references/02-contract-rules.md +157 -0
  261. data/skills/rigor-rbs-contract/references/03-target-own-code.md +90 -0
  262. data/skills/rigor-rbs-contract/references/04-target-gem-rbs-collection.md +210 -0
  263. data/skills/rigor-rbs-contract/references/05-declaration-mutants.md +182 -0
  264. data/skills/rigor-rbs-setup/SKILL.md +3 -1
  265. data/skills/rigor-type-oracle/SKILL.md +26 -1
  266. data/skills/rigor-type-oracle/references/02-agents-md-fragment.md +4 -3
  267. metadata +48 -2
  268. data/lib/rigor/inference/memo_audit.rb +0 -55
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.4.7
4
+ version: 0.4.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rigor contributors
@@ -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
@@ -695,6 +701,11 @@ files:
695
701
  - lib/rigor/flow_contribution/merger.rb
696
702
  - lib/rigor/hashing/xxh3.rb
697
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
698
709
  - lib/rigor/inference/anonymous_meta_class.rb
699
710
  - lib/rigor/inference/block_auto_splat.rb
700
711
  - lib/rigor/inference/block_call_timing.rb
@@ -727,6 +738,7 @@ files:
727
738
  - lib/rigor/inference/callee_mutation_chain.rb
728
739
  - lib/rigor/inference/callee_write_census.rb
729
740
  - lib/rigor/inference/captured_locals.rb
741
+ - lib/rigor/inference/census_foreign_block.rb
730
742
  - lib/rigor/inference/clause_widening.rb
731
743
  - lib/rigor/inference/closure_escape_analyzer.rb
732
744
  - lib/rigor/inference/construction_escape.rb
@@ -788,7 +800,6 @@ files:
788
800
  - lib/rigor/inference/match_rebinding/operands.rb
789
801
  - lib/rigor/inference/match_rebinding/self_calls.rb
790
802
  - lib/rigor/inference/match_rebinding/yielding_match.rb
791
- - lib/rigor/inference/memo_audit.rb
792
803
  - lib/rigor/inference/method_dispatcher.rb
793
804
  - lib/rigor/inference/method_dispatcher/alias_strict_nominals.rb
794
805
  - lib/rigor/inference/method_dispatcher/argument_distribution.rb
@@ -798,14 +809,18 @@ files:
798
809
  - lib/rigor/inference/method_dispatcher/block_folding.rb
799
810
  - lib/rigor/inference/method_dispatcher/call_context.rb
800
811
  - lib/rigor/inference/method_dispatcher/cgi_folding.rb
812
+ - lib/rigor/inference/method_dispatcher/class_keyed_block_params.rb
801
813
  - lib/rigor/inference/method_dispatcher/constant_folding.rb
802
814
  - lib/rigor/inference/method_dispatcher/contested_overloads.rb
815
+ - lib/rigor/inference/method_dispatcher/core_enumerable_receiver.rb
803
816
  - lib/rigor/inference/method_dispatcher/data_folding.rb
817
+ - lib/rigor/inference/method_dispatcher/declared_constructor.rb
804
818
  - lib/rigor/inference/method_dispatcher/facet_distribution.rb
805
819
  - lib/rigor/inference/method_dispatcher/file_folding.rb
806
820
  - lib/rigor/inference/method_dispatcher/hash_transform_keys_folding.rb
807
821
  - lib/rigor/inference/method_dispatcher/imprecise_argument.rb
808
822
  - lib/rigor/inference/method_dispatcher/integer_step_block_params.rb
823
+ - lib/rigor/inference/method_dispatcher/interface_shape.rb
809
824
  - lib/rigor/inference/method_dispatcher/iterator_dispatch.rb
810
825
  - lib/rigor/inference/method_dispatcher/json_folding.rb
811
826
  - lib/rigor/inference/method_dispatcher/kernel_dispatch.rb
@@ -831,6 +846,7 @@ files:
831
846
  - lib/rigor/inference/method_dispatcher/shellwords_folding.rb
832
847
  - lib/rigor/inference/method_dispatcher/singleton_folding.rb
833
848
  - lib/rigor/inference/method_dispatcher/singleton_mixin_dispatch.rb
849
+ - lib/rigor/inference/method_dispatcher/singleton_type_params.rb
834
850
  - lib/rigor/inference/method_dispatcher/splat_arity.rb
835
851
  - lib/rigor/inference/method_dispatcher/struct_folding.rb
836
852
  - lib/rigor/inference/method_dispatcher/struct_materialization.rb
@@ -867,6 +883,8 @@ files:
867
883
  - lib/rigor/inference/rbs_type_translator.rb
868
884
  - lib/rigor/inference/receiver_alias.rb
869
885
  - lib/rigor/inference/receiver_blind_block.rb
886
+ - lib/rigor/inference/receiver_writer_call.rb
887
+ - lib/rigor/inference/recursion_rebinding.rb
870
888
  - lib/rigor/inference/refine_census.rb
871
889
  - lib/rigor/inference/refine_self.rb
872
890
  - lib/rigor/inference/refined_dispatch.rb
@@ -896,6 +914,7 @@ files:
896
914
  - lib/rigor/inference/scope_indexer/superclasses_collector.rb
897
915
  - lib/rigor/inference/scope_indexer/unseen_ivar_writers.rb
898
916
  - lib/rigor/inference/self_call_ivar_writes.rb
917
+ - lib/rigor/inference/self_preserving_block.rb
899
918
  - lib/rigor/inference/set_mutation.rb
900
919
  - lib/rigor/inference/singleton_external_ahead.rb
901
920
  - lib/rigor/inference/singleton_hook_decline.rb
@@ -937,6 +956,10 @@ files:
937
956
  - lib/rigor/language_server/uri.rb
938
957
  - lib/rigor/lens.rb
939
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
940
963
  - lib/rigor/lens/contract_reader.rb
941
964
  - lib/rigor/lens/document.rb
942
965
  - lib/rigor/lens/file_reader.rb
@@ -945,9 +968,11 @@ files:
945
968
  - lib/rigor/lens/plugins.rb
946
969
  - lib/rigor/lens/run.rb
947
970
  - lib/rigor/lens/slot.rb
971
+ - lib/rigor/library_probe.rb
948
972
  - lib/rigor/mcp.rb
949
973
  - lib/rigor/mcp/loop.rb
950
974
  - lib/rigor/mcp/server.rb
975
+ - lib/rigor/memo_audit.rb
951
976
  - lib/rigor/plugin.rb
952
977
  - lib/rigor/plugin/access_denied_error.rb
953
978
  - lib/rigor/plugin/additional_initializer.rb
@@ -1003,6 +1028,9 @@ files:
1003
1028
  - lib/rigor/reflection.rb
1004
1029
  - lib/rigor/reflection/constant_ancestors.rb
1005
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
1006
1034
  - lib/rigor/rooted_glob.rb
1007
1035
  - lib/rigor/run_scoped_slots.rb
1008
1036
  - lib/rigor/runtime/jit.rb
@@ -1012,6 +1040,7 @@ files:
1012
1040
  - lib/rigor/scope/resolution_chain/relevance.rb
1013
1041
  - lib/rigor/sig_gen.rb
1014
1042
  - lib/rigor/sig_gen/alias_index.rb
1043
+ - lib/rigor/sig_gen/bot_proposal_guard.rb
1015
1044
  - lib/rigor/sig_gen/classification.rb
1016
1045
  - lib/rigor/sig_gen/declaration_equivalence.rb
1017
1046
  - lib/rigor/sig_gen/effect_annotation.rb
@@ -1024,6 +1053,7 @@ files:
1024
1053
  - lib/rigor/sig_gen/observation_collector.rb
1025
1054
  - lib/rigor/sig_gen/observed_call.rb
1026
1055
  - lib/rigor/sig_gen/path_mapper.rb
1056
+ - lib/rigor/sig_gen/platform_guarded_files.rb
1027
1057
  - lib/rigor/sig_gen/rbs_validity.rb
1028
1058
  - lib/rigor/sig_gen/renderer.rb
1029
1059
  - lib/rigor/sig_gen/skip_reason_catalog.rb
@@ -1037,6 +1067,7 @@ files:
1037
1067
  - lib/rigor/source.rb
1038
1068
  - lib/rigor/source/alias_names.rb
1039
1069
  - lib/rigor/source/constant_path.rb
1070
+ - lib/rigor/source/forwardable_delegators.rb
1040
1071
  - lib/rigor/source/literals.rb
1041
1072
  - lib/rigor/source/node_children.rb
1042
1073
  - lib/rigor/source/node_locator.rb
@@ -1064,6 +1095,7 @@ files:
1064
1095
  - lib/rigor/type/float_range.rb
1065
1096
  - lib/rigor/type/hash_shape.rb
1066
1097
  - lib/rigor/type/integer_range.rb
1098
+ - lib/rigor/type/interface.rb
1067
1099
  - lib/rigor/type/intersection.rb
1068
1100
  - lib/rigor/type/maybe.rb
1069
1101
  - lib/rigor/type/nominal.rb
@@ -1087,6 +1119,10 @@ files:
1087
1119
  - lib/rigor/type_node/string_literal.rb
1088
1120
  - lib/rigor/type_node/symbol_literal.rb
1089
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
1090
1126
  - lib/rigor/value_semantics.rb
1091
1127
  - lib/rigor/version.rb
1092
1128
  - lib/rigortype.rb
@@ -1302,6 +1338,7 @@ files:
1302
1338
  - sig/rigor/analysis/baseline.rbs
1303
1339
  - sig/rigor/analysis/check_rules/always_truthy_condition_collector.rbs
1304
1340
  - sig/rigor/analysis/check_rules/dead_assignment_collector.rbs
1341
+ - sig/rigor/analysis/check_rules/rule_walk.rbs
1305
1342
  - sig/rigor/analysis/dependency_source_inference/gem_resolver.rbs
1306
1343
  - sig/rigor/analysis/dependency_source_inference/index.rbs
1307
1344
  - sig/rigor/analysis/fact_store.rbs
@@ -1309,6 +1346,7 @@ files:
1309
1346
  - sig/rigor/analysis/reachability/scan_cache.rbs
1310
1347
  - sig/rigor/ast.rbs
1311
1348
  - sig/rigor/cache.rbs
1349
+ - sig/rigor/cache/descriptor.rbs
1312
1350
  - sig/rigor/cli/diff_command.rbs
1313
1351
  - sig/rigor/cli/explain_command.rbs
1314
1352
  - sig/rigor/cli/sig_gen_command.rbs
@@ -1342,10 +1380,12 @@ files:
1342
1380
  - sig/rigor/plugin/effect_edge.rbs
1343
1381
  - sig/rigor/plugin/effect_entry_points.rbs
1344
1382
  - sig/rigor/plugin/fact_store.rbs
1383
+ - sig/rigor/plugin/interfaces.rbs
1345
1384
  - sig/rigor/plugin/io_boundary.rbs
1346
1385
  - sig/rigor/plugin/load_error.rbs
1347
1386
  - sig/rigor/plugin/loader.rbs
1348
1387
  - sig/rigor/plugin/manifest.rbs
1388
+ - sig/rigor/plugin/node_context.rbs
1349
1389
  - sig/rigor/plugin/protocol_contract.rbs
1350
1390
  - sig/rigor/plugin/registry.rbs
1351
1391
  - sig/rigor/plugin/services.rbs
@@ -1386,6 +1426,12 @@ files:
1386
1426
  - skills/rigor-project-init/references/05-jit-performance.md
1387
1427
  - skills/rigor-project-init/references/06-agent-contract.md
1388
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
1389
1435
  - skills/rigor-rbs-setup/SKILL.md
1390
1436
  - skills/rigor-type-oracle/SKILL.md
1391
1437
  - skills/rigor-type-oracle/references/01-oracle-commands.md
@@ -1,55 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Rigor
4
- module Inference
5
- # ADR-127 WD3 — the callee floor's memo audit. A memo hit is correct only when the key holds every input the value
6
- # was computed from, and a key that misses one answers a caller with another caller's value (#2516, #2524). With the
7
- # audit on, every hit in the callee floor's memos (`resolved_census`, the unrecorded hand-off memo, the successor
8
- # store and `def_census`) recomputes the value and raises {Mismatch} when it differs from the stored one, so a key
9
- # defect fails on the first hit instead of waiting for an order that exposes it.
10
- #
11
- # Like {BudgetTrace}, a switch for specs and CI (`RIGOR_MEMO_AUDIT=1` in the environment, read once at load, or
12
- # {enable!}): off by default, a single boolean check when off. A recomputation
13
- # runs with the audit suspended on its thread and the memos bypassed ({suspended?}), so it reads nothing stored.
14
- module MemoAudit
15
- # A memo hit whose stored value differs from a fresh computation.
16
- class Mismatch < StandardError; end
17
-
18
- SUSPENDED_KEY = :rigor_memo_audit_suspended
19
-
20
- @enabled = %w[1 true].include?(ENV["RIGOR_MEMO_AUDIT"].to_s.downcase)
21
-
22
- module_function
23
-
24
- def enabled? = @enabled
25
-
26
- # True while an audit recomputation runs on this thread. The callee floor's memos are then bypassed (read and
27
- # write), so the recomputation reads no stored entry of another memo: a defect shared across a table (a stale
28
- # `resolved_census(:edges)` entry) would otherwise make the recomputed value match the stored one.
29
- def suspended? = Thread.current[SUSPENDED_KEY]
30
-
31
- def enable! = (@enabled = true)
32
-
33
- def disable! = (@enabled = false)
34
-
35
- # `stored`, after checking it against `yield` when the audit is on. `label` and the key parts (`key`, `key2`) name
36
- # the memo entry in the failure; they are passed apart so an audit that is off allocates nothing.
37
- def check(label, stored, key, key2 = nil, &)
38
- return stored unless @enabled && !Thread.current[SUSPENDED_KEY]
39
-
40
- fresh = suspended(&)
41
- return stored if fresh == stored
42
-
43
- raise Mismatch, "#{label} memo hit differs from a fresh computation for #{[key, key2].inspect[0, 120]}: " \
44
- "stored #{stored.inspect[0, 200]}, fresh #{fresh.inspect[0, 200]}"
45
- end
46
-
47
- def suspended
48
- Thread.current[SUSPENDED_KEY] = true
49
- yield
50
- ensure
51
- Thread.current[SUSPENDED_KEY] = nil
52
- end
53
- end
54
- end
55
- end