@oomkapwn/enquire-mcp 3.8.2 → 3.8.4
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.
- package/CHANGELOG.md +154 -0
- package/README.md +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/examples/chatgpt-actions.md +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,160 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
4
4
|
|
|
5
|
+
## [3.8.4] — 2026-05-24
|
|
6
|
+
|
|
7
|
+
> **TL;DR:** **OIA Check 7 scope expansion (overclaim instance #12) + 2 inline fixes (B-1, B-2).** v3.8.3 shipped OIA Check 7 (extend stale-currency detection to docs/) explicitly claiming "Same recursion class as M-1/M-2/M-REG-1 (structural defense built but scope too narrow)" and "Closes the methodology gap." Post-v3.8.3 sweep found **the same recursion pattern inside the v3.8.3 fix itself**: Check 7 scope was CLAUDE.md + docs/ but **omitted** README.md, AGENTS.md, llms.txt, examples/. Found B-1 (README.md:185 "capabilities as of v3.7.0") and B-2 (examples/chatgpt-actions.md:25 "wait for v3.8.0" — already shipped). This is the **6th recursion-pair shape** (#6+#7, #2 inside K-1 "final", #10 inside M-2, #12 inside v3.8.3 Check 7) and the **12th documented overclaim instance**. v3.8.4 expands Check 7 scope to ALL user-visible markdown surfaces (README.md, AGENTS.md, llms.txt, examples/*.md), adds "capabilities|claims|features|snapshot as of" patterns to catch B-1's wording, adds "wait for vX.Y.0 / coming in / planned for / will land in" forthcoming-claim detection for B-2's class. 2 inline fixes for B-1/B-2. **No code changes; 872 tests unchanged.**
|
|
8
|
+
|
|
9
|
+
**Patch — recursion-class closure (sixth attempt).**
|
|
10
|
+
|
|
11
|
+
### Background
|
|
12
|
+
|
|
13
|
+
v3.8.3 shipped OIA Check 7 with the explicit framing:
|
|
14
|
+
> "Same recursion class as M-1/M-2/M-REG-1 (structural defense built but scope too narrow). The fix shape is always 'lift the defense to cover all siblings.'"
|
|
15
|
+
|
|
16
|
+
But Check 7's scope was `CLAUDE.md + docs/*.md` — only TWO surface classes. Sibling surfaces (`README.md`, `AGENTS.md`, `llms.txt`, `examples/*.md`) were unprotected. This is **the exact pattern Check 7 was built to close, recurring inside Check 7's own implementation**.
|
|
17
|
+
|
|
18
|
+
A post-v3.8.3 state-driven sweep found:
|
|
19
|
+
- **B-1 (MEDIUM)**: `README.md:185` — "Comparison based on each project's public capabilities as of v3.7.0 (2026-05-15)" — same drift class as v3.8.2 A-8 (which was fixed in `docs/COMPARISON.md`) but the README version was missed because Check 7 doesn't walk README.md.
|
|
20
|
+
- **B-2 (MEDIUM)**: `examples/chatgpt-actions.md:25` — "wait for v3.8.0 which adds full serve-http flag parity" — v3.8.0 already shipped (R-3 closure in rc.1). The "wait for" framing implies forthcoming, but it's been shipped for several months at this point.
|
|
21
|
+
|
|
22
|
+
### Why this is overclaim instance #12
|
|
23
|
+
|
|
24
|
+
v3.8.3 CHANGELOG made two strong claims, both wrong in hindsight:
|
|
25
|
+
1. "Closes the methodology gap exposed by v3.8.2" — gap was only partially closed; sibling surfaces still leaked.
|
|
26
|
+
2. "Same recursion class as M-1/M-2/M-REG-1 (defense built but scope too narrow). The fix shape is always 'lift the defense to cover all siblings.'" — and yet my fix did NOT lift to all siblings.
|
|
27
|
+
|
|
28
|
+
**This is the same recursion-pair shape we've seen 5 times before:**
|
|
29
|
+
- #2 inside v3.6.4 K-1 "TRULY FINAL closure" (the alleged final closure missed siblings)
|
|
30
|
+
- #6 inside v3.7.14 F1 (renameNote ordering fix) + #7 inside same patch F2 (renameFile sibling shipped with same TSDoc drift)
|
|
31
|
+
- #10 inside v3.8.0-rc.14 M-2 (7 invariants without NEGATIVE controls)
|
|
32
|
+
- **#12 inside v3.8.3 Check 7 (scope too narrow despite explicit "lift to all siblings" framing)**
|
|
33
|
+
|
|
34
|
+
The recursion has a name now: **"narrow-scope recursion-pair"** — the fix's scope is structurally narrower than the class it claims to close, and post-fix sweeps find new sibling instances.
|
|
35
|
+
|
|
36
|
+
### Fixes
|
|
37
|
+
|
|
38
|
+
**B-1 (`README.md:185`):** "as of v3.7.0 (2026-05-15)" → "as of v3.8.x stable (initial snapshot v3.7.0 / 2026-05-15; refreshed in v3.8.4)" — matches the wording in `docs/COMPARISON.md` (which was fixed in v3.8.2).
|
|
39
|
+
|
|
40
|
+
**B-2 (`examples/chatgpt-actions.md:25`):** "wait for v3.8.0 which adds full serve-http flag parity" → "As of v3.8.0 (R-3 closure, rc.1 `addAdvancedRetrievalOptions` helper), `serve-http` now accepts the same 8 advanced retrieval flags as `serve`." — replaces forthcoming-claim with past-tense factual statement.
|
|
41
|
+
|
|
42
|
+
**OIA Check 7 scope expansion (`scripts/oia-walk.mjs`):**
|
|
43
|
+
- Added: `README.md`, `AGENTS.md`, `llms.txt` to top-level scan list
|
|
44
|
+
- Added: `walk("examples", ".md", ...)` to recursively scan `examples/`
|
|
45
|
+
- Broadened currency-claim pattern: `accurate as of v3.X.Y` → `(accurate|capabilities|claims|features|snapshot) as of v3.X.Y` (would have caught B-1 with broader wording)
|
|
46
|
+
- Added new pattern: `(wait for|coming in|planned for|will land in) v3.X.0` — compares against current major.minor; if claimed ≤ current, fires `STALE-FORTHCOMING-CLAIM` (would have caught B-2)
|
|
47
|
+
- Added pure function `cmpMajorMinor(a, b)` for version comparison
|
|
48
|
+
|
|
49
|
+
**Empirical validation:**
|
|
50
|
+
- Pre-fix simulated revert (B-1, B-2 reverted in fixture): both fire correctly under expanded patterns.
|
|
51
|
+
- Post-fix `npm run check:oia`: 0 findings across all 7 checks ✓.
|
|
52
|
+
- Forward case ("planned for v3.9.0" with current 3.8.x): correctly NOT flagged (v3.9 > current 3.8 → legitimate forthcoming claim).
|
|
53
|
+
|
|
54
|
+
### Methodology note — when does the recursion finally close?
|
|
55
|
+
|
|
56
|
+
After 6 instances of the same pattern, an empirical pattern emerges:
|
|
57
|
+
1. Every claim of "Closes the recursion class" has been wrong.
|
|
58
|
+
2. The next audit always finds the same recursion shape inside the alleged closure.
|
|
59
|
+
|
|
60
|
+
**Honest reframing for v3.8.4:** This patch expands Check 7 scope. It does NOT close the recursion class — the next audit may well find Check 7 doesn't cover some other surface I haven't thought of (CHANGELOG.md? GitHub Pages dist artifacts? .github/PULL_REQUEST_TEMPLATE? SECURITY.md?). Each future audit cycle is likely to find one more sibling surface.
|
|
61
|
+
|
|
62
|
+
The structural-defense pattern works for individual classes (K-1, cli-help, docs-consistency) but the META-class "every defense is too narrow" requires a different fix: an automated **scope completeness audit** that checks every defense covers every plausible sibling surface. That's likely v3.9.0+ work — too speculative to ship as part of v3.8.4.
|
|
63
|
+
|
|
64
|
+
### Stats
|
|
65
|
+
|
|
66
|
+
- **872 tests** (unchanged — script + docs changes only).
|
|
67
|
+
- `scripts/oia-walk.mjs`: Check 7 scope = 4 → 8+ surface types (CLAUDE.md, README.md, AGENTS.md, llms.txt, docs/*.md, examples/*.md).
|
|
68
|
+
- 2 inline doc fixes: `README.md`, `examples/chatgpt-actions.md`.
|
|
69
|
+
- `npm audit`: 0 vulnerabilities.
|
|
70
|
+
- Dist-tag: `@latest = 3.8.4` after publish.
|
|
71
|
+
- All 9 required CI gates pass locally.
|
|
72
|
+
|
|
73
|
+
### What's next
|
|
74
|
+
|
|
75
|
+
Same backlog as v3.8.3 (no scope changes):
|
|
76
|
+
- T-2/T-3/T-4 E2E tests
|
|
77
|
+
- HTTP P2-10/P2-11 lifecycle, OCR watcher, HNSW live update
|
|
78
|
+
- Tier C discoverability
|
|
79
|
+
- v3.9.0 architectural items
|
|
80
|
+
|
|
81
|
+
Possible v3.9.0 methodology item: **structural defense scope completeness audit** (automated check that every OIA walk / invariant test covers all relevant sibling surfaces). Would close the "narrow-scope recursion-pair" meta-class permanently — currently the only mitigation is post-fix manual audits, which is what spawned v3.8.3 → v3.8.4.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## [3.8.3] — 2026-05-24
|
|
86
|
+
|
|
87
|
+
> **TL;DR:** **OIA Check 7 — extend stale-currency-claim detection from `src/*.ts` to `docs/*.md` + `CLAUDE.md`.** Closes the methodology gap exposed by v3.8.2: state-driven sweep found 6 stale-version refs in docs that OIA Check 1 had been silently skipping because it only walked `src/`. Same recursion meta-class as M-1 (lift only some flags to cli-help.ts) and M-2 (extend invariants only to some docs surfaces). Generalized: Check 7 walks `docs/*.md` + `CLAUDE.md`, matches present-tense currency-claim patterns ("stable v3.X.x", "@latest ships v3.X.x", "accurate as of v3.X.Y", "exact for v3.X.x", "covers the v3.X.x"), compares against `package.json` current major.minor, fails on mismatch (unless explicit history context: "initial", "from", "since", "Pre-", "added", "fix", etc.). `docs/audits/` excluded (historical snapshots by definition). Bonus: removed stale Cursor audit ref in `scripts/oia-walk.mjs` header comment (v3.8.1 retraction missed it). **No code changes; 872 tests unchanged.**
|
|
88
|
+
|
|
89
|
+
**Patch — structural defense expansion.**
|
|
90
|
+
|
|
91
|
+
### Background
|
|
92
|
+
|
|
93
|
+
v3.8.2 state-driven audit found 6 stale-version references across `CLAUDE.md` + `docs/api.md` + `docs/COMPARISON.md`. The lesson noted in v3.8.2 CHANGELOG:
|
|
94
|
+
> The current OIA walk does NOT scan docs/ for version-string staleness. Backlog item: extend OIA Check 1 to walk docs/*.md and CLAUDE.md looking for "v3.X.Y" references that mention current state.
|
|
95
|
+
|
|
96
|
+
v3.8.3 ships that backlog item.
|
|
97
|
+
|
|
98
|
+
### What Check 7 does
|
|
99
|
+
|
|
100
|
+
For each file in `CLAUDE.md` + `docs/*.md` (excluding `docs/audits/`):
|
|
101
|
+
1. Read line by line.
|
|
102
|
+
2. For each line, try 5 currency-claim patterns:
|
|
103
|
+
- `stable v(\d+\.\d+)\.x` — "stable v3.X.x" stability claims
|
|
104
|
+
- `(@latest|ships) v(\d+\.\d+)\.x` — npm @latest claims
|
|
105
|
+
- `covers the v(\d+\.\d+)\.x` — scope claims
|
|
106
|
+
- `exact for v(\d+\.\d+)\.x` — exactness claims
|
|
107
|
+
- `accurate as of v(\d+\.\d+\.\d+)` — accuracy timestamp claims
|
|
108
|
+
3. If matched version's major.minor ≠ current major.minor, AND no history-context marker in surrounding 3 lines (`initial`, `from`, `since`, `Pre-`, `was`, `added`, `fix`, `bumped`, etc.), record `STALE-DOC-CURRENCY-CLAIM` finding.
|
|
109
|
+
|
|
110
|
+
### Empirical validation
|
|
111
|
+
|
|
112
|
+
- On main HEAD (post v3.8.2 docs refresh): **0 findings** ✓ (proves the fix worked).
|
|
113
|
+
- On a synthetic test fixture with intentionally stale claims: all 4 patterns fire correctly, history-context detection correctly skips legitimate tombstones.
|
|
114
|
+
- Initial pre-refinement run on `docs/audits/` flagged 4 historical audit-report quotes — root-caused as legitimate (those files are by-definition snapshots) and excluded via path filter.
|
|
115
|
+
|
|
116
|
+
### Why this is the right shape for the recursion class
|
|
117
|
+
|
|
118
|
+
The methodology pattern is:
|
|
119
|
+
1. Find a class of bug (e.g. drift)
|
|
120
|
+
2. Build a structural defense (e.g. cli-help.ts, OIA Check N)
|
|
121
|
+
3. **Apply defense to ONE surface, leave siblings unprotected**
|
|
122
|
+
4. Discover sibling surface drifts the next audit cycle
|
|
123
|
+
5. Extend defense to the sibling surface
|
|
124
|
+
|
|
125
|
+
Step 4 is the recurring failure. The defense is correct but its scope is too narrow. The fix shape is always "lift the defense to cover all siblings."
|
|
126
|
+
|
|
127
|
+
Cf. M-1 lift to cli-help.ts (rc.11), M-2 extend docs-consistency to llms.txt + AGENTS.md (rc.14), M-REG-1 extend check-version-consistency to server.json (rc.18, retracted in v3.8.1 but kept technical fix). v3.8.3 Check 7 is the same shape applied to OIA Check 1.
|
|
128
|
+
|
|
129
|
+
### Bonus fix — Cursor audit reference removal from oia-walk.mjs
|
|
130
|
+
|
|
131
|
+
v3.8.1 retraction removed Cursor audit references from CHANGELOG + CLAUDE.md but missed the inline comment at `scripts/oia-walk.mjs:416`:
|
|
132
|
+
> IMPORTANT (v3.8.0-rc.18 L-OIA-1, per Cursor external audit on rc.15)
|
|
133
|
+
|
|
134
|
+
Updated to:
|
|
135
|
+
> IMPORTANT (v3.8.0-rc.18 S-AUDIT-3, self-audit on rc.17)
|
|
136
|
+
|
|
137
|
+
This is a small consequence of the v3.8.1 retraction (one stale ref slipped through the cleanup). Documented openly here.
|
|
138
|
+
|
|
139
|
+
### Stats
|
|
140
|
+
|
|
141
|
+
- **872 tests** (unchanged — script enhancement only).
|
|
142
|
+
- `scripts/oia-walk.mjs`: 6 checks → 7 checks.
|
|
143
|
+
- 0 code changes in `src/`.
|
|
144
|
+
- `npm audit`: 0 vulnerabilities.
|
|
145
|
+
- Dist-tag: `@latest = 3.8.3` after publish.
|
|
146
|
+
- All 9 required CI gates pass locally.
|
|
147
|
+
|
|
148
|
+
### What's next
|
|
149
|
+
|
|
150
|
+
Backlog (no scope changes):
|
|
151
|
+
- T-2/T-3/T-4 E2E tests
|
|
152
|
+
- OCR'd PDF watcher embed-sync, HNSW in-memory live update
|
|
153
|
+
- HTTP P2-10/P2-11 lifecycle hardening
|
|
154
|
+
- Tier C discoverability
|
|
155
|
+
- v3.9.0 architectural items (HNSW filter-during-search, embed-db migrations, distributed rate-limit)
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
5
159
|
## [3.8.2] — 2026-05-24
|
|
6
160
|
|
|
7
161
|
> **TL;DR:** **State-driven audit findings — 6 stale-version fixes across CLAUDE.md + docs/api.md + docs/COMPARISON.md.** Post-v3.8.1 full self-audit (using OIA methodology applied broadly) found 6 stale-version references across documentation that survived the v3.6.0→v3.8.1 cascade: CLAUDE.md header still said "v3.7.x maintenance" (we're at v3.8.x stable), backlog status said "before promotion to v3.8.0 stable" (already promoted), docs/api.md said "stable v3.7.x @latest" (npm @latest = 3.8.1 → 3.8.2 with this patch), docs/COMPARISON.md timestamps still pinned to v3.7.0 (2026-05-15). All fixed in this docs-only patch. **No code changes; 872 tests unchanged.**
|
package/README.md
CHANGED
|
@@ -182,7 +182,7 @@ Auto-generated **[API reference at oomkapwn.github.io/enquire-mcp](https://oomka
|
|
|
182
182
|
| Standalone (no Obsidian plugin needed) | ✅ | ❌ requires Obsidian | varies |
|
|
183
183
|
| License | MIT, free | proprietary, paid | varies |
|
|
184
184
|
|
|
185
|
-
<sub>Comparison based on each project's public capabilities as of v3.7.0
|
|
185
|
+
<sub>Comparison based on each project's public capabilities as of v3.8.x stable (initial snapshot v3.7.0 / 2026-05-15; refreshed in v3.8.4). Smart Connections is a paid Obsidian plugin (not an MCP server). "Other Obsidian-MCPs" refers to public open-source Obsidian-MCP servers on GitHub at time of writing. Public end-to-end retrieval benchmarks for enquire-mcp are published in <a href="./docs/benchmarks.md"><code>docs/benchmarks.md</code></a> — measured `rerank-bge` delta is +24.7 MRR / +15.5 NDCG@10 over plain hybrid on a 60-query ablation.</sub>
|
|
186
186
|
|
|
187
187
|
> Strategic claim: enquire-mcp is the open-source backend for [Karpathy-style LLM Wikis](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) on top of your existing Obsidian vault. Knowledge that compounds, traceable to sources.
|
|
188
188
|
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* + `McpServer({version})`) and `src/tool-registry.ts` (used in the
|
|
8
8
|
* `vault-info` resource payload).
|
|
9
9
|
*/
|
|
10
|
-
export declare const VERSION = "3.8.
|
|
10
|
+
export declare const VERSION = "3.8.4";
|
|
11
11
|
export { main } from "./cli.js";
|
|
12
12
|
export { buildEmbedText, buildMcpServer, formatReadyBanner, prepareServerDeps, type ServeOptions, type ServerDeps, startServer } from "./server.js";
|
|
13
13
|
export { parsePositiveInt, parseQuantizationMode } from "./tool-registry.js";
|
package/dist/index.js
CHANGED
|
@@ -40,7 +40,7 @@ import { main } from "./cli.js";
|
|
|
40
40
|
* + `McpServer({version})`) and `src/tool-registry.ts` (used in the
|
|
41
41
|
* `vault-info` resource payload).
|
|
42
42
|
*/
|
|
43
|
-
export const VERSION = "3.8.
|
|
43
|
+
export const VERSION = "3.8.4";
|
|
44
44
|
// Re-exports — preserve the v3.5.x public surface so http-transport.ts and
|
|
45
45
|
// tests don't need to know about the new module layout. The set below
|
|
46
46
|
// exactly matches the v3.5.x `export` declarations: `main`,
|
|
@@ -22,7 +22,7 @@ enquire-mcp serve-http \
|
|
|
22
22
|
--cors-origin https://chatgpt.com
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
> **v3.7.6 audit fix**:
|
|
25
|
+
> **v3.7.6 audit fix + v3.8.0 update**: Pre-v3.7.6 this example showed `--enable-reranker`, `--use-hnsw`, and `--include-pdfs`. As of v3.8.0 (R-3 closure, rc.1 `addAdvancedRetrievalOptions` helper), `serve-http` now accepts the same 8 advanced retrieval flags as `serve`. The example above is the minimal config; for the full hybrid stack add `--enable-reranker --use-hnsw --include-pdfs` (same as `serve`). See [`docs/http-transport.md`](../docs/http-transport.md) for the full supported flag matrix.
|
|
26
26
|
|
|
27
27
|
Set the env var first: `export ENQUIRE_TOKEN=$(cat ~/.config/enquire/token)`.
|
|
28
28
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@oomkapwn/enquire-mcp",
|
|
4
|
-
"version": "3.8.
|
|
4
|
+
"version": "3.8.4",
|
|
5
5
|
"mcpName": "io.github.oomkapwn/enquire-mcp",
|
|
6
6
|
"description": "MCP server giving AI agents (Claude Code, Claude Desktop, Cursor, ChatGPT, Codex, OpenClaw) persistent long-term memory backed by your local Obsidian markdown vault. Hybrid retrieval (BM25 + ML embeddings + BGE reranker, RRF-fused), HNSW + int8 quantization, agentic RAG (HyDE + sub-question decomposition), GraphRAG-light (Louvain), standalone Obsidian Bases, PDFs + Tesseract OCR. Vendor-neutral memory layer for any MCP-compatible agent. 44 tools, 19 MCP prompts, 872 tests, SLSA-3, semver-bound, MIT, zero cloud calls during serve.",
|
|
7
7
|
"type": "module",
|