woods 2.0.0 → 2.1.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 (167) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +108 -0
  3. data/CONTRIBUTING.md +135 -10
  4. data/README.md +1 -1
  5. data/docs/AGENT_GUIDE.md +19 -0
  6. data/docs/AGENT_SETUP.md +22 -2
  7. data/docs/BACKEND_MATRIX.md +7 -0
  8. data/docs/CLIENT_HOOKS.md +6 -0
  9. data/docs/CONFIGURATION_REFERENCE.md +133 -18
  10. data/docs/CONSOLE_MCP_SETUP.md +141 -12
  11. data/docs/EMBEDDING_MODELS.md +16 -19
  12. data/docs/EXTRACTOR_REFERENCE.md +219 -21
  13. data/docs/FAQ.md +11 -25
  14. data/docs/GETTING_STARTED.md +7 -1
  15. data/docs/INCREMENTAL_EXTRACTION.md +261 -19
  16. data/docs/INDEX_LAYOUT.md +5 -0
  17. data/docs/INTERNALS.md +9 -0
  18. data/docs/MCP_HTTP_TRANSPORT.md +59 -2
  19. data/docs/MCP_SERVERS.md +87 -8
  20. data/docs/MCP_TOOL_COOKBOOK.md +13 -55
  21. data/docs/NOTION_INTEGRATION.md +7 -1
  22. data/docs/PUBLISHED_INDEX.md +6 -0
  23. data/docs/README.md +6 -1
  24. data/docs/RETRIEVAL_GUIDE.md +17 -0
  25. data/docs/SOURCE_FRESHNESS.md +157 -5
  26. data/docs/TOKEN_BENCHMARK.md +10 -18
  27. data/docs/TROUBLESHOOTING.md +70 -14
  28. data/docs/UNBLOCKED_INTEGRATION.md +60 -8
  29. data/docs/UPGRADING_TO_2.md +184 -9
  30. data/docs/WATCH_DAEMON.md +97 -14
  31. data/exe/woods-console-mcp +2 -2
  32. data/exe/woods-mcp-http +16 -9
  33. data/lib/generators/woods/templates/woods.rb.tt +2 -1
  34. data/lib/tasks/woods.rake +23 -7
  35. data/lib/tasks/woods_checks.rake +2 -2
  36. data/lib/woods/agent_configuration/cli.rb +1 -1
  37. data/lib/woods/agent_configuration/layout.rb +16 -2
  38. data/lib/woods/agent_configuration/plan.rb +13 -3
  39. data/lib/woods/agent_configuration/planner_validation.rb +4 -2
  40. data/lib/woods/agent_configuration/preflight.rb +5 -3
  41. data/lib/woods/builder.rb +17 -57
  42. data/lib/woods/cache/cache_middleware.rb +68 -41
  43. data/lib/woods/chunking/contributor_chunks.rb +119 -0
  44. data/lib/woods/chunking/semantic_chunker.rb +44 -21
  45. data/lib/woods/console/adapter_family.rb +39 -0
  46. data/lib/woods/console/connection_manager.rb +56 -3
  47. data/lib/woods/console/credential_index.rb +33 -3
  48. data/lib/woods/console/embedded_executor.rb +431 -48
  49. data/lib/woods/console/model_validator.rb +8 -0
  50. data/lib/woods/console/rack_middleware.rb +68 -11
  51. data/lib/woods/console/redactor.rb +24 -10
  52. data/lib/woods/console/safe_context.rb +44 -7
  53. data/lib/woods/console/sql_noise_stripper.rb +41 -12
  54. data/lib/woods/console/sql_table_scanner.rb +45 -34
  55. data/lib/woods/console/sql_validator.rb +37 -2
  56. data/lib/woods/dependency_graph.rb +34 -10
  57. data/lib/woods/embedding/fake.rb +12 -0
  58. data/lib/woods/embedding/indexer.rb +195 -98
  59. data/lib/woods/embedding/input_budget.rb +67 -0
  60. data/lib/woods/embedding/openai.rb +70 -20
  61. data/lib/woods/embedding/provider.rb +37 -25
  62. data/lib/woods/embedding/text_preparer.rb +76 -32
  63. data/lib/woods/embedding/token_counter.rb +18 -81
  64. data/lib/woods/embedding/vector_configuration.rb +48 -0
  65. data/lib/woods/extraction_identities.rb +175 -0
  66. data/lib/woods/extractor.rb +304 -107
  67. data/lib/woods/extractors/action_cable_extractor.rb +8 -3
  68. data/lib/woods/extractors/assigned_value_discovery.rb +74 -0
  69. data/lib/woods/extractors/class_declarations.rb +121 -0
  70. data/lib/woods/extractors/configuration_extractor.rb +11 -3
  71. data/lib/woods/extractors/declaration_ancestry.rb +92 -0
  72. data/lib/woods/extractors/event_extractor.rb +8 -0
  73. data/lib/woods/extractors/graphql_extractor.rb +134 -77
  74. data/lib/woods/extractors/job_extractor.rb +5 -1
  75. data/lib/woods/extractors/lib_extractor.rb +132 -15
  76. data/lib/woods/extractors/mailer_extractor.rb +3 -5
  77. data/lib/woods/extractors/manager_extractor.rb +7 -21
  78. data/lib/woods/extractors/migration_declaration.rb +87 -0
  79. data/lib/woods/extractors/migration_extractor.rb +5 -39
  80. data/lib/woods/extractors/phlex_extractor.rb +6 -2
  81. data/lib/woods/extractors/policy_extractor.rb +9 -5
  82. data/lib/woods/extractors/poro_extractor.rb +112 -53
  83. data/lib/woods/extractors/pundit_extractor.rb +11 -6
  84. data/lib/woods/extractors/scheduled_job_extractor.rb +45 -4
  85. data/lib/woods/extractors/serializer_extractor.rb +34 -22
  86. data/lib/woods/extractors/shared_utility_methods.rb +18 -1
  87. data/lib/woods/extractors/source_nesting.rb +142 -106
  88. data/lib/woods/extractors/standalone_module_discovery.rb +123 -0
  89. data/lib/woods/extractors/state_machine_extractor.rb +46 -40
  90. data/lib/woods/extractors/view_component_extractor.rb +9 -7
  91. data/lib/woods/flow_assembler.rb +4 -1
  92. data/lib/woods/generation.rb +25 -0
  93. data/lib/woods/hooks/context_hint.rb +7 -2
  94. data/lib/woods/mcp/bearer_auth.rb +1 -1
  95. data/lib/woods/mcp/bootstrapper.rb +33 -7
  96. data/lib/woods/mcp/config_resolver.rb +26 -7
  97. data/lib/woods/mcp/index_reader.rb +125 -24
  98. data/lib/woods/mcp/index_reader_pinning.rb +16 -0
  99. data/lib/woods/mcp/origin_guard.rb +24 -77
  100. data/lib/woods/mcp/origin_policy.rb +124 -0
  101. data/lib/woods/mcp/renderers/markdown_renderer.rb +7 -1
  102. data/lib/woods/mcp/renderers/plain_renderer.rb +3 -1
  103. data/lib/woods/mcp/search_results.rb +7 -1
  104. data/lib/woods/mcp/server.rb +24 -4
  105. data/lib/woods/module_reconciliation.rb +151 -0
  106. data/lib/woods/path_dispatcher.rb +7 -2
  107. data/lib/woods/railtie_support.rb +8 -0
  108. data/lib/woods/rake_helpers.rb +43 -11
  109. data/lib/woods/release.rb +1 -1
  110. data/lib/woods/resilience/index_validator.rb +8 -3
  111. data/lib/woods/resilience/retryable_provider.rb +18 -1
  112. data/lib/woods/resolved_config.rb +68 -8
  113. data/lib/woods/retrieval/context_assembler.rb +3 -3
  114. data/lib/woods/retrieval/lexical_assembler.rb +3 -2
  115. data/lib/woods/retrieval/scope.rb +18 -2
  116. data/lib/woods/retrieval/source_evidence.rb +14 -2
  117. data/lib/woods/source_contributor_validation.rb +78 -0
  118. data/lib/woods/source_contributors.rb +116 -0
  119. data/lib/woods/source_inputs/handoff.rb +37 -0
  120. data/lib/woods/source_inputs/launcher.rb +53 -13
  121. data/lib/woods/source_inputs/manifest.rb +84 -3
  122. data/lib/woods/source_inputs/private_key.rb +44 -12
  123. data/lib/woods/source_inputs/scanner.rb +98 -27
  124. data/lib/woods/source_inputs/scopes.rb +1 -1
  125. data/lib/woods/source_inputs/session.rb +147 -15
  126. data/lib/woods/source_inputs/stable_reader.rb +127 -0
  127. data/lib/woods/source_inputs/status.rb +40 -8
  128. data/lib/woods/source_inputs/verifier.rb +28 -5
  129. data/lib/woods/source_path_encoding.rb +33 -0
  130. data/lib/woods/source_references/cache.rb +284 -0
  131. data/lib/woods/source_references/collector.rb +120 -0
  132. data/lib/woods/source_references/extraction.rb +185 -0
  133. data/lib/woods/source_references/inputs.rb +134 -0
  134. data/lib/woods/source_references/parser_adapter.rb +134 -0
  135. data/lib/woods/source_references/pass.rb +152 -0
  136. data/lib/woods/source_references/prism_adapter.rb +116 -0
  137. data/lib/woods/source_references/registry.rb +178 -0
  138. data/lib/woods/source_references/runtime_lookup.rb +127 -0
  139. data/lib/woods/source_references/value_class.rb +82 -0
  140. data/lib/woods/storage/metadata_store.rb +4 -1
  141. data/lib/woods/storage/qdrant.rb +2 -2
  142. data/lib/woods/unblocked/client.rb +12 -7
  143. data/lib/woods/unblocked/document_builder.rb +4 -1
  144. data/lib/woods/unblocked/exporter.rb +127 -37
  145. data/lib/woods/unblocked/sync_manifest.rb +137 -21
  146. data/lib/woods/unblocked/uri_migration.rb +105 -0
  147. data/lib/woods/util/host_guard.rb +3 -2
  148. data/lib/woods/version.rb +1 -1
  149. data/lib/woods/watch/catch_up.rb +138 -0
  150. data/lib/woods/watch/claim_lease.rb +150 -0
  151. data/lib/woods/watch/cli.rb +26 -2
  152. data/lib/woods/watch/daemon.rb +80 -59
  153. data/lib/woods/watch/installation/options.rb +1 -1
  154. data/lib/woods/watch/installation/receipt.rb +6 -1
  155. data/lib/woods/watch/managed_child.rb +1 -1
  156. data/lib/woods/watch/supervisor.rb +1 -1
  157. data/lib/woods/watch/tree_scan.rb +14 -2
  158. data/plugin/.claude-plugin/plugin.json +1 -1
  159. data/plugin/hooks/adapters/normalize.rb +3 -2
  160. data/plugin/hooks/woods-input-rules.sh +4 -0
  161. data/plugin/hooks/woods-refresh.sh +15 -7
  162. data/plugin/hooks/woods-session-start.sh +60 -3
  163. data/plugin/skills/woods-diagnose/SKILL.md +336 -2
  164. data/plugin/skills/woods-investigate/SKILL.md +11 -0
  165. data/plugin/skills/woods-mcp-config/SKILL.md +86 -0
  166. data/plugin/skills/woods-setup/SKILL.md +56 -1
  167. metadata +34 -5
@@ -7,6 +7,14 @@ description: Install, upgrade, and first-run-configure the Woods Rails code-inte
7
7
 
8
8
  Install a structural Index Server first. Embeddings and Console MCP are separate opt-ins.
9
9
 
10
+ For builds containing #590 (unreleased after `2.0.0`), managed preflight retains
11
+ intended bundle settings, project receipts omit the unused user config directory,
12
+ and watcher ownership tolerates Git checkout umasks. Check the installed revision
13
+ before relying on this. Keep the supporting executable for update/removal before
14
+ a permanent downgrade; never delete a receipt to bypass a conflict. Use a private
15
+ real directory for plan files when the system temporary path is a symlink. Follow
16
+ the [portability guidance](https://github.com/lost-in-the/woods/blob/main/docs/AGENT_SETUP.md#managed-claude-code-configuration).
17
+
10
18
  ## Managed configuration availability
11
19
 
12
20
  `woods-agent-config` (#407) is available in Woods `2.0.0.beta3`. First record the
@@ -20,6 +28,13 @@ journals contain private configuration bytes. See the canonical
20
28
  for host/Compose preflight, actual Claude file locations, conflict recovery,
21
29
  and removal. Preserve manual setup for older installed versions.
22
30
 
31
+ For v1-to-v2 upgrades, follow the [migration runbook](https://github.com/lost-in-the/woods/blob/main/docs/UPGRADING_TO_2.md).
32
+ A clean removes snapshot history inside the output directory as well as generated
33
+ index files. Back up consistently and choose whether to retain history before
34
+ cleaning. Remove legacy no-op `log_level` and unsafe-eval settings. Set custom
35
+ Console paths and session-tracer setup in `config/application.rb` before Railtie
36
+ initialization; other Console flags can remain in the normal initializer.
37
+
23
38
  ## Preflight
24
39
 
25
40
  Read repository instructions and preserve unrelated changes. Record:
@@ -62,6 +77,18 @@ When the preflight records an installed 1.x version, this is an upgrade, not an
62
77
 
63
78
  Before changing the Gemfile: back up any shared or durable index and agree on a rollback window — never upgrade one in place. After `bundle update woods`, run a full `bin/rails woods:extract` (not incremental; the old index is not a valid baseline across the major), then `woods:validate`. With embeddings configured, re-embed from scratch into a store matching the configured model; expect identifier-level churn in anything that consumed 1.x identifiers (exports, saved queries, downstream tooling). Verify MCP clients against the new surface rather than assuming 1.x tool behavior.
64
79
 
80
+ When adopting a reviewed post-2.0 revision containing the unreleased reference
81
+ expansion, establish its [full source-reference baseline](https://github.com/lost-in-the/woods/blob/main/docs/INCREMENTAL_EXTRACTION.md#source-reference-baseline-and-upgrades)
82
+ before resuming incremental maintenance. Record the loaded revision; the version
83
+ alone does not identify this planned 2.1 capability.
84
+
85
+ Supporting unreleased writers also refuse incremental extraction and targeted
86
+ refresh of a flat index with a manifest, or a generation manifest naming a
87
+ writer major version below 2. Run a full `woods:extract` as the upgrade baseline.
88
+ A generation with no writer field can be an early v2 beta; absence alone does
89
+ not identify v1. Read compatibility and a successful validation never replace
90
+ the required full migration.
91
+
65
92
  ## Extract and verify
66
93
 
67
94
  Structural setup needs no embedding provider:
@@ -74,6 +101,13 @@ bin/rails woods:stats
74
101
 
75
102
  If extraction fails, reproduce Rails boot and eager loading first. Do not inspect internal payload files when Woods tasks provide the check.
76
103
 
104
+ When the installed gem exposes `woods-extract`, use
105
+ `bundle exec woods-extract full` for source capture before Rails boots; follow
106
+ the [source freshness guide](https://github.com/lost-in-the/woods/blob/main/docs/SOURCE_FRESHNESS.md#establish-a-fresh-baseline)
107
+ for custom output paths. In supporting unreleased builds after 2.0.0, this
108
+ launcher prefers the application's executable `bin/rake` and otherwise uses
109
+ `bundle exec rake`. Preserve the application's environment and binstub setup.
110
+
77
111
  Writer-version provenance (#323) is available in Woods `2.0.0.beta3`; check the installed
78
112
  gem version's release notes before expecting `woods_status.index.woods_version`. When present,
79
113
  it names the last manifest publisher; `server.version` names the MCP reader.
@@ -202,11 +236,19 @@ SessionStart hooks check source content and report missing/failed evidence as
202
236
  unknown; silence does not acknowledge queued refresh work. Follow the [hook guide](https://github.com/lost-in-the/woods/blob/main/docs/WATCH_DAEMON.md#hooks-for-agent-sessions)
203
237
  for transport, retry and custom-root limits.
204
238
 
239
+ Supporting unreleased builds after 2.0.0 can publish a usable code index with
240
+ source freshness `unavailable` when evidence exceeds its serialized-size limit.
241
+ Follow `inspect_source_limits` and compare `unavailable.size_bytes` with
242
+ `unavailable.limit_bytes`; an identical full extraction cannot shrink it.
243
+ An oversized launcher handoff still starts a fresh child but cannot establish
244
+ verified preboot capture. Do not label this state current or prescribe repeated
245
+ rebuilds. See the [source evidence limits](https://github.com/lost-in-the/woods/blob/main/docs/SOURCE_FRESHNESS.md).
246
+
205
247
  ## Ask before expanding scope
206
248
 
207
249
  For pgvector, match the provider output and migration dimensions within 1–2,000. Default `text-embedding-3-large` output (3,072) needs an explicit smaller provider width or another backend; never silently truncate vectors. Early adapter/generator refusal is included in Woods `2.0.0`, so check the installed revision. See the [dimension contract](https://github.com/lost-in-the/woods/blob/main/docs/CONFIGURATION_REFERENCE.md#pgvector-postgresql).
208
250
 
209
- Require explicit approval before adding Ollama/OpenAI, pgvector/Qdrant, secrets, Console MCP/live-data access, HTTP transport, or purge overrides. The `:local` preset avoids cloud keys but requires the `sqlite3` gem, an installed/running Ollama service, and a pulled model (`ollama pull nomic-embed-text` by default); `:shared_filesystem` avoids sqlite3 but still uses Ollama. Recommend `gem "tokenizers", "~> 0.5"` for exact counting on dense Ruby source, while stating that it is optional.
251
+ Require explicit approval before adding Ollama/OpenAI, pgvector/Qdrant, secrets, Console MCP/live-data access, HTTP transport, or purge overrides. The `:local` preset avoids cloud keys but requires the `sqlite3` gem, an installed/running Ollama service, and a pulled model (`ollama pull nomic-embed-text` by default); `:shared_filesystem` avoids sqlite3 but still uses Ollama. Do not claim that installing a tokenizer gem establishes exact counts for every model. Supporting builds after 2.0.0 split complete prefixed inputs and request Ollama `truncate: false`; consult the installed embedding guide and its model-specific limits.
210
252
 
211
253
  ## Handoff
212
254
 
@@ -255,3 +297,16 @@ dependents and suggested tests manually; silence is not no impact. Do not clear
255
297
  refresh queues when optional hints time out. See the canonical
256
298
  [context guide](https://github.com/lost-in-the/woods/blob/main/docs/WATCH_DAEMON.md#optional-bounded-context-hints)
257
299
  for output/time limits, container root mapping and emitted-hint suppression.
300
+
301
+ ### Security-patch compatibility preflight
302
+
303
+ For an authorized Console installation on the 2.0 line, use Woods `2.0.1` or
304
+ later and review the [2.0.1 Console compatibility guide](https://github.com/lost-in-the/woods/blob/v2.0.1/docs/CONSOLE_MCP_SETUP.md#read-policy-compatibility)
305
+ before upgrading. Applications remaining on 1.6 should use `1.6.4` and its
306
+ [tagged Console guide](https://github.com/lost-in-the/woods/blob/v1.6.4/docs/CONSOLE_MCP_SETUP.md#read-policy-compatibility),
307
+ rather than applying this skill's 2.x setup instructions.
308
+
309
+ Record the installed version and loaded gem path; also record the locked revision
310
+ for Git-sourced builds. Updating the plugin does not update the gem. The 2.0.1
311
+ maintenance patch does not include the planned 2.1 features marked unreleased
312
+ elsewhere in this skill; continue checking each installed capability.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: woods
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leah Armstrong
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-09-23 00:00:00.000000000 Z
11
+ date: 2026-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mcp
@@ -215,7 +215,9 @@ files:
215
215
  - lib/woods/checks/generation_resolution.rb
216
216
  - lib/woods/checks/moved_messages.rb
217
217
  - lib/woods/chunking/chunk.rb
218
+ - lib/woods/chunking/contributor_chunks.rb
218
219
  - lib/woods/chunking/semantic_chunker.rb
220
+ - lib/woods/console/adapter_family.rb
219
221
  - lib/woods/console/audit_logger.rb
220
222
  - lib/woods/console/bridge_protocol.rb
221
223
  - lib/woods/console/confirmation.rb
@@ -267,10 +269,12 @@ files:
267
269
  - lib/woods/embedding/corpus.rb
268
270
  - lib/woods/embedding/fake.rb
269
271
  - lib/woods/embedding/indexer.rb
272
+ - lib/woods/embedding/input_budget.rb
270
273
  - lib/woods/embedding/openai.rb
271
274
  - lib/woods/embedding/provider.rb
272
275
  - lib/woods/embedding/text_preparer.rb
273
276
  - lib/woods/embedding/token_counter.rb
277
+ - lib/woods/embedding/vector_configuration.rb
274
278
  - lib/woods/evaluation/ablation_agent_payload.rb
275
279
  - lib/woods/evaluation/ablation_executor.rb
276
280
  - lib/woods/evaluation/ablation_provenance.rb
@@ -290,17 +294,21 @@ files:
290
294
  - lib/woods/export/typed_reader.rb
291
295
  - lib/woods/export/unit_facts.rb
292
296
  - lib/woods/extracted_unit.rb
297
+ - lib/woods/extraction_identities.rb
293
298
  - lib/woods/extractor.rb
294
299
  - lib/woods/extractors/action_cable_extractor.rb
300
+ - lib/woods/extractors/assigned_value_discovery.rb
295
301
  - lib/woods/extractors/ast_source_extraction.rb
296
302
  - lib/woods/extractors/behavioral_profile.rb
297
303
  - lib/woods/extractors/caching_extractor.rb
298
304
  - lib/woods/extractors/callback_analyzer.rb
305
+ - lib/woods/extractors/class_declarations.rb
299
306
  - lib/woods/extractors/component_discovery.rb
300
307
  - lib/woods/extractors/concern_extractor.rb
301
308
  - lib/woods/extractors/configuration_extractor.rb
302
309
  - lib/woods/extractors/controller_extractor.rb
303
310
  - lib/woods/extractors/database_view_extractor.rb
311
+ - lib/woods/extractors/declaration_ancestry.rb
304
312
  - lib/woods/extractors/declared_parent.rb
305
313
  - lib/woods/extractors/decorator_extractor.rb
306
314
  - lib/woods/extractors/engine_extractor.rb
@@ -316,6 +324,7 @@ files:
316
324
  - lib/woods/extractors/method_parameters.rb
317
325
  - lib/woods/extractors/middleware_argument.rb
318
326
  - lib/woods/extractors/middleware_extractor.rb
327
+ - lib/woods/extractors/migration_declaration.rb
319
328
  - lib/woods/extractors/migration_extractor.rb
320
329
  - lib/woods/extractors/model_extractor.rb
321
330
  - lib/woods/extractors/package_extractor.rb
@@ -334,6 +343,7 @@ files:
334
343
  - lib/woods/extractors/shared_dependency_scanner.rb
335
344
  - lib/woods/extractors/shared_utility_methods.rb
336
345
  - lib/woods/extractors/source_nesting.rb
346
+ - lib/woods/extractors/standalone_module_discovery.rb
337
347
  - lib/woods/extractors/state_machine_extractor.rb
338
348
  - lib/woods/extractors/test_mapping_extractor.rb
339
349
  - lib/woods/extractors/validator_extractor.rb
@@ -376,6 +386,7 @@ files:
376
386
  - lib/woods/mcp/index_reader_pinning.rb
377
387
  - lib/woods/mcp/initialization_guidance.rb
378
388
  - lib/woods/mcp/origin_guard.rb
389
+ - lib/woods/mcp/origin_policy.rb
379
390
  - lib/woods/mcp/protocol_policy.rb
380
391
  - lib/woods/mcp/provider_probe.rb
381
392
  - lib/woods/mcp/published_lexical_retriever.rb
@@ -397,6 +408,7 @@ files:
397
408
  - lib/woods/mcp/traversal_response.rb
398
409
  - lib/woods/mcp/version_aware_tool_dispatch.rb
399
410
  - lib/woods/model_name_cache.rb
411
+ - lib/woods/module_reconciliation.rb
400
412
  - lib/woods/notion/client.rb
401
413
  - lib/woods/notion/exporter.rb
402
414
  - lib/woods/notion/mappers/column_mapper.rb
@@ -464,6 +476,8 @@ files:
464
476
  - lib/woods/session_tracer/solid_cache_store.rb
465
477
  - lib/woods/session_tracer/store.rb
466
478
  - lib/woods/session_tracer/unit_resolver.rb
479
+ - lib/woods/source_contributor_validation.rb
480
+ - lib/woods/source_contributors.rb
467
481
  - lib/woods/source_inputs/consumer_errors.rb
468
482
  - lib/woods/source_inputs/handoff.rb
469
483
  - lib/woods/source_inputs/launcher.rb
@@ -472,8 +486,20 @@ files:
472
486
  - lib/woods/source_inputs/scanner.rb
473
487
  - lib/woods/source_inputs/scopes.rb
474
488
  - lib/woods/source_inputs/session.rb
489
+ - lib/woods/source_inputs/stable_reader.rb
475
490
  - lib/woods/source_inputs/status.rb
476
491
  - lib/woods/source_inputs/verifier.rb
492
+ - lib/woods/source_path_encoding.rb
493
+ - lib/woods/source_references/cache.rb
494
+ - lib/woods/source_references/collector.rb
495
+ - lib/woods/source_references/extraction.rb
496
+ - lib/woods/source_references/inputs.rb
497
+ - lib/woods/source_references/parser_adapter.rb
498
+ - lib/woods/source_references/pass.rb
499
+ - lib/woods/source_references/prism_adapter.rb
500
+ - lib/woods/source_references/registry.rb
501
+ - lib/woods/source_references/runtime_lookup.rb
502
+ - lib/woods/source_references/value_class.rb
477
503
  - lib/woods/storage/graph_store.rb
478
504
  - lib/woods/storage/inapplicable_backend.rb
479
505
  - lib/woods/storage/local_corpus_stats.rb
@@ -494,12 +520,15 @@ files:
494
520
  - lib/woods/unblocked/exporter.rb
495
521
  - lib/woods/unblocked/rate_limiter.rb
496
522
  - lib/woods/unblocked/sync_manifest.rb
523
+ - lib/woods/unblocked/uri_migration.rb
497
524
  - lib/woods/update_check.rb
498
525
  - lib/woods/util/host_guard.rb
499
526
  - lib/woods/util/uuid5.rb
500
527
  - lib/woods/version.rb
501
528
  - lib/woods/watch/boot_snapshot.rb
529
+ - lib/woods/watch/catch_up.rb
502
530
  - lib/woods/watch/child_environment.rb
531
+ - lib/woods/watch/claim_lease.rb
503
532
  - lib/woods/watch/cli.rb
504
533
  - lib/woods/watch/daemon.rb
505
534
  - lib/woods/watch/event_stream.rb
@@ -547,10 +576,10 @@ licenses:
547
576
  - MIT
548
577
  metadata:
549
578
  homepage_uri: https://github.com/lost-in-the/woods
550
- source_code_uri: https://github.com/lost-in-the/woods/tree/v2.0.0
551
- changelog_uri: https://github.com/lost-in-the/woods/blob/v2.0.0/CHANGELOG.md
579
+ source_code_uri: https://github.com/lost-in-the/woods/tree/v2.1.0
580
+ changelog_uri: https://github.com/lost-in-the/woods/blob/v2.1.0/CHANGELOG.md
552
581
  bug_tracker_uri: https://github.com/lost-in-the/woods/issues
553
- documentation_uri: https://github.com/lost-in-the/woods/tree/v2.0.0/docs
582
+ documentation_uri: https://github.com/lost-in-the/woods/tree/v2.1.0/docs
554
583
  rubygems_mfa_required: 'true'
555
584
  post_install_message:
556
585
  rdoc_options: []