woods 2.0.0.beta3 → 2.0.0.beta4
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/CHANGELOG.md +77 -0
- data/CONTRIBUTING.md +29 -17
- data/README.md +92 -177
- data/docs/AGENT_GUIDE.md +26 -4
- data/docs/AGENT_SETUP.md +18 -8
- data/docs/BACKEND_MATRIX.md +5 -0
- data/docs/CONFIGURATION_REFERENCE.md +74 -8
- data/docs/CONSOLE_MCP_SETUP.md +45 -2
- data/docs/DOCKER_SETUP.md +1 -1
- data/docs/EXTRACTOR_REFERENCE.md +9 -1
- data/docs/INCREMENTAL_EXTRACTION.md +30 -6
- data/docs/MCP_SERVERS.md +57 -2
- data/docs/MCP_TOOL_COOKBOOK.md +4 -4
- data/docs/MCP_WORKTREE_SETUP.md +43 -83
- data/docs/PUBLISHED_INDEX.md +17 -0
- data/docs/RETRIEVAL_GUIDE.md +24 -5
- data/docs/TROUBLESHOOTING.md +12 -13
- data/docs/UPGRADING_TO_2.md +6 -2
- data/docs/WATCH_DAEMON.md +18 -8
- data/exe/woods-mcp-start +14 -9
- data/lib/generators/woods/pgvector_generator.rb +8 -2
- data/lib/woods/agent_configuration/applier.rb +5 -3
- data/lib/woods/agent_configuration/cli.rb +2 -2
- data/lib/woods/agent_configuration/layout.rb +13 -0
- data/lib/woods/console/credential_scanner.rb +4 -3
- data/lib/woods/console/dispatch_pipeline.rb +7 -0
- data/lib/woods/console/embedded_executor.rb +31 -9
- data/lib/woods/console/sql_noise_stripper.rb +9 -7
- data/lib/woods/console/sql_table_scanner.rb +47 -7
- data/lib/woods/console/sql_validator.rb +49 -9
- data/lib/woods/console/sqlite_read_guard.rb +46 -0
- data/lib/woods/coordination/pipeline_lock.rb +3 -2
- data/lib/woods/embedding/indexer.rb +24 -14
- data/lib/woods/extractor.rb +45 -12
- data/lib/woods/extractors/declared_parent.rb +55 -0
- data/lib/woods/extractors/graphql_extractor.rb +2 -11
- data/lib/woods/extractors/lib_extractor.rb +10 -8
- data/lib/woods/extractors/mailer_extractor.rb +6 -10
- data/lib/woods/extractors/model_extractor.rb +1 -15
- data/lib/woods/extractors/poro_extractor.rb +10 -8
- data/lib/woods/extractors/shared_utility_methods.rb +22 -5
- data/lib/woods/mcp/bearer_auth.rb +2 -1
- data/lib/woods/mcp/bootstrapper.rb +17 -4
- data/lib/woods/mcp/config_resolver.rb +2 -1
- data/lib/woods/mcp/index_reader.rb +11 -2
- data/lib/woods/mcp/renderers/markdown_renderer.rb +14 -8
- data/lib/woods/mcp/renderers/plain_renderer.rb +11 -7
- data/lib/woods/mcp/server.rb +22 -28
- data/lib/woods/mcp/tool_contract.rb +1 -1
- data/lib/woods/mcp/tool_response_renderer.rb +16 -0
- data/lib/woods/mcp/traversal_evidence_text.rb +1 -1
- data/lib/woods/mcp/traversal_response.rb +22 -0
- data/lib/woods/path_dispatcher.rb +6 -5
- data/lib/woods/published_index/typed_unit_reader.rb +40 -3
- data/lib/woods/published_index.rb +2 -2
- data/lib/woods/rake_helpers.rb +2 -12
- data/lib/woods/retrieval/lexical_assembler.rb +14 -3
- data/lib/woods/retrieval/lexical_index.rb +2 -1
- data/lib/woods/session_tracer/file_store.rb +6 -1
- data/lib/woods/source_inputs/consumer_errors.rb +4 -0
- data/lib/woods/storage/pgvector.rb +6 -2
- data/lib/woods/temporal/json_snapshot_store.rb +35 -7
- data/lib/woods/version.rb +1 -1
- data/lib/woods/watch/daemon.rb +18 -4
- data/plugin/.claude-plugin/plugin.json +1 -1
- data/plugin/hooks/woods-input-rules.sh +4 -4
- data/plugin/skills/woods-agent-enable/SKILL.md +7 -1
- data/plugin/skills/woods-diagnose/SKILL.md +64 -33
- data/plugin/skills/woods-investigate/SKILL.md +51 -12
- data/plugin/skills/woods-mcp-config/SKILL.md +11 -11
- data/plugin/skills/woods-setup/SKILL.md +14 -11
- metadata +8 -5
|
@@ -16,7 +16,7 @@ This skill describes the Woods 2.x line; the authoritative minimum version lives
|
|
|
16
16
|
|
|
17
17
|
## Managed configuration availability
|
|
18
18
|
|
|
19
|
-
`woods-agent-config` (#407) is
|
|
19
|
+
`woods-agent-config` (#407) is available in Woods `2.0.0.beta3`. First record the
|
|
20
20
|
installed version and test `bundle exec woods-agent-config --help` in the
|
|
21
21
|
selected application bundle. When supported, use its saved setup/update/remove
|
|
22
22
|
plan and explicit client/scope/root selection; apply the reviewed plan within
|
|
@@ -46,9 +46,22 @@ For versions documenting environment-boot snapshots, confirm that the command is
|
|
|
46
46
|
`bundle exec rake woods:watch`, with no preceding `environment` task, and check
|
|
47
47
|
whether boot inputs keep changing during initialization or catch-up.
|
|
48
48
|
|
|
49
|
+
### Watch retains facts from an initializer deleted while stopped
|
|
50
|
+
|
|
51
|
+
Record the installed revision. Unreleased after `2.0.0.beta3`, startup preserves
|
|
52
|
+
registered deleted boot inputs as full-extraction obligations. On earlier builds,
|
|
53
|
+
stop watch, run a successful full extraction in a fresh process, then restart
|
|
54
|
+
standalone `woods:watch`. See the installed version's watch guide.
|
|
55
|
+
|
|
56
|
+
### A cleaned index directory still exists
|
|
57
|
+
|
|
58
|
+
Unreleased after `2.0.0.beta3`, `woods:clean` retains the output directory and
|
|
59
|
+
hidden extraction guard for concurrent writer coordination. Verify published
|
|
60
|
+
artifacts are gone; do not remove that guard while writers may be running.
|
|
61
|
+
|
|
49
62
|
### Watch misses edits under a shared directory alias
|
|
50
63
|
|
|
51
|
-
Check the installed version: logical alias preservation (#445) is
|
|
64
|
+
Check the installed version: logical alias preservation (#445) is available in Woods `2.0.0.beta3`.
|
|
52
65
|
Older polling/catch-up walkers could visit an irrelevant alias first and suppress
|
|
53
66
|
`app/models` when both point to the same physical directory. Compare the logical
|
|
54
67
|
path with the extraction input path; a running daemon alone does not prove coverage.
|
|
@@ -58,8 +71,8 @@ See the installed version's watch guide before assuming this behavior.
|
|
|
58
71
|
|
|
59
72
|
### Session trace reports ambiguous identity
|
|
60
73
|
|
|
61
|
-
The `session_trace` `ambiguous_identity` error (#213) is
|
|
62
|
-
|
|
74
|
+
The `session_trace` `ambiguous_identity` error (#213) is available in Woods `2.0.0.beta3`;
|
|
75
|
+
check the installed gem before expecting it. It names a dependency
|
|
63
76
|
with multiple published extraction types, so no partial session context is
|
|
64
77
|
returned. Use `depth: 0` for the timeline or inspect the named candidates with
|
|
65
78
|
explicit `lookup` types. Do not choose one by index order or suggest that a full
|
|
@@ -72,7 +85,7 @@ For a `same-type identifier collision`, inspect both named source files and the
|
|
|
72
85
|
Rails loader before suggesting source edits. Wrapper-nested class naming needs
|
|
73
86
|
Zeitwerk mode and Zeitwerk >= 2.6.9; an older loader or classic mode can produce
|
|
74
87
|
the collision even when the namespace wrappers are valid. The expanded error
|
|
75
|
-
guidance (B-149) is
|
|
88
|
+
guidance (B-149) is available in Woods `2.0.0.beta3`; check the installed version
|
|
76
89
|
first. Follow the [loader compatibility guidance](https://github.com/lost-in-the/woods/blob/main/docs/UPGRADING_TO_2.md#check-the-loader-for-wrapper-nested-classes).
|
|
77
90
|
|
|
78
91
|
```bash
|
|
@@ -82,7 +95,7 @@ bin/rails woods:stats
|
|
|
82
95
|
|
|
83
96
|
If missing or stale, run the narrow maintenance path justified by the evidence: `woods:incremental` for known file changes or `woods:extract` for first run, broad change, upgrade, or drift. Woods tasks understand `generation.json`; do not assume `manifest.json` is at the root.
|
|
84
97
|
|
|
85
|
-
Semantic graph validation (#413) is
|
|
98
|
+
Semantic graph validation (#413) is available in Woods `2.0.0.beta3`; verify the
|
|
86
99
|
installed gem before expecting these errors. Supporting versions check typed
|
|
87
100
|
unit identity, graph/index agreement and forward/reverse/file/type memberships
|
|
88
101
|
within one pinned generation. Preserve the failing generation and exact error,
|
|
@@ -95,7 +108,7 @@ an external name from an internal unit omitted everywhere. Follow the
|
|
|
95
108
|
|
|
96
109
|
If external targets such as `http_api` lose dependents after incremental
|
|
97
110
|
extraction, check whether the installed Woods version includes B-193.
|
|
98
|
-
The fix is
|
|
111
|
+
The fix is available in Woods `2.0.0.beta3`; installing this plugin does not upgrade the gem.
|
|
99
112
|
Affected indexes need one full extraction after upgrading to a fixed version.
|
|
100
113
|
Follow the [recovery guide](https://github.com/lost-in-the/woods/blob/main/docs/TROUBLESHOOTING.md#external-dependency-targets-lose-dependents-after-incremental-extraction).
|
|
101
114
|
|
|
@@ -107,7 +120,7 @@ Confirm the installed release and filesystem support retention locks before
|
|
|
107
120
|
using the pinning examples; flat layouts need writers stopped for a consistent copy.
|
|
108
121
|
|
|
109
122
|
A host reader can report a container daemon dead because foreign-host records
|
|
110
|
-
are rejected by default. Foreign heartbeat trust (#321) is
|
|
123
|
+
are rejected by default. Foreign heartbeat trust (#321) is available in Woods `2.0.0.beta3`: first
|
|
111
124
|
check the installed Woods version and that version's release notes. Only for a
|
|
112
125
|
supporting version, offer `WOODS_WATCH_TRUST_FOREIGN_HOST=1` in every relevant
|
|
113
126
|
task/MCP reader and follow [cross-host liveness](https://github.com/lost-in-the/woods/blob/main/docs/WATCH_DAEMON.md#cross-host-liveness).
|
|
@@ -115,12 +128,18 @@ Fresh `degraded` still means incremental work is needed; a fresh `running`
|
|
|
115
128
|
record can outlive a crashed foreign daemon by up to 15 minutes. Older versions
|
|
116
129
|
need their status check run in the daemon's own container.
|
|
117
130
|
|
|
118
|
-
Writer-version provenance (#323) is
|
|
119
|
-
release notes before expecting it. If `index.woods_version` exists, compare it
|
|
131
|
+
Writer-version provenance (#323) is available in Woods `2.0.0.beta3`: verify the installed
|
|
132
|
+
gem version's release notes before expecting it. If `index.woods_version` exists, compare it
|
|
120
133
|
with `server.version`; missing/null is unknown, not a failure. A validator
|
|
121
134
|
major-version warning calls for full extraction and upgrade review, while a match
|
|
122
135
|
does not certify retained units were migrated. See [writer provenance](https://github.com/lost-in-the/woods/blob/main/docs/PUBLISHED_INDEX.md#manifest-writer-provenance).
|
|
123
136
|
|
|
137
|
+
Unreleased after `2.0.0.beta3`: incremental/refresh handled source errors keep
|
|
138
|
+
the previous generation active and leave watch batches pending. Repair the
|
|
139
|
+
logged source error and retry the complete batch; see
|
|
140
|
+
[handled source errors](https://github.com/lost-in-the/woods/blob/main/docs/INCREMENTAL_EXTRACTION.md#handled-source-errors-and-retry).
|
|
141
|
+
Check the installed revision before relying on this behavior.
|
|
142
|
+
|
|
124
143
|
If a one-shot extraction raises `Could not publish generation`, the candidate
|
|
125
144
|
payload was written but never made visible; readers still serve the previous
|
|
126
145
|
complete generation. Fix the named filesystem, permission, space, or mount
|
|
@@ -139,12 +158,12 @@ tracks current source.
|
|
|
139
158
|
For volatile-dependency reports dominated by one target, compare the full
|
|
140
159
|
`stats.volatile_dependency_count` with the persisted array and use the
|
|
141
160
|
[ratio tuning guidance](https://github.com/lost-in-the/woods/blob/main/docs/CONFIGURATION_REFERENCE.md#pipeline-options).
|
|
142
|
-
The optional per-target cap (B-188) is
|
|
161
|
+
The optional per-target cap (B-188) is available in Woods `2.0.0.beta3`; check the
|
|
143
162
|
installed gem before suggesting `volatile_dependency_limit_per_target`.
|
|
144
163
|
Re-extract to publish configuration changes; the report remains informational.
|
|
145
164
|
|
|
146
165
|
For a shallow-checkout git-enrichment warning, the shallow guard (B-189) is
|
|
147
|
-
|
|
166
|
+
available in Woods `2.0.0.beta3`; check the installed version first. Fetch complete
|
|
148
167
|
history with `git fetch --unshallow` or `actions/checkout` `fetch-depth: 0`, then
|
|
149
168
|
run full extraction. Depth two only enables a two-commit diff; it does not
|
|
150
169
|
restore complete churn history. See the
|
|
@@ -152,7 +171,7 @@ restore complete churn history. See the
|
|
|
152
171
|
|
|
153
172
|
For `Git enrichment omitted: history could not be read completely`, first check
|
|
154
173
|
whether the installed Woods release documents the new streamed-history policy;
|
|
155
|
-
it is
|
|
174
|
+
it is available in Woods `2.0.0.beta3`. Supporting versions require Git 2.31 or newer.
|
|
156
175
|
Check `git --version` in the extraction container and repository/object-store
|
|
157
176
|
access with its `WOODS_GIT_DIR` setting. A failed history stream is discarded;
|
|
158
177
|
repair git access and run full extraction to refresh retained metadata. See the
|
|
@@ -162,14 +181,14 @@ After a bundle change or removal of a dynamically defined job, incremental
|
|
|
162
181
|
extraction can retain stale runtime units. Use a fresh process with the updated
|
|
163
182
|
bundle for full extraction, then validate. For missing external gem paths,
|
|
164
183
|
first distinguish an upgraded bundle from a reader on a different host/mount.
|
|
165
|
-
The more explicit `woods:validate` bundle-update remedy (B-166) is
|
|
166
|
-
|
|
184
|
+
The more explicit `woods:validate` bundle-update remedy (B-166) is available in Woods
|
|
185
|
+
`2.0.0.beta3`; the full-extraction recovery works on older versions too.
|
|
167
186
|
See [runtime removals and bundle updates](https://github.com/lost-in-the/woods/blob/main/docs/INCREMENTAL_EXTRACTION.md#runtime-removals-and-bundle-updates).
|
|
168
187
|
|
|
169
188
|
### Export identity checks
|
|
170
189
|
|
|
171
|
-
For Notion or Unblocked exports, typed selection checks (#213) are
|
|
172
|
-
|
|
190
|
+
For Notion or Unblocked exports, typed selection checks (#213) are available in Woods
|
|
191
|
+
`2.0.0.beta3`; check the installed gem before expecting them. A missing or
|
|
173
192
|
mismatched export identity calls for index validation and a fresh extraction,
|
|
174
193
|
not a force flag. An `ambiguous export URI` means two types share an identifier
|
|
175
194
|
and source file: preserve existing documents and report the collision; do not
|
|
@@ -186,26 +205,35 @@ Compare the client config with the exact command, absolute `cwd`, bundle, and in
|
|
|
186
205
|
bundle exec woods-mcp-start ./tmp/woods
|
|
187
206
|
```
|
|
188
207
|
|
|
208
|
+
If startup says `Could not resolve a published Woods index` (unreleased after
|
|
209
|
+
`2.0.0.beta3`) or names a missing `manifest.json` on older versions, first check
|
|
210
|
+
the selected index path: an atomic index uses `generation.json` to locate its
|
|
211
|
+
payload manifest. The new headline does not change index validation or recovery.
|
|
212
|
+
Point at an existing index before suggesting a new extraction. Prefer the
|
|
213
|
+
explicit path above; `WOODS_DIR` is also supported. An unreleased change after
|
|
214
|
+
`2.0.0.beta3` adds `WOODS_OUTPUT` after those two choices, so verify the installed
|
|
215
|
+
version's configuration guide before relying on that fallback.
|
|
216
|
+
|
|
189
217
|
Then reconnect through the MCP client and call `woods_status`. Use client-native tool inspection after initialization. Expect 14 packaged Index tools, not all conditional schemas.
|
|
190
218
|
|
|
191
219
|
For Docker-only bundles, test the configured container command instead, for example `docker compose exec -T app bundle exec woods-mcp /app/tmp/woods`. Use the container path for a container process and a host path only for a host process.
|
|
192
220
|
|
|
193
221
|
For corrupt pipeline cooldown state, first confirm this is a custom server
|
|
194
222
|
with `pipeline_repair` registered; packaged `woods-mcp` does not wire it.
|
|
195
|
-
Recovery through `reset_cooldowns` (B-159) is
|
|
223
|
+
Recovery through `reset_cooldowns` (B-159) is available in Woods `2.0.0.beta3`.
|
|
196
224
|
Check the installed version before attempting it and follow the
|
|
197
225
|
[corrupt cooldown recovery guide](https://github.com/lost-in-the/woods/blob/main/docs/TROUBLESHOOTING.md#corrupt-pipeline-cooldown-state).
|
|
198
226
|
|
|
199
227
|
## Deferred refresh hooks
|
|
200
228
|
|
|
201
|
-
Expanded hook coverage and `woods:hook_refresh` (#408) are
|
|
202
|
-
|
|
229
|
+
Expanded hook coverage and `woods:hook_refresh` (#408) are available in Woods
|
|
230
|
+
`2.0.0.beta3`. Verify the installed task through the configured host/container
|
|
203
231
|
command before diagnosing this plugin's queue. Read `<output>/hook.log` and
|
|
204
232
|
`hook-pending/`; status 75 means an active daemon deferred work, not that it was
|
|
205
233
|
consumed. Fix task availability, boot/publication failures or a stalled command,
|
|
206
234
|
then retry with the same output and command prefix. Preserve pending events.
|
|
207
235
|
For mkdir fallback locks, inspect the recorded owner PID before manual removal.
|
|
208
|
-
The concurrent dead-owner recovery fix is
|
|
236
|
+
The concurrent dead-owner recovery fix is included in plugin `2.3.36`.
|
|
209
237
|
If competing hooks leave an empty lock without a drain, preserve the queued
|
|
210
238
|
events and follow the canonical recovery guide below.
|
|
211
239
|
A Docker timeout does not prove the application process stopped. Prefer a
|
|
@@ -214,8 +242,8 @@ resident watcher for sustained edits and follow the
|
|
|
214
242
|
|
|
215
243
|
## Partial dependency answers
|
|
216
244
|
|
|
217
|
-
Traversal budgets (`max_nodes`/`max_edges`, #311) are
|
|
218
|
-
|
|
245
|
+
Traversal budgets (`max_nodes`/`max_edges`, #311) are available in Woods `2.0.0.beta3`.
|
|
246
|
+
Check the installed gem version and connected tool schema before
|
|
219
247
|
using them; installing this plugin does not upgrade the gem. On a supporting
|
|
220
248
|
server, `partial`/`partial_reason` means the walk stopped early, independently
|
|
221
249
|
of page truncation. Do not claim an exhaustive blast radius or treat empty
|
|
@@ -225,7 +253,7 @@ paging alone only visits the discovered prefix. See the
|
|
|
225
253
|
|
|
226
254
|
## 4. Check semantic retrieval
|
|
227
255
|
|
|
228
|
-
Configured retrieval defaults (#446) are
|
|
256
|
+
Configured retrieval defaults (#446) are available in Woods `2.0.0.beta3`. For an installed
|
|
229
257
|
version that supports them, an omitted tool budget uses the serving retriever's
|
|
230
258
|
configured default; an explicit budget overrides it. Standalone MCP does not
|
|
231
259
|
inherit the host initializer's token setting from the embedding snapshot.
|
|
@@ -233,7 +261,7 @@ Do not tune relevance with similarity_threshold: it is inert and deprecated.
|
|
|
233
261
|
Use query/type/scope selection and inspect ranking evidence instead. See
|
|
234
262
|
[retrieval tuning](https://github.com/lost-in-the/woods/blob/main/docs/RETRIEVAL_GUIDE.md#tuning).
|
|
235
263
|
|
|
236
|
-
Native embedding completeness checks (#442/#444) are
|
|
264
|
+
Native embedding completeness checks (#442/#444) are available in Woods `2.0.0.beta3`;
|
|
237
265
|
confirm the installed version first. If embedding reports `Embedding input
|
|
238
266
|
incomplete`, repair the named published extraction artifact or rebuild extraction
|
|
239
267
|
before retrying. Do not use `WOODS_ALLOW_PURGE=1` to bypass an integrity failure;
|
|
@@ -241,7 +269,7 @@ it only permits intentional mass deletion. Source-empty units deliberately retai
|
|
|
241
269
|
metadata without vectors. See the canonical
|
|
242
270
|
[input-integrity guide](https://github.com/lost-in-the/woods/blob/main/docs/RETRIEVAL_GUIDE.md#input-integrity-and-source-empty-units).
|
|
243
271
|
|
|
244
|
-
Only diagnose this layer when structural tools work and `codebase_retrieve` fails. First check `woods_status.retriever.mode`. For lexical mode, validate the published extraction index and follow the capability check below. For semantic mode, check the configured provider/model/vector store, provider reachability, and whether `woods:embed` completed.
|
|
272
|
+
Only diagnose this layer when structural tools work and `codebase_retrieve` fails. If a no-provider message recommends only embeddings or `search`, check the lexical capability below: beta3 supports explicit `WOODS_RETRIEVAL_MODE=lexical` even though that error omits it. Put the setting in the MCP process environment and restart; never silently change retrieval modes. First check `woods_status.retriever.mode`. For lexical mode, validate the published extraction index and follow the capability check below. For semantic mode, check the configured provider/model/vector store, provider reachability, and whether `woods:embed` completed.
|
|
245
273
|
|
|
246
274
|
- OpenAI: verify the key exists without printing it.
|
|
247
275
|
- Ollama: verify the service and configured model locally.
|
|
@@ -252,7 +280,7 @@ Only diagnose this layer when structural tools work and `codebase_retrieve` fail
|
|
|
252
280
|
For metadata appearing in another index or worktree, compare `WOODS_OUTPUT`,
|
|
253
281
|
`config.output_dir`, and any explicit `metadata_store_options[:database]`.
|
|
254
282
|
The default SQLite path following `WOODS_OUTPUT` during embedding (B-156) is
|
|
255
|
-
|
|
283
|
+
available in Woods `2.0.0.beta3`; check the installed version before relying on it.
|
|
256
284
|
An explicit database path still wins. See the
|
|
257
285
|
[SQLite path contract](https://github.com/lost-in-the/woods/blob/main/docs/CONFIGURATION_REFERENCE.md#sqlite-metadata)
|
|
258
286
|
for isolation and upgrade steps.
|
|
@@ -261,7 +289,7 @@ for isolation and upgrade steps.
|
|
|
261
289
|
|
|
262
290
|
For repeated missing-token boot warnings on a stdio-only host, check whether
|
|
263
291
|
its installed version supports `console_mcp_http_enabled = false` before
|
|
264
|
-
suggesting it; this option is
|
|
292
|
+
suggesting it; this option is available in Woods `2.0.0.beta3`. The default
|
|
265
293
|
preserves HTTP enablement, so selecting stdio as a client alone does not
|
|
266
294
|
suppress HTTP token validation. Never disable authentication on an HTTP
|
|
267
295
|
endpoint to silence this warning.
|
|
@@ -270,6 +298,8 @@ Console failures are live Rails/config/security failures, not Index failures. Ve
|
|
|
270
298
|
|
|
271
299
|
For MySQL SQL refusals, inspect the executing session's `sql_mode` and the installed version's Console guide. Do not change quote modes to bypass a security refusal.
|
|
272
300
|
|
|
301
|
+
For SQLite SQL refusals on `2.0.0.beta4` or a reviewed revision containing its Console corrections, consult the installed Console guide for supported identifier and table-reference syntax. Simplify the query to supported syntax; never relax the blocked-table or function policy. These builds also check resolved default scopes and scan normalized response values. Confirm a patched gem is published before recommending it, and check the installed version’s canonical Console guide; do not infer release availability from this plugin.
|
|
302
|
+
|
|
273
303
|
Nine tools are normal. Eleven appear only with `console_embedded_read_tools`. Do not chase Tier 2/3 or `console_eval`; they do not register in supported packaged modes. Never work around redaction, credential scanning, SQL validation, or a block.
|
|
274
304
|
|
|
275
305
|
## Report
|
|
@@ -280,7 +310,7 @@ Canonical guide: [TROUBLESHOOTING.md](https://github.com/lost-in-the/woods/blob/
|
|
|
280
310
|
|
|
281
311
|
## Lexical retrieval capability check
|
|
282
312
|
|
|
283
|
-
|
|
313
|
+
Lexical retrieval is available from `2.0.0.beta3`. Before proposing it, verify the installed gem
|
|
284
314
|
exposes `Woods::Configuration#retrieval_mode` and its matching guide documents
|
|
285
315
|
`WOODS_RETRIEVAL_MODE`. Keep the installed-version preflight; do not infer support
|
|
286
316
|
from the plugin version or an unreleased checkout.
|
|
@@ -303,7 +333,7 @@ query. Scoping can hide relevant cross-boundary relationships, so broaden the
|
|
|
303
333
|
request deliberately when the task needs them. See the
|
|
304
334
|
[scope contract](https://github.com/lost-in-the/woods/blob/main/docs/RETRIEVAL_GUIDE.md#explicit-package-and-source-path-scopes).
|
|
305
335
|
|
|
306
|
-
## Source-content freshness (
|
|
336
|
+
## Source-content freshness (Woods 2.0.0.beta3; #405)
|
|
307
337
|
|
|
308
338
|
Check installed-version support before using `woods-extract` or the optional
|
|
309
339
|
`woods_status.source_check` argument. With support, inspect
|
|
@@ -326,7 +356,7 @@ coordinates are not physical file offsets; unknown generation remains unknown.
|
|
|
326
356
|
Keep full-source access available. See the canonical
|
|
327
357
|
[evidence contract](https://github.com/lost-in-the/woods/blob/main/docs/RETRIEVAL_GUIDE.md#compact-published-evidence-and-api-outlines).
|
|
328
358
|
|
|
329
|
-
## Explicit edit adapters (
|
|
359
|
+
## Explicit edit adapters (Woods 2.0.0.beta3; #409)
|
|
330
360
|
|
|
331
361
|
Check the installed gem exposes `woods:hook_refresh` before enabling hooks.
|
|
332
362
|
Claude's registered wrapper covers one documented edit path; OpenCode 1.18.27
|
|
@@ -341,7 +371,7 @@ user's setup request. Follow [client hooks](https://github.com/lost-in-the/woods
|
|
|
341
371
|
## Optional context hints
|
|
342
372
|
|
|
343
373
|
Check installed `bundle exec woods-hook-context --help` before enabling
|
|
344
|
-
`WOODS_HOOK_CONTEXT_ENABLED=1`; this capability is
|
|
374
|
+
`WOODS_HOOK_CONTEXT_ENABLED=1`; this capability is available in Woods `2.0.0.beta3` and the
|
|
345
375
|
plugin does not upgrade the gem. Context and refresh opt-ins are independent;
|
|
346
376
|
`WOODS_HOOKS_DISABLED=1` disables both. Native Claude context is synchronous and
|
|
347
377
|
bounded, with served-generation and pre-refresh/unknown labels. Verify candidate
|
|
@@ -352,7 +382,8 @@ for output/time limits, container root mapping and emitted-hint suppression.
|
|
|
352
382
|
|
|
353
383
|
### Obsidian destination conflicts
|
|
354
384
|
|
|
355
|
-
Destination ownership preflight (#441) is
|
|
385
|
+
Destination ownership preflight (#441) is available in Woods `2.0.0.beta3`; first check
|
|
386
|
+
the installed Woods version and
|
|
356
387
|
its matching guide. On versions with this check, `refusing <path>: unmanaged or modified destination`
|
|
357
388
|
means the export preserved a conflicting note, setting, or sidecar and skipped the stale-note sweep.
|
|
358
389
|
A `.woods-vault` sentinel or force-purge flag does not authorize overwriting it. Inspect and back up
|
|
@@ -10,7 +10,7 @@ Woods is runtime evidence: resolved routes, schema, associations, callbacks, inl
|
|
|
10
10
|
## Preflight
|
|
11
11
|
|
|
12
12
|
Supporting servers include concise MCP initialization/discovery guidance without
|
|
13
|
-
this plugin. That feature (#402) is
|
|
13
|
+
this plugin. That feature (#402) is available in Woods `2.0.0.beta3`; check the
|
|
14
14
|
installed server version, and do not require it from protocol `2024-11-05`.
|
|
15
15
|
Follow the [agent guide](https://github.com/lost-in-the/woods/blob/main/docs/AGENT_GUIDE.md)
|
|
16
16
|
when instructions are absent. A registered tool does not establish retrieval
|
|
@@ -41,7 +41,7 @@ The normal packaged Index Server registers 14 tools; conditional schemas registe
|
|
|
41
41
|
|
|
42
42
|
## Partial search answers
|
|
43
43
|
|
|
44
|
-
Search completeness (#410) is
|
|
44
|
+
Search completeness (#410) is available in Woods `2.0.0.beta3`. Verify the installed
|
|
45
45
|
server version and response before relying on it; this plugin does not upgrade
|
|
46
46
|
the gem. On supporting versions, `result_count` counts returned rows, while
|
|
47
47
|
`completeness.reason: exhausted` establishes an exact total for the requested
|
|
@@ -52,10 +52,33 @@ Artifact errors have unknown completeness. Missing metadata on older servers,
|
|
|
52
52
|
a full page, and an empty partial result never establish exhaustive absence.
|
|
53
53
|
See the [search contract](https://github.com/lost-in-the/woods/blob/main/docs/MCP_SERVERS.md#search-completeness).
|
|
54
54
|
|
|
55
|
+
## Graph coverage
|
|
56
|
+
|
|
57
|
+
Dependency tools report published relationships, not exhaustive source-reference
|
|
58
|
+
or call coverage. Selective method-body scanning can miss references to generic
|
|
59
|
+
PORO and library targets. No dependents or test-only dependents do not establish
|
|
60
|
+
absence of production callers; check source before making that claim.
|
|
61
|
+
|
|
62
|
+
The response `graph_coverage` notice, `total_is_exact` field, and human label
|
|
63
|
+
`witness types unambiguous` (#470/#471) are unreleased after Woods `2.0.0.beta3`.
|
|
64
|
+
Verify the installed server version and actual response fields; this plugin does
|
|
65
|
+
not add them. Apply these limits to older servers even without the notice.
|
|
66
|
+
Supporting stdio and HTTP servers expose the paginated traversal payload in
|
|
67
|
+
`structuredContent.data` independently of the text renderer (#481, also
|
|
68
|
+
unreleased after `2.0.0.beta3`). Check the installed response; older default
|
|
69
|
+
responses may carry only text. Do not pass an unsupported `format` argument.
|
|
70
|
+
|
|
71
|
+
`total_is_exact: false` means a budget-limited prefix; a true value describes only
|
|
72
|
+
the requested root, depth, filters and published generation. Pagination alone
|
|
73
|
+
does not change exactness. On older responses inspect `partial` directly.
|
|
74
|
+
Treat partial `nodes_total` as a root-inclusive lower bound, including on the
|
|
75
|
+
last page, an empty page or an unpaged answer. See the
|
|
76
|
+
[coverage contract](https://github.com/lost-in-the/woods/blob/main/docs/MCP_SERVERS.md#dependency-graph-coverage).
|
|
77
|
+
|
|
55
78
|
## Partial dependency answers
|
|
56
79
|
|
|
57
|
-
Traversal budgets (`max_nodes`/`max_edges`, #311) are
|
|
58
|
-
|
|
80
|
+
Traversal budgets (`max_nodes`/`max_edges`, #311) are available in Woods `2.0.0.beta3`.
|
|
81
|
+
Check the installed gem version and connected tool schema before
|
|
59
82
|
using them; installing this plugin does not upgrade the gem. On a supporting
|
|
60
83
|
server, `partial`/`partial_reason` means the walk stopped early, independently
|
|
61
84
|
of page truncation. Do not claim an exhaustive blast radius or treat empty
|
|
@@ -65,25 +88,38 @@ paging alone only visits the discovered prefix. See the
|
|
|
65
88
|
|
|
66
89
|
## Explain recorded relationships
|
|
67
90
|
|
|
68
|
-
`explain: true` on `dependencies`/`dependents` (#414) is
|
|
69
|
-
|
|
91
|
+
`explain: true` on `dependencies`/`dependents` (#414) is available in Woods `2.0.0.beta3`.
|
|
92
|
+
Verify the installed gem and connected tool schema before using it;
|
|
70
93
|
installing this plugin does not add server capabilities. Supporting servers
|
|
71
94
|
preserve original source-to-target direction and labels in both traversal
|
|
72
95
|
modes. Follow shared `parent`/`edge_id` witnesses, distinguish direct records
|
|
73
96
|
from transitive inferred impact, and treat `context: true` ancestors as page
|
|
74
97
|
context. Null attributes and candidate type ambiguities remain unknown;
|
|
75
|
-
`typed_path_complete: false` never establishes a uniquely typed path
|
|
98
|
+
`typed_path_complete: false` never establishes a uniquely typed path; true means
|
|
99
|
+
only that witness identities have unambiguous types, not complete source coverage.
|
|
100
|
+
Budget
|
|
76
101
|
cutoffs still apply. Verify important conclusions in source and tests, since
|
|
77
102
|
recorded reachability does not establish observed execution. See the
|
|
78
103
|
[explanation contract](https://github.com/lost-in-the/woods/blob/main/docs/MCP_SERVERS.md#traversal-explanations).
|
|
79
104
|
|
|
105
|
+
## Graph-analysis pages
|
|
106
|
+
|
|
107
|
+
Pass explicit `limit` and `offset` when paging `graph_analysis`. Enforcing the
|
|
108
|
+
advertised default of 20 rows per section and preserving total/offset on last
|
|
109
|
+
and empty pages (#519) are unreleased after `2.0.0.beta3`; check the installed
|
|
110
|
+
response rather than inferring support from the plugin version. On supporting
|
|
111
|
+
servers, read `<section>_total` and `<section>_offset` in JSON, or the human
|
|
112
|
+
pagination notice. An empty later page does not mean no findings. Totals count
|
|
113
|
+
the published report array, which may already be bounded during extraction.
|
|
114
|
+
See the [page contract](https://github.com/lost-in-the/woods/blob/main/docs/MCP_SERVERS.md#graph-analysis-pages).
|
|
115
|
+
|
|
80
116
|
## Volatile dependency reports
|
|
81
117
|
|
|
82
118
|
Read `stats.volatile_dependency_count` before judging the top-20 array: it
|
|
83
119
|
counts all qualifying edges. A frequently changed dependency can occupy most
|
|
84
120
|
rows. Use the installed version's ratio tuning guidance; the optional
|
|
85
|
-
`volatile_dependency_limit_per_target` setting (B-188) is
|
|
86
|
-
2.0.0.
|
|
121
|
+
`volatile_dependency_limit_per_target` setting (B-188) is available in Woods
|
|
122
|
+
`2.0.0.beta3`, so verify gem support before recommending it. Supporting versions
|
|
87
123
|
can cap each typed target before selecting the global top 20 and expose the
|
|
88
124
|
cap plus `volatile_dependency_reported_count` in stats. Re-extract after
|
|
89
125
|
configuration changes. Treat the report as candidates for source review, never
|
|
@@ -104,8 +140,11 @@ exposes `Woods::Configuration#retrieval_mode` and its matching guide documents
|
|
|
104
140
|
from the plugin version or an unreleased checkout.
|
|
105
141
|
|
|
106
142
|
When status reports lexical mode, use the matching fields/terms as discovery
|
|
107
|
-
evidence and verify key units with `lookup`.
|
|
108
|
-
|
|
143
|
+
evidence and verify key units with `lookup`. At most 20 eligible matching
|
|
144
|
+
candidates are considered; fewer source entries may fit the budget. This is not
|
|
145
|
+
exhaustive, and no lexical match does not establish absence. When the installed
|
|
146
|
+
server reports considered/included counts, compare them; older versions may
|
|
147
|
+
only describe the shortlist limit. Continue using `budget`, not `limit`.
|
|
109
148
|
See the [retrieval guide](https://github.com/lost-in-the/woods/blob/main/docs/RETRIEVAL_GUIDE.md#embedding-free-lexical-retrieval)
|
|
110
149
|
for the supported contract, checked against the installed gem version.
|
|
111
150
|
|
|
@@ -135,7 +174,7 @@ Keep full-source access available. See the canonical
|
|
|
135
174
|
## Optional context hints
|
|
136
175
|
|
|
137
176
|
Check installed `bundle exec woods-hook-context --help` before enabling
|
|
138
|
-
`WOODS_HOOK_CONTEXT_ENABLED=1`; this capability is
|
|
177
|
+
`WOODS_HOOK_CONTEXT_ENABLED=1`; this capability is available in Woods `2.0.0.beta3` and the
|
|
139
178
|
plugin does not upgrade the gem. Context and refresh opt-ins are independent;
|
|
140
179
|
`WOODS_HOOKS_DISABLED=1` disables both. Native Claude context is synchronous and
|
|
141
180
|
bounded, with served-generation and pre-refresh/unknown labels. Verify candidate
|
|
@@ -7,7 +7,7 @@ description: Configure Woods MCP connections with the exact client JSON shapes a
|
|
|
7
7
|
|
|
8
8
|
## Managed configuration availability
|
|
9
9
|
|
|
10
|
-
`woods-agent-config` (#407) is
|
|
10
|
+
`woods-agent-config` (#407) is available in Woods `2.0.0.beta3`. First record the
|
|
11
11
|
installed version and test `bundle exec woods-agent-config --help` in the
|
|
12
12
|
selected application bundle. When supported, use its saved setup/update/remove
|
|
13
13
|
plan and explicit client/scope/root selection; apply the reviewed plan within
|
|
@@ -30,7 +30,7 @@ This skill describes the Woods 2.x line; the authoritative minimum version lives
|
|
|
30
30
|
|
|
31
31
|
Default to Index-only. It reads generated code context and exposes 14 tools. Console MCP boots Rails and reads live data; ask before enabling it.
|
|
32
32
|
|
|
33
|
-
Initialization guidance (#402) is
|
|
33
|
+
Initialization guidance (#402) is available in Woods `2.0.0.beta3`; check the
|
|
34
34
|
installed gem before expecting MCP `instructions`. Supporting servers provide
|
|
35
35
|
a short workflow through initialization or modern discovery; protocol
|
|
36
36
|
`2024-11-05` omits it. Missing instructions alone are not a connection failure.
|
|
@@ -55,8 +55,8 @@ when unavailable. See the
|
|
|
55
55
|
|
|
56
56
|
Use this shape for any stdio-capable MCP client, adapted to the client's configuration location. `woods-mcp-start` validates and launches; it does not install or auto-restart.
|
|
57
57
|
|
|
58
|
-
Writer-version provenance (#323) is
|
|
59
|
-
release notes before expecting `index.woods_version` in `woods_status`. It reports
|
|
58
|
+
Writer-version provenance (#323) is available in Woods `2.0.0.beta3`; check the installed
|
|
59
|
+
gem version's release notes before expecting `index.woods_version` in `woods_status`. It reports
|
|
60
60
|
the last manifest publisher, independently of `server.version`. Treat missing/null
|
|
61
61
|
as unknown and see [writer provenance](https://github.com/lost-in-the/woods/blob/main/docs/PUBLISHED_INDEX.md#manifest-writer-provenance).
|
|
62
62
|
|
|
@@ -74,12 +74,12 @@ When Woods is installed only in Docker, prefer running the server through the ap
|
|
|
74
74
|
}
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
Use a host-side bundle only after verifying Ruby, the application bundle, and the index are available on the host. Always pass the path visible to the process that runs `woods-mcp`.
|
|
77
|
+
Use a host-side bundle only after verifying Ruby, the application bundle, and the index are available on the host. Always pass the path visible to the process that runs `woods-mcp`. Prefer an explicit index path on all versions. After `2.0.0.beta3`, an unreleased change adds `WOODS_OUTPUT` as a fallback after the positional path and `WOODS_DIR`; check the installed version's configuration guide before relying on it. `woods-mcp-start` still refuses a missing path rather than selecting its working directory.
|
|
78
78
|
|
|
79
79
|
A read-only index mount is sufficient for structural tools. The `reload` tool for in-memory semantic retrieval also takes Woods' shared on-disk writer lock, so the MCP process needs write access to the index directory. Without it, reload returns a typed degraded error and keeps serving the previous aligned generation. Either grant that access or restart the MCP process after publishing a new embedded index.
|
|
80
80
|
|
|
81
81
|
For host MCP reading a container daemon's shared index, foreign heartbeat trust
|
|
82
|
-
(#321) is
|
|
82
|
+
(#321) is available in Woods `2.0.0.beta3`. Verify the installed gem version's release notes before
|
|
83
83
|
offering `WOODS_WATCH_TRUST_FOREIGN_HOST=1` in the MCP environment. It makes
|
|
84
84
|
`woods_status.watch.alive` use the same bounded freshness policy as task readers;
|
|
85
85
|
see [cross-host liveness](https://github.com/lost-in-the/woods/blob/main/docs/WATCH_DAEMON.md#cross-host-liveness).
|
|
@@ -97,8 +97,8 @@ end
|
|
|
97
97
|
|
|
98
98
|
The token authenticates HTTP requests and is not sent by a stdio client.
|
|
99
99
|
Before suggesting `console_mcp_http_enabled = false`, verify that the installed
|
|
100
|
-
version supports it: the option is
|
|
101
|
-
stdio-only hosts can set it to `false` and omit the HTTP token;
|
|
100
|
+
version supports it: the option is available in Woods `2.0.0.beta3`. Supported
|
|
101
|
+
stdio-only hosts can set it to `false` and omit the HTTP token; older
|
|
102
102
|
versions require the token at production boot whenever Console is enabled.
|
|
103
103
|
For HTTP, retain a strong token, allowed origins and TLS. Use installed-version
|
|
104
104
|
tagged documentation; the [canonical Console guide](https://github.com/lost-in-the/woods/blob/main/docs/CONSOLE_MCP_SETUP.md)
|
|
@@ -142,14 +142,14 @@ Canonical guide: [MCP_SERVERS.md](https://github.com/lost-in-the/woods/blob/main
|
|
|
142
142
|
|
|
143
143
|
## Lexical retrieval capability check
|
|
144
144
|
|
|
145
|
-
|
|
145
|
+
Lexical retrieval is available from `2.0.0.beta3`. Before proposing it, verify the installed gem
|
|
146
146
|
exposes `Woods::Configuration#retrieval_mode` and its matching guide documents
|
|
147
147
|
`WOODS_RETRIEVAL_MODE`. Keep the installed-version preflight; do not infer support
|
|
148
148
|
from the plugin version or an unreleased checkout.
|
|
149
149
|
|
|
150
150
|
When supported, put `WOODS_RETRIEVAL_MODE=lexical` in the environment of the
|
|
151
151
|
process launching Index MCP (stdio or HTTP). A Rails initializer alone is not
|
|
152
|
-
loaded by that process.
|
|
152
|
+
loaded by that process. Restart the MCP server after changing its environment, then confirm `woods_status.retriever.mode` reports `lexical`. A beta3 no-provider error may omit this option; it does not mean embeddings are required for explicit lexical mode.
|
|
153
153
|
See the [retrieval guide](https://github.com/lost-in-the/woods/blob/main/docs/RETRIEVAL_GUIDE.md#embedding-free-lexical-retrieval)
|
|
154
154
|
for the supported contract, checked against the installed gem version.
|
|
155
155
|
|
|
@@ -165,7 +165,7 @@ query. Scoping can hide relevant cross-boundary relationships, so broaden the
|
|
|
165
165
|
request deliberately when the task needs them. See the
|
|
166
166
|
[scope contract](https://github.com/lost-in-the/woods/blob/main/docs/RETRIEVAL_GUIDE.md#explicit-package-and-source-path-scopes).
|
|
167
167
|
|
|
168
|
-
## Source-content freshness (
|
|
168
|
+
## Source-content freshness (Woods 2.0.0.beta3; #405)
|
|
169
169
|
|
|
170
170
|
Check installed-version support before using `woods-extract` or the optional
|
|
171
171
|
`woods_status.source_check` argument. With support, inspect
|
|
@@ -9,7 +9,7 @@ Install a structural Index Server first. Embeddings and Console MCP are separate
|
|
|
9
9
|
|
|
10
10
|
## Managed configuration availability
|
|
11
11
|
|
|
12
|
-
`woods-agent-config` (#407) is
|
|
12
|
+
`woods-agent-config` (#407) is available in Woods `2.0.0.beta3`. First record the
|
|
13
13
|
installed version and test `bundle exec woods-agent-config --help` in the
|
|
14
14
|
selected application bundle. When supported, use its saved setup/update/remove
|
|
15
15
|
plan and explicit client/scope/root selection; apply the reviewed plan within
|
|
@@ -74,8 +74,8 @@ bin/rails woods:stats
|
|
|
74
74
|
|
|
75
75
|
If extraction fails, reproduce Rails boot and eager loading first. Do not inspect internal payload files when Woods tasks provide the check.
|
|
76
76
|
|
|
77
|
-
Writer-version provenance (#323) is
|
|
78
|
-
release notes before expecting `woods_status.index.woods_version`. When present,
|
|
77
|
+
Writer-version provenance (#323) is available in Woods `2.0.0.beta3`; check the installed
|
|
78
|
+
gem version's release notes before expecting `woods_status.index.woods_version`. When present,
|
|
79
79
|
it names the last manifest publisher; `server.version` names the MCP reader.
|
|
80
80
|
Missing/null means unknown. A matching version after an incremental run never
|
|
81
81
|
replaces a required full upgrade extraction. See [writer provenance](https://github.com/lost-in-the/woods/blob/main/docs/PUBLISHED_INDEX.md#manifest-writer-provenance).
|
|
@@ -112,7 +112,8 @@ Reconnect and call `woods_status`, then `search`, `lookup`, and `dependents` for
|
|
|
112
112
|
|
|
113
113
|
Offer to add `bundle exec rake woods:watch` to the existing development process manager. When authorized, it catches up missed changes and automatically maintains the structural index; the Index Server refreshes on its next call, so ordinary edits need no manual extraction or MCP restart. Use the standalone watch command; do not prepend the `environment` task. Check the installed version's watch guide before relying on automatic startup reconciliation. State that live boot-captured changes require supervisor restart, Docker may need `WOODS_WATCH_POLL=1`, and semantic vectors still need `woods:embed_incremental`.
|
|
114
114
|
|
|
115
|
-
Foreign-host heartbeat trust (`WOODS_WATCH_TRUST_FOREIGN_HOST=1`, #321) is
|
|
115
|
+
Foreign-host heartbeat trust (`WOODS_WATCH_TRUST_FOREIGN_HOST=1`, #321) is available in
|
|
116
|
+
Woods `2.0.0.beta3`.
|
|
116
117
|
Check the installed gem version against its release notes before offering it;
|
|
117
118
|
do not assume installing this plugin upgrades the gem. For a supporting version,
|
|
118
119
|
follow [cross-host liveness](https://github.com/lost-in-the/woods/blob/main/docs/WATCH_DAEMON.md#cross-host-liveness)
|
|
@@ -120,14 +121,14 @@ and set the opt-in in each task/MCP reader of a shared container index. Explain
|
|
|
120
121
|
the 15-minute crash-detection delay and preserve one supervisor per daemon.
|
|
121
122
|
|
|
122
123
|
For slow bind mounts, check whether the installed version documents
|
|
123
|
-
`WOODS_WATCH_POLL_INTERVAL` before suggesting it; this setting is
|
|
124
|
-
|
|
124
|
+
`WOODS_WATCH_POLL_INTERVAL` before suggesting it; this setting is available in Woods
|
|
125
|
+
`2.0.0.beta3`. Where supported, a positive value such as `2.5` reduces
|
|
125
126
|
polling frequency at the cost of detection latency. Use the installed preflight version to select tagged documentation; the
|
|
126
127
|
[canonical watch guide](https://github.com/lost-in-the/woods/blob/main/docs/WATCH_DAEMON.md)
|
|
127
128
|
tracks current source and may describe unreleased behavior.
|
|
128
129
|
|
|
129
130
|
The plugin ships opt-in refresh and session-start hooks. The expanded refresh
|
|
130
|
-
contract (#408) is
|
|
131
|
+
contract (#408) is available in Woods `2.0.0.beta3`: first verify the installed
|
|
131
132
|
gem exposes `woods:hook_refresh` through the actual application command. Do not
|
|
132
133
|
infer support from the plugin version. With support, edits to standard services,
|
|
133
134
|
controllers, jobs, views, concerns, locales, supported tests/lib files, routes,
|
|
@@ -146,7 +147,7 @@ The refresh worker's deadline starts after the complete event input has been
|
|
|
146
147
|
collected, validated, and queued; it does not bound input collection. It includes
|
|
147
148
|
subsequent batches, but cancelling Docker exec does not prove its container
|
|
148
149
|
process stopped. See the [hook deadline and retry contract](https://github.com/lost-in-the/woods/blob/main/docs/WATCH_DAEMON.md#hooks-for-agent-sessions).
|
|
149
|
-
Source freshness (#405) is
|
|
150
|
+
Source freshness (#405) is available in Woods `2.0.0.beta3`: verify the installed command
|
|
150
151
|
exposes `woods:source_status` and `woods-extract` before using it. Supporting
|
|
151
152
|
SessionStart hooks check source content and report missing/failed evidence as
|
|
152
153
|
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)
|
|
@@ -154,6 +155,8 @@ for transport, retry and custom-root limits.
|
|
|
154
155
|
|
|
155
156
|
## Ask before expanding scope
|
|
156
157
|
|
|
158
|
+
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 unreleased after `2.0.0.beta3`, so check the installed revision. See the [dimension contract](https://github.com/lost-in-the/woods/blob/main/docs/CONFIGURATION_REFERENCE.md#pgvector-postgresql).
|
|
159
|
+
|
|
157
160
|
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.
|
|
158
161
|
|
|
159
162
|
## Handoff
|
|
@@ -164,7 +167,7 @@ Canonical runbook: [AGENT_SETUP.md](https://github.com/lost-in-the/woods/blob/ma
|
|
|
164
167
|
|
|
165
168
|
## Lexical retrieval capability check
|
|
166
169
|
|
|
167
|
-
|
|
170
|
+
Lexical retrieval is available from `2.0.0.beta3`. Before proposing it, verify the installed gem
|
|
168
171
|
exposes `Woods::Configuration#retrieval_mode` and its matching guide documents
|
|
169
172
|
`WOODS_RETRIEVAL_MODE`. Keep the installed-version preflight; do not infer support
|
|
170
173
|
from the plugin version or an unreleased checkout.
|
|
@@ -175,7 +178,7 @@ remains the default; setting up embeddings is a separate choice.
|
|
|
175
178
|
See the [retrieval guide](https://github.com/lost-in-the/woods/blob/main/docs/RETRIEVAL_GUIDE.md#embedding-free-lexical-retrieval)
|
|
176
179
|
for the supported contract, checked against the installed gem version.
|
|
177
180
|
|
|
178
|
-
## Explicit edit adapters (
|
|
181
|
+
## Explicit edit adapters (Woods 2.0.0.beta3; #409)
|
|
179
182
|
|
|
180
183
|
Check the installed gem exposes `woods:hook_refresh` before enabling hooks.
|
|
181
184
|
Claude's registered wrapper covers one documented edit path; OpenCode 1.18.27
|
|
@@ -190,7 +193,7 @@ user's setup request. Follow [client hooks](https://github.com/lost-in-the/woods
|
|
|
190
193
|
## Optional context hints
|
|
191
194
|
|
|
192
195
|
Check installed `bundle exec woods-hook-context --help` before enabling
|
|
193
|
-
`WOODS_HOOK_CONTEXT_ENABLED=1`; this capability is
|
|
196
|
+
`WOODS_HOOK_CONTEXT_ENABLED=1`; this capability is available in Woods `2.0.0.beta3` and the
|
|
194
197
|
plugin does not upgrade the gem. Context and refresh opt-ins are independent;
|
|
195
198
|
`WOODS_HOOKS_DISABLED=1` disables both. Native Claude context is synchronous and
|
|
196
199
|
bounded, with served-generation and pre-refresh/unknown labels. Verify candidate
|