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.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/data/core_overlay/bigdecimal.rbs +33 -0
- data/data/core_overlay/resolv.rbs +30 -0
- data/data/gem_overlay/activesupport/core_ext.rbs +29 -0
- data/data/gem_overlay/addressable/addressable.rbs +40 -0
- data/docs/handbook/01-getting-started.md +1 -1
- data/docs/handbook/11-sig-gen.md +35 -0
- data/docs/install.md +20 -0
- data/docs/manual/01-installation.md +67 -26
- data/docs/manual/02-cli-reference.md +307 -91
- data/docs/manual/03-configuration.md +41 -3
- data/docs/manual/04-diagnostics.md +5 -4
- data/docs/manual/08-skills.md +11 -0
- data/docs/manual/09-editor-integration.md +8 -0
- data/docs/manual/14-rails-quickstart.md +1 -1
- data/docs/manual/19-effect-labels.md +3 -4
- data/docs/manual/plugins/rigor-actionpack.md +15 -6
- data/docs/manual/plugins/rigor-activesupport-core-ext.md +3 -0
- data/docs/manual/plugins/rigor-sorbet.md +17 -3
- data/lib/rigor/analysis/check_rules/always_raises_shield.rb +147 -0
- data/lib/rigor/analysis/check_rules/call_facts.rb +58 -0
- data/lib/rigor/analysis/check_rules/declaration_sourced_guard.rb +8 -0
- data/lib/rigor/analysis/check_rules/ivar_write_collector.rb +13 -2
- data/lib/rigor/analysis/check_rules/lexical_method_sites.rb +6 -0
- data/lib/rigor/analysis/check_rules/plugin_api_surface.rb +195 -0
- data/lib/rigor/analysis/check_rules/published_constant_guard.rb +40 -11
- data/lib/rigor/analysis/check_rules/rbs_receiver_surface.rb +27 -1
- data/lib/rigor/analysis/check_rules/replaced_singleton_defs.rb +96 -0
- data/lib/rigor/analysis/check_rules/rule_ids.rb +8 -1
- data/lib/rigor/analysis/check_rules/void_value_use_collector.rb +1 -1
- data/lib/rigor/analysis/check_rules.rb +598 -99
- data/lib/rigor/analysis/crash_signature.rb +43 -1
- data/lib/rigor/analysis/dependency_recorder.rb +233 -76
- data/lib/rigor/analysis/incremental.rb +11 -1
- data/lib/rigor/analysis/incremental_run_slot/write_guard.rb +2 -1
- data/lib/rigor/analysis/incremental_session.rb +279 -37
- data/lib/rigor/analysis/reachability/plugin_roots.rb +6 -3
- data/lib/rigor/analysis/rule_catalog.rb +37 -1
- data/lib/rigor/analysis/run_cache_key.rb +27 -3
- data/lib/rigor/analysis/run_disclosure_credit.rb +26 -6
- data/lib/rigor/analysis/runner/buffer_pool_dispatcher.rb +4 -0
- data/lib/rigor/analysis/runner/declaration_position.rb +7 -7
- data/lib/rigor/analysis/runner/diagnostic_aggregator.rb +72 -20
- data/lib/rigor/analysis/runner/effect_envelope_pass.rb +3 -8
- data/lib/rigor/analysis/runner/pool_coordinator.rb +26 -5
- data/lib/rigor/analysis/runner/project_pre_passes.rb +4 -37
- data/lib/rigor/analysis/runner.rb +222 -39
- data/lib/rigor/analysis/self_call_resolution_recorder.rb +61 -22
- data/lib/rigor/analysis/worker_session.rb +42 -41
- data/lib/rigor/bleeding_edge.rb +19 -4
- data/lib/rigor/cache/file_digest.rb +39 -31
- data/lib/rigor/cache/incremental_snapshot.rb +66 -7
- data/lib/rigor/cache/rbs_descriptor.rb +37 -2
- data/lib/rigor/cache/rbs_environment.rb +5 -1
- data/lib/rigor/cli/baseline_command.rb +15 -2
- data/lib/rigor/cli/check_command.rb +4 -2
- data/lib/rigor/cli/effects_snapshot_command.rb +8 -1
- data/lib/rigor/cli/lens_command.rb +17 -2
- data/lib/rigor/cli/sig_gen_command.rb +8 -0
- data/lib/rigor/cli/skill_describe.rb +1 -0
- data/lib/rigor/cli.rb +5 -2
- data/lib/rigor/config_audit.rb +32 -18
- data/lib/rigor/configuration/severity_profile.rb +9 -0
- data/lib/rigor/configuration.rb +32 -5
- data/lib/rigor/effects/collector.rb +53 -21
- data/lib/rigor/environment/bundle_sig_discovery.rb +63 -28
- data/lib/rigor/environment/constant_type_cache_holder.rb +5 -0
- data/lib/rigor/environment/default_libraries.rb +17 -0
- data/lib/rigor/environment/deferred_signature_plan.rb +104 -6
- data/lib/rigor/environment/hkt_registry_holder.rb +6 -0
- data/lib/rigor/environment/rbs_collection_discovery.rb +123 -8
- data/lib/rigor/environment/rbs_coverage_report.rb +12 -11
- data/lib/rigor/environment/rbs_hierarchy.rb +6 -0
- data/lib/rigor/environment/rbs_loader.rb +312 -63
- data/lib/rigor/environment.rb +131 -35
- data/lib/rigor/inference/acceptance.rb +50 -15
- data/lib/rigor/inference/alias_mutation_floor/foreign_locals.rb +117 -0
- data/lib/rigor/inference/alias_mutation_floor/memos.rb +85 -0
- data/lib/rigor/inference/alias_mutation_floor/reach.rb +119 -0
- data/lib/rigor/inference/alias_mutation_floor/site_collector.rb +252 -0
- data/lib/rigor/inference/alias_mutation_floor.rb +339 -0
- data/lib/rigor/inference/anonymous_meta_class.rb +18 -0
- data/lib/rigor/inference/block_auto_splat.rb +1 -1
- data/lib/rigor/inference/block_run_count.rb +9 -2
- data/lib/rigor/inference/builtins/array_catalog.rb +2 -2
- data/lib/rigor/inference/callee_mutation_chain.rb +1 -1
- data/lib/rigor/inference/captured_locals.rb +2 -0
- data/lib/rigor/inference/census_foreign_block.rb +354 -0
- data/lib/rigor/inference/clause_widening.rb +1 -1
- data/lib/rigor/inference/closure_escape_analyzer.rb +11 -4
- data/lib/rigor/inference/construction_escape.rb +56 -15
- data/lib/rigor/inference/declaration_walk.rb +4 -0
- data/lib/rigor/inference/def_node_resolver.rb +32 -14
- data/lib/rigor/inference/def_return_typer.rb +1 -1
- data/lib/rigor/inference/definer_resolution.rb +15 -7
- data/lib/rigor/inference/definers_index.rb +72 -16
- data/lib/rigor/inference/error_info.rb +16 -0
- data/lib/rigor/inference/expression_typer.rb +1459 -287
- data/lib/rigor/inference/flow_tracer.rb +31 -14
- data/lib/rigor/inference/fork_map.rb +3 -0
- data/lib/rigor/inference/fresh_frame_blocks.rb +52 -1
- data/lib/rigor/inference/global_write_census.rb +8 -6
- data/lib/rigor/inference/in_effect_refinements.rb +7 -0
- data/lib/rigor/inference/indexed_narrowing.rb +57 -8
- data/lib/rigor/inference/ivar_writer_census.rb +106 -11
- data/lib/rigor/inference/key_presence_guard.rb +51 -25
- data/lib/rigor/inference/last_line/self_evidence.rb +30 -0
- data/lib/rigor/inference/last_line.rb +5 -2
- data/lib/rigor/inference/loop_value_record.rb +63 -15
- data/lib/rigor/inference/match_rebinding/frame.rb +11 -0
- data/lib/rigor/inference/match_rebinding/yielding_match.rb +74 -18
- data/lib/rigor/inference/match_rebinding.rb +21 -8
- data/lib/rigor/inference/method_dispatcher/block_folding.rb +43 -29
- data/lib/rigor/inference/method_dispatcher/class_keyed_block_params.rb +65 -0
- data/lib/rigor/inference/method_dispatcher/core_enumerable_receiver.rb +44 -0
- data/lib/rigor/inference/method_dispatcher/declared_constructor.rb +151 -0
- data/lib/rigor/inference/method_dispatcher/facet_distribution.rb +1 -1
- data/lib/rigor/inference/method_dispatcher/imprecise_argument.rb +2 -2
- data/lib/rigor/inference/method_dispatcher/interface_shape.rb +181 -0
- data/lib/rigor/inference/method_dispatcher/overload_selector.rb +12 -0
- data/lib/rigor/inference/method_dispatcher/rbs_dispatch.rb +409 -67
- data/lib/rigor/inference/method_dispatcher/self_substitute.rb +1 -1
- data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +384 -64
- data/lib/rigor/inference/method_dispatcher/singleton_type_params.rb +104 -0
- data/lib/rigor/inference/method_dispatcher.rb +66 -18
- data/lib/rigor/inference/method_parameter_binder.rb +136 -56
- data/lib/rigor/inference/module_function_state/spellings.rb +2 -2
- data/lib/rigor/inference/module_function_state.rb +13 -2
- data/lib/rigor/inference/multi_target_binder.rb +1 -1
- data/lib/rigor/inference/mutation_widening.rb +44 -4
- data/lib/rigor/inference/narrowing.rb +201 -27
- data/lib/rigor/inference/operand_effects.rb +43 -2
- data/lib/rigor/inference/optimistic_origin.rb +133 -8
- data/lib/rigor/inference/origin_lookup.rb +1 -1
- data/lib/rigor/inference/precision_scanner.rb +1 -1
- data/lib/rigor/inference/project_method_ownership.rb +28 -10
- data/lib/rigor/inference/project_patched_methods.rb +65 -13
- data/lib/rigor/inference/project_patched_scanner.rb +120 -25
- data/lib/rigor/inference/project_patched_visibility.rb +39 -3
- data/lib/rigor/inference/rbs_type_translator.rb +68 -15
- data/lib/rigor/inference/receiver_writer_call.rb +67 -0
- data/lib/rigor/inference/recursion_rebinding.rb +157 -0
- data/lib/rigor/inference/refined_dispatch/constructed_class.rb +56 -18
- data/lib/rigor/inference/refined_dispatch/own_method.rb +51 -17
- data/lib/rigor/inference/refined_dispatch.rb +13 -0
- data/lib/rigor/inference/reflective_ivar_write.rb +19 -11
- data/lib/rigor/inference/remover_holder_scan.rb +76 -22
- data/lib/rigor/inference/scope_indexer/class_cvars_collector.rb +13 -6
- data/lib/rigor/inference/scope_indexer/declared_param_writes.rb +12 -11
- data/lib/rigor/inference/scope_indexer/ivar_contributions.rb +188 -28
- data/lib/rigor/inference/scope_indexer/mixin_accumulator.rb +136 -9
- data/lib/rigor/inference/scope_indexer.rb +2079 -183
- data/lib/rigor/inference/self_call_ivar_writes.rb +26 -7
- data/lib/rigor/inference/self_preserving_block.rb +87 -0
- data/lib/rigor/inference/singleton_hook_decline.rb +41 -6
- data/lib/rigor/inference/singleton_object_constant.rb +32 -2
- data/lib/rigor/inference/statement_evaluator.rb +970 -250
- data/lib/rigor/inference/string_mutation.rb +14 -0
- data/lib/rigor/inference/synthetic_method_scanner.rb +35 -11
- data/lib/rigor/inference/toplevel_def_census.rb +14 -6
- data/lib/rigor/inference/unknown_store_widening.rb +1 -1
- data/lib/rigor/inference/untyped_rejoin.rb +1 -1
- data/lib/rigor/inference/void_tail_summary.rb +29 -10
- data/lib/rigor/lens/claims/comparison.rb +78 -0
- data/lib/rigor/lens/claims/request.rb +131 -0
- data/lib/rigor/lens/claims/type_reader.rb +216 -0
- data/lib/rigor/lens/claims.rb +208 -0
- data/lib/rigor/lens/contract_reader.rb +5 -0
- data/lib/rigor/lens/document.rb +1 -1
- data/lib/rigor/lens/file_reader.rb +21 -8
- data/lib/rigor/lens/run.rb +8 -0
- data/lib/rigor/lens.rb +1 -1
- data/lib/rigor/library_probe.rb +68 -0
- data/lib/rigor/memo_audit.rb +282 -0
- data/lib/rigor/plugin/base.rb +15 -2
- data/lib/rigor/plugin/io_boundary.rb +25 -3
- data/lib/rigor/plugin/manifest.rb +7 -3
- data/lib/rigor/plugin/registry.rb +13 -2
- data/lib/rigor/plugin/trust_policy.rb +46 -0
- data/lib/rigor/protection/mutation_cache.rb +4 -1
- data/lib/rigor/reflection/constant_ancestors.rb +79 -22
- data/lib/rigor/reflection/declaration_collectors.rb +55 -0
- data/lib/rigor/reflection/declarations.rb +58 -0
- data/lib/rigor/reflection/project_method.rb +177 -0
- data/lib/rigor/reflection.rb +2 -0
- data/lib/rigor/rooted_glob.rb +18 -1
- data/lib/rigor/run_scoped_slots.rb +20 -20
- data/lib/rigor/scope/discovery_index.rb +149 -2
- data/lib/rigor/scope/resolution_chain/relevance.rb +14 -1
- data/lib/rigor/scope/resolution_chain.rb +900 -55
- data/lib/rigor/scope.rb +307 -34
- data/lib/rigor/sig_gen/bot_proposal_guard.rb +306 -0
- data/lib/rigor/sig_gen/classification.rb +14 -1
- data/lib/rigor/sig_gen/generator.rb +222 -13
- data/lib/rigor/sig_gen/method_candidate.rb +14 -0
- data/lib/rigor/sig_gen/observation_collector.rb +11 -2
- data/lib/rigor/sig_gen/platform_guarded_files.rb +184 -0
- data/lib/rigor/sig_gen/skip_reason_catalog.rb +47 -0
- data/lib/rigor/sig_gen/writer.rb +21 -0
- data/lib/rigor/sig_gen.rb +1 -0
- data/lib/rigor/source/forwardable_delegators.rb +122 -0
- data/lib/rigor/source/node_children.rb +13 -0
- data/lib/rigor/type/combinator.rb +164 -8
- data/lib/rigor/type/interface.rb +60 -0
- data/lib/rigor/type.rb +1 -0
- data/lib/rigor/type_of_memo/serving.rb +99 -0
- data/lib/rigor/type_of_memo/stats.rb +43 -0
- data/lib/rigor/type_of_memo.rb +337 -0
- data/lib/rigor/typing_state.rb +1094 -0
- data/lib/rigor/version.rb +1 -1
- data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/view_assigns.rb +2 -2
- data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack.rb +57 -25
- data/plugins/rigor-active-model-serializers/lib/rigor/plugin/active_model_serializers.rb +3 -6
- data/plugins/rigor-activejob/lib/rigor/plugin/activejob/analyzer.rb +25 -1
- data/plugins/rigor-activejob/lib/rigor/plugin/activejob/job_discoverer.rb +16 -6
- data/plugins/rigor-activejob/lib/rigor/plugin/activejob/job_index.rb +4 -2
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/analyzer.rb +2 -1
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_parser.rb +130 -30
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_table.rb +20 -5
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/structure_sql_parser.rb +7 -4
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord.rb +49 -13
- data/plugins/rigor-activerecord/sig/active_record/relation.rbs +19 -5
- data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage.rb +4 -2
- data/plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext.rb +13 -5
- data/plugins/rigor-activesupport-core-ext/sig/active_support/core_ext.rbs +29 -0
- data/plugins/rigor-alba/lib/rigor/plugin/alba/resource_collector.rb +15 -21
- data/plugins/rigor-alba/lib/rigor/plugin/alba/resource_discoverer.rb +1 -6
- data/plugins/rigor-ffi/lib/rigor/plugin/ffi.rb +4 -2
- data/plugins/rigor-graphql/lib/rigor/plugin/graphql.rb +12 -2
- data/plugins/rigor-mangrove/lib/rigor/plugin/mangrove.rb +6 -0
- data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/analyzer.rb +199 -1
- data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes.rb +3 -2
- data/plugins/rigor-rspec/lib/rigor/plugin/rspec/matcher_analyzer.rb +4 -4
- data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/catalog.rb +209 -2
- data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/catalog_walker.rb +146 -7
- data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/type_translator.rb +52 -34
- data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet.rb +80 -3
- data/plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_collector.rb +16 -16
- data/plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_discoverer.rb +1 -6
- data/sig/rigor/analysis/check_rules/rule_walk.rbs +6 -0
- data/sig/rigor/analysis/fact_store.rbs +2 -3
- data/sig/rigor/cache/descriptor.rbs +14 -0
- data/sig/rigor/environment.rbs +4 -1
- data/sig/rigor/plugin/base.rbs +53 -19
- data/sig/rigor/plugin/interfaces.rbs +51 -0
- data/sig/rigor/plugin/io_boundary.rbs +2 -3
- data/sig/rigor/plugin/node_context.rbs +21 -0
- data/sig/rigor/reflection.rbs +37 -0
- data/sig/rigor/scope.rbs +22 -3
- data/sig/rigor/trinary.rbs +1 -0
- data/sig/rigor/type.rbs +9 -3
- data/sig/rigor.rbs +3 -2
- data/skills/rigor-ask/SKILL.md +1 -0
- data/skills/rigor-project-init/references/01-detect.md +1 -0
- data/skills/rigor-project-init/references/03-baseline-and-bugs.md +5 -1
- data/skills/rigor-project-init/references/06-agent-contract.md +4 -4
- data/skills/rigor-rbs-contract/SKILL.md +147 -0
- data/skills/rigor-rbs-contract/references/01-finding-candidates.md +212 -0
- data/skills/rigor-rbs-contract/references/02-contract-rules.md +157 -0
- data/skills/rigor-rbs-contract/references/03-target-own-code.md +90 -0
- data/skills/rigor-rbs-contract/references/04-target-gem-rbs-collection.md +210 -0
- data/skills/rigor-rbs-contract/references/05-declaration-mutants.md +182 -0
- data/skills/rigor-rbs-setup/SKILL.md +3 -1
- data/skills/rigor-type-oracle/SKILL.md +26 -1
- data/skills/rigor-type-oracle/references/02-agents-md-fragment.md +4 -3
- metadata +48 -2
- 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.
|
|
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
|