@oomkapwn/enquire-mcp 3.8.2 → 3.8.3

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 CHANGED
@@ -2,6 +2,80 @@
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.3] — 2026-05-24
6
+
7
+ > **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.**
8
+
9
+ **Patch — structural defense expansion.**
10
+
11
+ ### Background
12
+
13
+ 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:
14
+ > 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.
15
+
16
+ v3.8.3 ships that backlog item.
17
+
18
+ ### What Check 7 does
19
+
20
+ For each file in `CLAUDE.md` + `docs/*.md` (excluding `docs/audits/`):
21
+ 1. Read line by line.
22
+ 2. For each line, try 5 currency-claim patterns:
23
+ - `stable v(\d+\.\d+)\.x` — "stable v3.X.x" stability claims
24
+ - `(@latest|ships) v(\d+\.\d+)\.x` — npm @latest claims
25
+ - `covers the v(\d+\.\d+)\.x` — scope claims
26
+ - `exact for v(\d+\.\d+)\.x` — exactness claims
27
+ - `accurate as of v(\d+\.\d+\.\d+)` — accuracy timestamp claims
28
+ 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.
29
+
30
+ ### Empirical validation
31
+
32
+ - On main HEAD (post v3.8.2 docs refresh): **0 findings** ✓ (proves the fix worked).
33
+ - On a synthetic test fixture with intentionally stale claims: all 4 patterns fire correctly, history-context detection correctly skips legitimate tombstones.
34
+ - 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.
35
+
36
+ ### Why this is the right shape for the recursion class
37
+
38
+ The methodology pattern is:
39
+ 1. Find a class of bug (e.g. drift)
40
+ 2. Build a structural defense (e.g. cli-help.ts, OIA Check N)
41
+ 3. **Apply defense to ONE surface, leave siblings unprotected**
42
+ 4. Discover sibling surface drifts the next audit cycle
43
+ 5. Extend defense to the sibling surface
44
+
45
+ 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."
46
+
47
+ 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.
48
+
49
+ ### Bonus fix — Cursor audit reference removal from oia-walk.mjs
50
+
51
+ v3.8.1 retraction removed Cursor audit references from CHANGELOG + CLAUDE.md but missed the inline comment at `scripts/oia-walk.mjs:416`:
52
+ > IMPORTANT (v3.8.0-rc.18 L-OIA-1, per Cursor external audit on rc.15)
53
+
54
+ Updated to:
55
+ > IMPORTANT (v3.8.0-rc.18 S-AUDIT-3, self-audit on rc.17)
56
+
57
+ This is a small consequence of the v3.8.1 retraction (one stale ref slipped through the cleanup). Documented openly here.
58
+
59
+ ### Stats
60
+
61
+ - **872 tests** (unchanged — script enhancement only).
62
+ - `scripts/oia-walk.mjs`: 6 checks → 7 checks.
63
+ - 0 code changes in `src/`.
64
+ - `npm audit`: 0 vulnerabilities.
65
+ - Dist-tag: `@latest = 3.8.3` after publish.
66
+ - All 9 required CI gates pass locally.
67
+
68
+ ### What's next
69
+
70
+ Backlog (no scope changes):
71
+ - T-2/T-3/T-4 E2E tests
72
+ - OCR'd PDF watcher embed-sync, HNSW in-memory live update
73
+ - HTTP P2-10/P2-11 lifecycle hardening
74
+ - Tier C discoverability
75
+ - v3.9.0 architectural items (HNSW filter-during-search, embed-db migrations, distributed rate-limit)
76
+
77
+ ---
78
+
5
79
  ## [3.8.2] — 2026-05-24
6
80
 
7
81
  > **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/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.2";
10
+ export declare const VERSION = "3.8.3";
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.2";
43
+ export const VERSION = "3.8.3";
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`,
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.2",
4
+ "version": "3.8.3",
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",