rigortype 0.3.5 → 0.3.6

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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/data/gem_overlay/activesupport/core_ext.rbs +33 -0
  4. data/docs/handbook/02-everyday-types.md +1 -1
  5. data/docs/handbook/04-tuples-and-shapes.md +1 -1
  6. data/docs/handbook/08-understanding-errors.md +1 -1
  7. data/docs/handbook/09-plugins.md +2 -2
  8. data/docs/handbook/10-sorbet.md +1 -1
  9. data/docs/handbook/README.md +2 -2
  10. data/docs/handbook/appendix-go.md +1 -1
  11. data/docs/handbook/appendix-java-csharp.md +2 -2
  12. data/docs/handbook/appendix-mypy.md +1 -1
  13. data/docs/handbook/appendix-protocols-and-structural-typing.md +2 -2
  14. data/docs/handbook/appendix-rust.md +1 -1
  15. data/docs/handbook/appendix-type-theory.md +2 -2
  16. data/docs/handbook/appendix-typescript.md +4 -4
  17. data/docs/manual/02-cli-reference.md +13 -9
  18. data/docs/manual/03-configuration.md +1 -1
  19. data/docs/manual/04-diagnostics.md +12 -0
  20. data/docs/manual/08-skills.md +1 -1
  21. data/docs/manual/11-ci.md +1 -1
  22. data/docs/manual/12-caching.md +1 -1
  23. data/docs/manual/15-type-protection-coverage.md +1 -1
  24. data/docs/manual/18-removing-dead-code.md +13 -4
  25. data/docs/manual/19-effect-labels.md +19 -12
  26. data/docs/manual/README.md +2 -2
  27. data/docs/manual/plugins/rigor-actionmailer.md +4 -4
  28. data/docs/manual/plugins/rigor-activejob.md +3 -3
  29. data/docs/manual/plugins/rigor-activerecord.md +4 -4
  30. data/docs/manual/plugins/rigor-rails-i18n.md +5 -5
  31. data/docs/manual/plugins/rigor-rspec.md +6 -2
  32. data/lib/rigor/analysis/diagnostic.rb +17 -6
  33. data/lib/rigor/analysis/effects_cache_probe.rb +132 -0
  34. data/lib/rigor/analysis/reachability/graph.rb +30 -11
  35. data/lib/rigor/analysis/reachability/plugin_roots.rb +11 -8
  36. data/lib/rigor/analysis/reachability/scan.rb +20 -4
  37. data/lib/rigor/analysis/reachability/scan_cache.rb +130 -0
  38. data/lib/rigor/analysis/run_cache_key.rb +12 -0
  39. data/lib/rigor/analysis/runner/effect_envelope_pass.rb +14 -8
  40. data/lib/rigor/analysis/runner.rb +151 -28
  41. data/lib/rigor/cache/file_digest.rb +20 -2
  42. data/lib/rigor/cli/check_command.rb +67 -48
  43. data/lib/rigor/cli/coverage_command.rb +5 -6
  44. data/lib/rigor/cli/doc_links.rb +100 -0
  45. data/lib/rigor/cli/docs_command.rb +32 -2
  46. data/lib/rigor/cli/effects_command.rb +27 -2
  47. data/lib/rigor/cli/effects_diff_renderer.rb +82 -12
  48. data/lib/rigor/cli/effects_explain_renderer.rb +6 -3
  49. data/lib/rigor/cli/effects_snapshot_command.rb +52 -7
  50. data/lib/rigor/cli/unused_command.rb +65 -16
  51. data/lib/rigor/cli.rb +21 -8
  52. data/lib/rigor/effects/definition_lines.rb +100 -0
  53. data/lib/rigor/effects/envelope_check.rb +18 -1
  54. data/lib/rigor/effects/liskov_check.rb +17 -8
  55. data/lib/rigor/effects/signature_sources.rb +13 -2
  56. data/lib/rigor/effects/snapshot.rb +53 -21
  57. data/lib/rigor/effects/snapshot_diff.rb +26 -3
  58. data/lib/rigor/inference/synthetic_method_scanner.rb +7 -0
  59. data/lib/rigor/rbs_extended/envelope_scanner.rb +9 -0
  60. data/lib/rigor/version.rb +1 -1
  61. data/skills/rigor-ci-setup/SKILL.md +2 -2
  62. data/skills/rigor-editor-setup/SKILL.md +2 -2
  63. data/skills/rigor-mcp-setup/SKILL.md +2 -2
  64. data/skills/rigor-monkeypatch-resolve/SKILL.md +1 -1
  65. data/skills/rigor-plugin-review/SKILL.md +3 -3
  66. metadata +5 -1
data/lib/rigor/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rigor
4
- VERSION = "0.3.5"
4
+ VERSION = "0.3.6"
5
5
  end
@@ -168,9 +168,9 @@ The exact recipe (the `BUNDLE_GEMFILE` wiring, the Dependabot entry) is in
168
168
  `rigor docs ci` (ready files: `rigor docs --list manual | grep
169
169
  ci-templates`). Web fallback, before Rigor is installed:
170
170
  <https://github.com/rigortype/rigor/blob/master/docs/manual/11-ci.md>.
171
- - [ADR-51](https://github.com/rigortype/rigor/blob/master/docs/adr/51-ci-diagnostic-output-formats.md)
171
+ - [ADR-51](../../docs/adr/51-ci-diagnostic-output-formats.md)
172
172
  — the output-format surface (the severity / identifier contract).
173
- - [ADR-27](https://github.com/rigortype/rigor/blob/master/docs/adr/27-tool-distribution-model.md)
173
+ - [ADR-27](../../docs/adr/27-tool-distribution-model.md)
174
174
  — why Rigor installs standalone and runs in its own job.
175
175
  - [reviewdog](https://github.com/reviewdog/reviewdog) /
176
176
  [action-setup](https://github.com/reviewdog/action-setup).
@@ -24,7 +24,7 @@ rigor docs editor-integration
24
24
  ```
25
25
 
26
26
  (Web fallback, only before Rigor is installed:
27
- **[Rigor LSP — Editor Integration](https://github.com/rigortype/rigor/blob/master/docs/manual/09-editor-integration.md)**.)
27
+ **[Rigor LSP — Editor Integration](../../docs/manual/09-editor-integration.md)**.)
28
28
  This skill is the *workflow* around it (identify the editor → apply the
29
29
  manual's snippet → verify), so it does not duplicate (and cannot
30
30
  stale-out) the config details.
@@ -62,7 +62,7 @@ Every editor snippet simply launches **`rigor lsp`** (stdio) and needs
62
62
  **`rigor` on the editor's `PATH`** — the same executable `rigor check`
63
63
  uses. For GUI editors that do not inherit your shell, the `mise` shim
64
64
  path is the most reliable channel (see `rigor docs install`, or
65
- [Installing Rigor](https://github.com/rigortype/rigor/blob/master/docs/install.md)
65
+ [Installing Rigor](../../docs/install.md)
66
66
  on the web). Do **not** add `rigortype` to the project's `Gemfile` — it
67
67
  is a tool, not a library.
68
68
 
@@ -26,7 +26,7 @@ rigor docs mcp-server
26
26
  ```
27
27
 
28
28
  (Web fallback, only before Rigor is installed:
29
- **[Rigor MCP Server — AI Agent Integration](https://github.com/rigortype/rigor/blob/master/docs/manual/10-mcp-server.md)**.)
29
+ **[Rigor MCP Server — AI Agent Integration](../../docs/manual/10-mcp-server.md)**.)
30
30
  This skill is the *workflow* around it (identify the client → apply the
31
31
  manual's snippet → verify the handshake), so it does not duplicate (and
32
32
  cannot stale-out) the config details.
@@ -70,7 +70,7 @@ Every client config simply launches **`rigor mcp`** (stdio) and needs
70
70
  **`rigor` on the agent's `PATH`** — the same executable `rigor check`
71
71
  uses. For agents that do not inherit your shell, the `mise` shim path is
72
72
  the most reliable channel (see `rigor docs install`, or
73
- [Installing Rigor](https://github.com/rigortype/rigor/blob/master/docs/install.md)
73
+ [Installing Rigor](../../docs/install.md)
74
74
  on the web). Do **not** add `rigortype` to the project's `Gemfile` — it
75
75
  is a tool, not a library.
76
76
 
@@ -14,7 +14,7 @@ When a project adds methods to existing classes in its own files — the
14
14
  classic `lib/core_ext/*.rb` `class String; def squish; …; end` pattern —
15
15
  Rigor does not see them unless told to, so every call to the added method
16
16
  fires `call.undefined-method` (or `call.unresolved-toplevel` for a
17
- top-level helper). `pre_eval:` ([ADR-17](https://github.com/rigortype/rigor/blob/master/docs/adr/17-monkey-patch-pre-evaluation.md))
17
+ top-level helper). `pre_eval:` ([ADR-17](../../docs/adr/17-monkey-patch-pre-evaluation.md))
18
18
  fixes this: it pre-evaluates the listed project files and registers every
19
19
  method they define with a **literal** `def` / `def self.`.
20
20
 
@@ -80,14 +80,14 @@ rigor plugin path rigor-<id> # its directory, to browse
80
80
  The **authoritative** authoring surface — the one this review scores
81
81
  against — is the internal spec, not this file:
82
82
 
83
- - [`docs/internal-spec/plugin.md`](https://github.com/rigortype/rigor/blob/master/docs/internal-spec/plugin.md)
83
+ - [`docs/internal-spec/plugin.md`](../../docs/internal-spec/plugin.md)
84
84
  — manifest, `node_rule` / `node_file_context`, `dynamic_return` /
85
85
  `narrowing_facts`, the `#diagnostic` / `#diagnostics_for` / `.suggest`
86
86
  / `#read_fact` author helpers, `config_schema` `{kind:, default:}`.
87
- - [`docs/internal-spec/plugin-cache-producers.md`](https://github.com/rigortype/rigor/blob/master/docs/internal-spec/plugin-cache-producers.md)
87
+ - [`docs/internal-spec/plugin-cache-producers.md`](../../docs/internal-spec/plugin-cache-producers.md)
88
88
  — `producer` / `#cache_for` / `#producer_value` / `#producer_error`,
89
89
  ADR-60 WD3 record-and-validate.
90
- - [`docs/internal-spec/plugin-trust.md`](https://github.com/rigortype/rigor/blob/master/docs/internal-spec/plugin-trust.md)
90
+ - [`docs/internal-spec/plugin-trust.md`](../../docs/internal-spec/plugin-trust.md)
91
91
  — `TrustPolicy` / `IoBoundary`.
92
92
 
93
93
  When the checklist below and the spec disagree, **the spec binds** —
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.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rigor contributors
@@ -422,6 +422,7 @@ files:
422
422
  - lib/rigor/analysis/dependency_source_inference/return_type_heuristic.rb
423
423
  - lib/rigor/analysis/dependency_source_inference/walker.rb
424
424
  - lib/rigor/analysis/diagnostic.rb
425
+ - lib/rigor/analysis/effects_cache_probe.rb
425
426
  - lib/rigor/analysis/erb_template_detector.rb
426
427
  - lib/rigor/analysis/fact_store.rb
427
428
  - lib/rigor/analysis/incremental.rb
@@ -433,6 +434,7 @@ files:
433
434
  - lib/rigor/analysis/reachability/plugin_roots.rb
434
435
  - lib/rigor/analysis/reachability/project_files.rb
435
436
  - lib/rigor/analysis/reachability/scan.rb
437
+ - lib/rigor/analysis/reachability/scan_cache.rb
436
438
  - lib/rigor/analysis/reachability/signature_scan.rb
437
439
  - lib/rigor/analysis/result.rb
438
440
  - lib/rigor/analysis/rule_catalog.rb
@@ -488,6 +490,7 @@ files:
488
490
  - lib/rigor/cli/coverage_scan.rb
489
491
  - lib/rigor/cli/diagnostic_formats.rb
490
492
  - lib/rigor/cli/diff_command.rb
493
+ - lib/rigor/cli/doc_links.rb
491
494
  - lib/rigor/cli/docs_command.rb
492
495
  - lib/rigor/cli/doctor_command.rb
493
496
  - lib/rigor/cli/effects_command.rb
@@ -540,6 +543,7 @@ files:
540
543
  - lib/rigor/effects/catalog.rb
541
544
  - lib/rigor/effects/collector.rb
542
545
  - lib/rigor/effects/config_envelopes.rb
546
+ - lib/rigor/effects/definition_lines.rb
543
547
  - lib/rigor/effects/discharge.rb
544
548
  - lib/rigor/effects/effect_table.rb
545
549
  - lib/rigor/effects/entry_points.rb