openlore 2.0.7 → 2.0.9

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 (162) hide show
  1. package/README.md +160 -25
  2. package/dist/api/init.d.ts.map +1 -1
  3. package/dist/api/init.js +9 -2
  4. package/dist/api/init.js.map +1 -1
  5. package/dist/cli/commands/analyze.d.ts.map +1 -1
  6. package/dist/cli/commands/analyze.js +5 -3
  7. package/dist/cli/commands/analyze.js.map +1 -1
  8. package/dist/cli/commands/decisions.d.ts +0 -1
  9. package/dist/cli/commands/decisions.d.ts.map +1 -1
  10. package/dist/cli/commands/decisions.js +19 -31
  11. package/dist/cli/commands/decisions.js.map +1 -1
  12. package/dist/cli/commands/doctor.d.ts.map +1 -1
  13. package/dist/cli/commands/doctor.js +85 -23
  14. package/dist/cli/commands/doctor.js.map +1 -1
  15. package/dist/cli/commands/init.d.ts.map +1 -1
  16. package/dist/cli/commands/init.js +16 -3
  17. package/dist/cli/commands/init.js.map +1 -1
  18. package/dist/cli/commands/mcp.d.ts +766 -0
  19. package/dist/cli/commands/mcp.d.ts.map +1 -1
  20. package/dist/cli/commands/mcp.js +444 -244
  21. package/dist/cli/commands/mcp.js.map +1 -1
  22. package/dist/cli/commands/orient.d.ts.map +1 -1
  23. package/dist/cli/commands/orient.js +14 -2
  24. package/dist/cli/commands/orient.js.map +1 -1
  25. package/dist/cli/commands/prove.d.ts +29 -0
  26. package/dist/cli/commands/prove.d.ts.map +1 -0
  27. package/dist/cli/commands/prove.js +160 -0
  28. package/dist/cli/commands/prove.js.map +1 -0
  29. package/dist/cli/commands/setup.d.ts.map +1 -1
  30. package/dist/cli/commands/setup.js +5 -3
  31. package/dist/cli/commands/setup.js.map +1 -1
  32. package/dist/cli/index.js +2 -0
  33. package/dist/cli/index.js.map +1 -1
  34. package/dist/cli/install/adapters/claude-code.d.ts +8 -2
  35. package/dist/cli/install/adapters/claude-code.d.ts.map +1 -1
  36. package/dist/cli/install/adapters/claude-code.js +99 -35
  37. package/dist/cli/install/adapters/claude-code.js.map +1 -1
  38. package/dist/cli/install/detect.d.ts.map +1 -1
  39. package/dist/cli/install/detect.js +14 -0
  40. package/dist/cli/install/detect.js.map +1 -1
  41. package/dist/cli/install/templates/agent-instructions.md +4 -2
  42. package/dist/constants.d.ts +16 -3
  43. package/dist/constants.d.ts.map +1 -1
  44. package/dist/constants.js +24 -3
  45. package/dist/constants.js.map +1 -1
  46. package/dist/core/agent-eval/measure.d.ts +57 -0
  47. package/dist/core/agent-eval/measure.d.ts.map +1 -0
  48. package/dist/core/agent-eval/measure.js +85 -0
  49. package/dist/core/agent-eval/measure.js.map +1 -0
  50. package/dist/core/agent-eval/scorecard.d.ts +37 -0
  51. package/dist/core/agent-eval/scorecard.d.ts.map +1 -0
  52. package/dist/core/agent-eval/scorecard.js +70 -0
  53. package/dist/core/agent-eval/scorecard.js.map +1 -0
  54. package/dist/core/agent-eval/tasks.d.ts +37 -0
  55. package/dist/core/agent-eval/tasks.d.ts.map +1 -0
  56. package/dist/core/agent-eval/tasks.js +76 -0
  57. package/dist/core/agent-eval/tasks.js.map +1 -0
  58. package/dist/core/analyzer/architecture-writer.d.ts +5 -3
  59. package/dist/core/analyzer/architecture-writer.d.ts.map +1 -1
  60. package/dist/core/analyzer/architecture-writer.js +6 -4
  61. package/dist/core/analyzer/architecture-writer.js.map +1 -1
  62. package/dist/core/analyzer/artifact-generator.d.ts.map +1 -1
  63. package/dist/core/analyzer/artifact-generator.js +59 -4
  64. package/dist/core/analyzer/artifact-generator.js.map +1 -1
  65. package/dist/core/analyzer/call-graph.d.ts +19 -1
  66. package/dist/core/analyzer/call-graph.d.ts.map +1 -1
  67. package/dist/core/analyzer/call-graph.js +130 -28
  68. package/dist/core/analyzer/call-graph.js.map +1 -1
  69. package/dist/core/analyzer/spec-vector-index.d.ts.map +1 -1
  70. package/dist/core/analyzer/spec-vector-index.js +6 -2
  71. package/dist/core/analyzer/spec-vector-index.js.map +1 -1
  72. package/dist/core/architecture/check.d.ts +63 -0
  73. package/dist/core/architecture/check.d.ts.map +1 -0
  74. package/dist/core/architecture/check.js +192 -0
  75. package/dist/core/architecture/check.js.map +1 -0
  76. package/dist/core/architecture/rules.d.ts +73 -0
  77. package/dist/core/architecture/rules.d.ts.map +1 -0
  78. package/dist/core/architecture/rules.js +201 -0
  79. package/dist/core/architecture/rules.js.map +1 -0
  80. package/dist/core/decisions/project.d.ts +59 -0
  81. package/dist/core/decisions/project.d.ts.map +1 -0
  82. package/dist/core/decisions/project.js +68 -0
  83. package/dist/core/decisions/project.js.map +1 -0
  84. package/dist/core/decisions/verifier.d.ts +10 -0
  85. package/dist/core/decisions/verifier.d.ts.map +1 -1
  86. package/dist/core/decisions/verifier.js +48 -5
  87. package/dist/core/decisions/verifier.js.map +1 -1
  88. package/dist/core/provenance/change-coupling.d.ts +68 -0
  89. package/dist/core/provenance/change-coupling.d.ts.map +1 -0
  90. package/dist/core/provenance/change-coupling.js +134 -0
  91. package/dist/core/provenance/change-coupling.js.map +1 -0
  92. package/dist/core/provenance/git-provenance.d.ts +67 -0
  93. package/dist/core/provenance/git-provenance.d.ts.map +1 -0
  94. package/dist/core/provenance/git-provenance.js +177 -0
  95. package/dist/core/provenance/git-provenance.js.map +1 -0
  96. package/dist/core/provenance/project.d.ts +37 -0
  97. package/dist/core/provenance/project.d.ts.map +1 -0
  98. package/dist/core/provenance/project.js +46 -0
  99. package/dist/core/provenance/project.js.map +1 -0
  100. package/dist/core/services/config-manager.d.ts +17 -0
  101. package/dist/core/services/config-manager.d.ts.map +1 -1
  102. package/dist/core/services/config-manager.js +35 -1
  103. package/dist/core/services/config-manager.js.map +1 -1
  104. package/dist/core/services/edge-store.d.ts +41 -0
  105. package/dist/core/services/edge-store.d.ts.map +1 -1
  106. package/dist/core/services/edge-store.js +251 -3
  107. package/dist/core/services/edge-store.js.map +1 -1
  108. package/dist/core/services/llm-service.d.ts +9 -0
  109. package/dist/core/services/llm-service.d.ts.map +1 -1
  110. package/dist/core/services/llm-service.js +15 -4
  111. package/dist/core/services/llm-service.js.map +1 -1
  112. package/dist/core/services/mcp-handlers/architecture.d.ts +19 -0
  113. package/dist/core/services/mcp-handlers/architecture.d.ts.map +1 -0
  114. package/dist/core/services/mcp-handlers/architecture.js +104 -0
  115. package/dist/core/services/mcp-handlers/architecture.js.map +1 -0
  116. package/dist/core/services/mcp-handlers/change-coupling.d.ts +16 -0
  117. package/dist/core/services/mcp-handlers/change-coupling.d.ts.map +1 -0
  118. package/dist/core/services/mcp-handlers/change-coupling.js +57 -0
  119. package/dist/core/services/mcp-handlers/change-coupling.js.map +1 -0
  120. package/dist/core/services/mcp-handlers/graph.d.ts +27 -0
  121. package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -1
  122. package/dist/core/services/mcp-handlers/graph.js +98 -16
  123. package/dist/core/services/mcp-handlers/graph.js.map +1 -1
  124. package/dist/core/services/mcp-handlers/orient.d.ts +1 -1
  125. package/dist/core/services/mcp-handlers/orient.d.ts.map +1 -1
  126. package/dist/core/services/mcp-handlers/orient.js +196 -39
  127. package/dist/core/services/mcp-handlers/orient.js.map +1 -1
  128. package/dist/core/services/mcp-handlers/progressive.d.ts +46 -0
  129. package/dist/core/services/mcp-handlers/progressive.d.ts.map +1 -0
  130. package/dist/core/services/mcp-handlers/progressive.js +0 -0
  131. package/dist/core/services/mcp-handlers/progressive.js.map +1 -0
  132. package/dist/core/services/mcp-handlers/reachability.d.ts +30 -0
  133. package/dist/core/services/mcp-handlers/reachability.d.ts.map +1 -0
  134. package/dist/core/services/mcp-handlers/reachability.js +222 -0
  135. package/dist/core/services/mcp-handlers/reachability.js.map +1 -0
  136. package/dist/core/services/mcp-handlers/semantic.d.ts +1 -1
  137. package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -1
  138. package/dist/core/services/mcp-handlers/semantic.js +39 -26
  139. package/dist/core/services/mcp-handlers/semantic.js.map +1 -1
  140. package/dist/core/services/mcp-handlers/structural-diff.d.ts +31 -0
  141. package/dist/core/services/mcp-handlers/structural-diff.d.ts.map +1 -0
  142. package/dist/core/services/mcp-handlers/structural-diff.js +268 -0
  143. package/dist/core/services/mcp-handlers/structural-diff.js.map +1 -0
  144. package/dist/core/services/mcp-handlers/test-impact.d.ts +34 -0
  145. package/dist/core/services/mcp-handlers/test-impact.d.ts.map +1 -0
  146. package/dist/core/services/mcp-handlers/test-impact.js +221 -0
  147. package/dist/core/services/mcp-handlers/test-impact.js.map +1 -0
  148. package/dist/core/services/mcp-handlers/tool-guard.d.ts +45 -0
  149. package/dist/core/services/mcp-handlers/tool-guard.d.ts.map +1 -0
  150. package/dist/core/services/mcp-handlers/tool-guard.js +81 -0
  151. package/dist/core/services/mcp-handlers/tool-guard.js.map +1 -0
  152. package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -1
  153. package/dist/core/services/mcp-handlers/utils.js +15 -1
  154. package/dist/core/services/mcp-handlers/utils.js.map +1 -1
  155. package/dist/core/services/mcp-watcher.d.ts +7 -0
  156. package/dist/core/services/mcp-watcher.d.ts.map +1 -1
  157. package/dist/core/services/mcp-watcher.js +46 -0
  158. package/dist/core/services/mcp-watcher.js.map +1 -1
  159. package/dist/core/services/project-detector.d.ts.map +1 -1
  160. package/dist/core/services/project-detector.js +45 -2
  161. package/dist/core/services/project-detector.js.map +1 -1
  162. package/package.json +8 -8
package/README.md CHANGED
@@ -9,6 +9,37 @@ openlore turns any evolving codebase into a navigable knowledge graph backed by
9
9
 
10
10
  ---
11
11
 
12
+ ## Value Scorecard — does it pay for itself?
13
+
14
+ OpenLore only earns its place if an agent **with** it reaches a correct answer for less total cost than the same agent **without** it. We measure that inequality and publish it — wins **and** losses. Numbers are from the Spec 14 agent benchmark (`claude -p`, sonnet, N=4 medians, pinned SHAs, `--strict-mcp-config` isolating each arm), measured **2026-06-01**.
15
+
16
+ | Scenario (task × repo) | Cost Δ | Round-trips Δ | Correctness | Verdict |
17
+ |---|---|---|---|---|
18
+ | **Large/unfamiliar repo · deep "how does X flow through Y"** *(its target)* | **−7% to −21%** | **−26%** | 100% = 100% | ✅ helps — and the win grows with repo size |
19
+ | Small/familiar repo · shallow "who calls X" | **task-dependent** *(Round 1: +43%)* | **+38%** | 100% = 100% | ❌ often adds overhead — measure with `openlore prove` |
20
+
21
+ > **Re-confirmed live 2026-06-03 (N=2):** the deep-task win **reproduces** — okhttp **−13%, identical to the table below**. The small/familiar case is **task-dependent, not a flat loss**: same repo class, opposite outcomes (chalk **−32%** win vs express **+59%** loss) — the cost there is a sometimes-redundant `orient` round-trip, not tool-schema bytes, so a leaner surface doesn't close it. Don't guess from our repos — run **`openlore prove`** on yours.
22
+
23
+ Deep-trace detail — the win scales with codebase size (cost Δ; round-trips WITHOUT → WITH):
24
+
25
+ | Repo (size) | Cost Δ | Round-trips |
26
+ |---|---|---|
27
+ | excalidraw (~640 files) | **−21%** | 25 → 16 |
28
+ | tokio (~790 files) | **−21%** | 17 → 13 |
29
+ | okhttp | **−13%** | 13 → 11 |
30
+ | django (~3k files) | **−7%** | 21 → 15 |
31
+ | gin (110 files, smallest) | +4% *(≈even)* | 10 → 9 |
32
+
33
+ **When OpenLore helps — and when it doesn't:**
34
+ - **Helps:** large, unfamiliar, or private codebases the model hasn't memorized; deep multi-hop questions; long sessions where re-reading an ever-growing context compounds. The most consistent, hardest-to-game signal is **round-trips: −26%, fewer on every deep task.**
35
+ - **Doesn't (yet):** small, famous repos already in the model's weights answered by a shallow query — there's no orientation tax to remove, so the MCP tool surface is pure overhead.
36
+
37
+ **Reproduce it:** `npm run bench:agent` (needs an API key for the agent arm). Full methodology, per-task numbers, and caveats: [docs/AGENT-BENCHMARKS.md](docs/AGENT-BENCHMARKS.md). Plumbing latency (orient ~430µs p50) is separate and real: [scripts/BENCHMARKS.md](scripts/BENCHMARKS.md).
38
+
39
+ > **Honesty contract.** We never publish a savings number the benchmark didn't produce; we always show the loss cases next to the wins; the scorecard is date-stamped and re-measured after each optimization phase. Every public token claim traces to a command you can run in this repo — if it doesn't reproduce, treat it as marketing and call it out.
40
+
41
+ ---
42
+
12
43
  ## Why It Exists
13
44
 
14
45
  AI agents are powerful but amnesiac. On every new task:
@@ -16,7 +47,7 @@ AI agents are powerful but amnesiac. On every new task:
16
47
  - They re-read the same source files to understand structure
17
48
  - They forget architectural decisions made two sessions ago
18
49
  - They have no link between specs and code — drift is invisible
19
- - File-by-file navigation often burns an estimated **15,000–50,000 tokens** per orientation pass, before a single line of useful code is written (measured benefit is task-dependent it shows up on deep questions in larger codebases, not on small/familiar repos; see the note below)
50
+ - File-by-file navigation costs round-trips and fresh tokens that grow with repo size on deep traces in large repos the WITHOUT baseline runs **17–25 tool-calls** to reach an answer; openlore cuts that **−26%** (see the [Value Scorecard](#value-scorecard--does-it-pay-for-itself) for the measured numbers, and where it does *not* help)
20
51
  - In long sessions, they drift from authoritative retrieval toward internally cached reasoning — producing subtly wrong architectural assumptions that compound silently until a refactor breaks
21
52
 
22
53
  openlore closes this loop. Run a full analysis once, then keep the graph incrementally updated as the codebase evolves. Even greenfield projects become cognitively "brownfield" after only a few agent sessions — architectural context fragments, decisions disappear, and agents repeatedly reconstruct the same understanding from scratch.
@@ -33,7 +64,7 @@ Three layers, each usable independently:
33
64
  |-------|-------------|----------|
34
65
  | **1. Static Analysis** | Call graph, clusters, McCabe CC, external deps → `CODEBASE.md` digest | No |
35
66
  | **2. Spec Layer** | LLM-generated living specs, ADRs, drift detection, decision gates | For generation |
36
- | **3. Agent Runtime** | 45 MCP tools — `orient()`, semantic search, graph expansion | No |
67
+ | **3. Agent Runtime** | 50 MCP tools — `orient()`, semantic search, graph expansion | No |
37
68
 
38
69
  You can use layer 1 alone to give agents structural context. Add layer 2 for semantic intent and architectural governance through OpenSpec-compatible living specifications. Layer 3 keeps that context continuously accessible through graph-native MCP tools once `openlore mcp` is running.
39
70
 
@@ -47,13 +78,12 @@ You can use layer 1 alone to give agents structural context. Add layer 2 for sem
47
78
  | Spec drift detection | ❌ | ❌ | ✓ milliseconds, no API |
48
79
  | Architectural decision gates | ❌ | ❌ | ✓ pre-commit hook |
49
80
  | Offline structural analysis | ❌ | ❌ | ✓ |
50
- | Token-efficient orient() | ❌ | ❌ | ✓ ~1–3k vs 15–50k tokens † |
81
+ | Token-efficient orient() | ❌ | ❌ | ✓ −7%→−21% cost, −26% round-trips on deep tasks † |
51
82
  | Living spec generation | ❌ | ❌ | ✓ |
52
83
  | Persistent cross-session architectural memory | ❌ | Partial | ✓ |
53
84
 
54
- † **Measured, and it depends on the task.** The exact token figures above remain
55
- an estimate, but the Spec 14 agent benchmark (`npm run bench:agent`, WITH vs
56
- WITHOUT openlore, `claude -p`, N=4 medians) now gives a measured two-tier result:
85
+ † **Measured, and it depends on the task** (full numbers in the [Value Scorecard](#value-scorecard--does-it-pay-for-itself) above). The Spec 14 agent benchmark (`npm run bench:agent`, WITH vs
86
+ WITHOUT openlore, `claude -p`, N=4 medians) gives a two-tier result:
57
87
  - **Small, familiar repos + shallow "who-calls-X" queries:** openlore *adds*
58
88
  ~43% cost — the model already knows the code, so there's no orientation to save.
59
89
  - **Larger codebases + deep "how does X flow through Y" questions (its target):**
@@ -173,6 +203,33 @@ One graph query replaces most exploratory file reads. The agent knows exactly wh
173
203
 
174
204
  ---
175
205
 
206
+ ## Agent Cheat Sheet
207
+
208
+ The full surface is 50 tools, but day-to-day work needs a handful. Reach for the right one by situation:
209
+
210
+ | Situation | Tool |
211
+ |-----------|------|
212
+ | Starting any task | `orient(task)` — functions, callers, specs, insertion points in one call |
213
+ | Shallow "who calls X / where is Y?" | `orient(task, lean:true)` (CLI `orient --lean`) — navigation core only, ~40% smaller and skips the enrichment compute (Spec 27) |
214
+ | "Which file/function handles X?" | `search_code` |
215
+ | Call topology across many files | `get_subgraph` / `analyze_impact` |
216
+ | "What's the blast radius if I change this?" | `analyze_impact` — risk score + up/downstream chain + **governing decisions** |
217
+ | "What decisions constrain this code?" | `analyze_impact` / `get_subgraph` → `governingDecisions` (Spec 16) |
218
+ | Planning where to add a feature | `suggest_insertion_points` |
219
+ | "How does request X reach function Y?" | `trace_execution_path` |
220
+ | "I changed X — which tests should I run?" | `select_tests` — backward reachability to the reaching tests + paths (Spec 19) |
221
+ | "What's dead / what dies if I delete X?" | `find_dead_code` — cross-language reachability, confidence-tagged candidates (Spec 20) |
222
+ | "What changed structurally / whose callers are now stale?" | `structural_diff` — graph diff, stale callers, rename flags (Spec 21) |
223
+ | "What changes together with this / what's volatile?" | `get_change_coupling` — co-change + churn from git history (Spec 22) |
224
+ | "May I add this import here / what breaks the architecture?" | `check_architecture` — pre-edit verdict against declared rules (Spec 23) |
225
+ | Recording an architectural choice | `record_decision` **before** writing the code |
226
+ | Reading / checking a spec | `get_spec` · `search_specs` · `check_spec_drift` |
227
+ | Ranking what changed by risk | `detect_changes` |
228
+
229
+ Everything else (read a file, grep, list files) uses your native tools. Full reference: [docs/mcp-tools.md](docs/mcp-tools.md).
230
+
231
+ ---
232
+
176
233
  ## Use OpenLore as a Claude Code Skill
177
234
 
178
235
  OpenLore ships a canonical [Claude Code Skill](https://docs.claude.com/en/docs/claude-code/skills) at [`skills/openlore-orient/`](skills/openlore-orient/). Install it once and Claude Code will automatically call `orient()` at the start of every task — no `CLAUDE.md` editing required.
@@ -215,11 +272,31 @@ Compares git changes against spec mappings in milliseconds. Detects: Gap (code c
215
272
 
216
273
  **MCP** (no API key)
217
274
 
218
- 45 graph-native tools exposed over stdio. Together they act as a persistent architectural runtime for coding agents: orientation, graph traversal, semantic retrieval, drift awareness, decision context, and structural risk analysis.
219
- `orient()` is the main entry point — one call replaces 10+ file reads. `detect_changes` risk-scores changed functions using call graph centrality × change type multiplier. See [docs/mcp-tools.md](docs/mcp-tools.md).
275
+ 50 graph-native tools exposed over stdio. Together they act as a persistent architectural runtime for coding agents: orientation, graph traversal, semantic retrieval, drift awareness, decision context, and structural risk analysis.
276
+ `orient()` is the main entry point — it collapses the discovery loop into one call (measured: **−26% round-trips** on deep traces; see the [Value Scorecard](#value-scorecard--does-it-pay-for-itself)). `detect_changes` risk-scores changed functions using call graph centrality × change type multiplier. Every tool call runs the same guards — input validation against its schema (bad args → JSON-RPC `-32602`), a per-tool timeout, a deterministic output-size cap, and normalized error codes — and the surface carries complete MCP `annotations`. See [docs/mcp-tools.md](docs/mcp-tools.md).
220
277
 
221
278
  `orient()` runs in **~430µs p50** against a 15k-node codebase (TypeScript compiler, ~79k edges). Full benchmark results: [scripts/BENCHMARKS.md](scripts/BENCHMARKS.md).
222
279
 
280
+ **Test impact selection** (no API key, Spec 19)
281
+
282
+ `select_tests` answers "I changed `parseConfig()` — which tests should I run?" by walking the call graph **backward** from the change to every test that transitively reaches it (via `calls` + `tested_by` + inheritance edges), returning each test with its reaching path. This is static, call-graph-based regression test selection (RTS) — established CS — served to the agent at edit time instead of to CI after the fact. grep can't do it (the reach is through indirect calls); the model is slow and guesses; a deterministic graph does it instantly. It is an honest **over-approximate prioritizer** ("run these first"), not a sound replacement for the full suite — the response states its posture, coverage, and caveats (dynamic dispatch / DI can under-select). Inputs: a symbol set or a git diff. Deterministic and offline. See [docs/test-impact-selection.md](docs/test-impact-selection.md).
283
+
284
+ **Reachability & dead-code** (no API key, Spec 20)
285
+
286
+ `find_dead_code` runs cross-language mark-and-sweep over the call graph: reachability from roots (tests, imported symbols, route handlers, `main`), candidate-dead = the unreached remainder, and "what becomes dead if I delete X?" = the set reachable only through X. Prior art (knip, ts-prune) is TS/JS-only; this rides the unified tree-sitter graph across 15+ languages. Results are **confidence-tagged candidates, never deletion authority** — dynamic dispatch, DI, framework routing, and externally-consumed exports cause false positives, stated in the response. A conservative module-level liveness signal keeps high-confidence candidates trustworthy (it cut them from ~470 to ~35 on a real repo). See [docs/reachability-dead-code.md](docs/reachability-dead-code.md).
287
+
288
+ **Structural change analysis** (no API key, Spec 21)
289
+
290
+ `structural_diff` is a graph diff — the structural complement to `git diff`. Between two states (working tree vs a ref, or two refs) it reports functions and edges added/removed, signature changes, and the existing callers in *other* files now **stale** because a callee's signature moved under them. A review/refactor agent gets "this removed `gamma`, changed `alpha`'s signature, and 5 of its callers are now stale" instead of "these 40 lines changed". Only the changed files are re-parsed (old via `git show`, new via the working tree), so it is cheap and never mutates the canonical graph; rename/move ambiguity is flagged, not guessed. See [docs/structural-diff.md](docs/structural-diff.md).
291
+
292
+ **Change-coupling & volatility** (no API key, Spec 22)
293
+
294
+ `get_change_coupling` mines two facts from local git history that the call graph structurally cannot see: **co-change coupling** ("these files almost always change together" — the *invisible* coupling with no import or call edge) and **volatility/churn** ("this file changed 23 times" — a risk flag). Prior art (CodeScene) puts it well: change coupling "isn’t possible to calculate from code alone — it is mined from git." Surfaced additively in `orient` as caution signals. Support/confidence thresholds and a bulk-commit filter keep it honest; it is an **advisory signal, correlation not causation**. Local, deterministic, no network (reuses the Spec 18 git ingestion). See [docs/change-coupling.md](docs/change-coupling.md).
295
+
296
+ **Architecture invariant guardrails** (no API key, Spec 23)
297
+
298
+ `check_architecture` turns an architectural rule from a post-hoc CI failure into a **pre-write** guardrail. A repo declares constraints — `layers`, `forbidden`, `allowedOnly` — in `.openlore/architecture.json` (or via an `Invariant:` marker on a synced ADR, so a recorded decision *carries* its invariant), and the tool answers, before the agent writes the import, *"may a file under A import B?"* with a deterministic verdict + the governing rule + why, plus a full violation scan. Prior art (ArchUnit, dependency-cruiser, import-linter) enforces architecture in CI *after* the code is written and per-language; OpenLore's contributions are **cross-language** rules over the unified dependency graph and **agent-facing, pre-edit** evaluation (reusing the same `classifyLayerEdge` primitive that powers `CODEBASE.md`'s layer report). Opt-in and fully inert until rules are declared; never LLM-inferred; complements, not replaces, CI linters. See [docs/architecture-invariants.md](docs/architecture-invariants.md).
299
+
223
300
  **Epistemic Lease** (no API key)
224
301
 
225
302
  > **Core principle**: EpistemicLease models architectural drift as a behavioral navigation phenomenon rather than a semantic understanding problem. Context decay is driven by where the agent goes (cross-module trajectory), not what it knows.
@@ -247,6 +324,12 @@ When fresh, injection is zero-overhead. Calling `orient()` resets the tracker. U
247
324
 
248
325
  Agents call `record_decision` before writing code. Consolidation runs immediately in the background. At commit time, a pre-commit hook gates the commit until all verified decisions are reviewed and written back as requirements in `spec.md` files. Decisions are classified by scope (`local / component / cross-domain / system`); only `cross-domain` and `system` decisions produce ADR files, keeping the decision log signal-dense.
249
326
 
327
+ Decisions are also **first-class graph nodes**. At analyze time the active decision store is projected — the same parser→projector split that puts Infrastructure-as-Code on the graph — into `decision::<id>` nodes joined to the files they govern by `affects` edges. The relationship is stored, not recomputed: `analyze_impact` and `get_subgraph` return the governing decisions of a symbol and its blast radius as typed neighbors (`nodeType: "decision"`), and `orient` reports which relevant files each decision governs. This turns "what architectural decisions constrain this code, and what does changing it implicate?" into a deterministic graph query — the join no code-navigation competitor offers. The JSON store stays authoritative; the projection is derived and rebuilt on every analyze. See [docs/specs/openlore-spec-16-decisions-as-graph-nodes.md](docs/specs/openlore-spec-16-decisions-as-graph-nodes.md).
328
+
329
+ **Provenance** (no API key, local-only)
330
+
331
+ Reads the local `.git` history (and local `gh` if present) to project `authored_by` (file → person) and `changed_in_pr` (file → PR) edges onto the graph, so `orient` answers "last changed by X in PR #N" — provenance grep cannot surface. **No OAuth, no cloud connector, nothing is ever uploaded**: the git-only path needs no network, and `gh` is an optional enrichment that degrades gracefully when absent or unauthenticated. Bounded (last-touch + top-N recent authors + recent PRs per file) so the graph never bloats; deterministic for a fixed git state. The same local history feeds the change-coupling instrument (Spec 22). See [docs/provenance.md](docs/provenance.md).
332
+
250
333
  **Telemetry** (opt-in, no API key)
251
334
 
252
335
  Cognitive telemetry for empirical measurement of EpistemicLease behavior. Gated by `OPENLORE_TELEMETRY=1` — disabled by default. Writes append-only JSONL to `.openlore/telemetry/` per domain. Agent identity is captured from the MCP `initialize` handshake, enabling per-agent behavioral comparison.
@@ -274,25 +357,68 @@ Key metrics: **obstinacy index** (tool calls after stale before orient — measu
274
357
 
275
358
  OpenSpec provides semantic intent and workflow structure. openlore maintains the evolving implementation as a continuously queryable architectural graph for agents.
276
359
 
360
+ ```mermaid
361
+ flowchart TD
362
+ Code[Codebase] --> Analyze[openlore analyze<br/>tree-sitter · pure static analysis]
363
+ Analyze --> DB[(SQLite graph store<br/>.openlore/analysis/call-graph.db)]
364
+ Analyze --> Digest[CODEBASE.md<br/>~600-token structural digest]
365
+
366
+ subgraph shared["Projected onto shared node + edge primitives"]
367
+ direction LR
368
+ CodeNodes[functions + call edges]
369
+ Iac[IaC resources + references]
370
+ Dec[decisions + affects edges]
371
+ end
372
+ Analyze --> CodeNodes
373
+ Analyze --> Iac
374
+ Analyze -. active decision store .-> Dec
375
+ CodeNodes --> DB
376
+ Iac --> DB
377
+ Dec --> DB
378
+
379
+ DB --> MCP[50 MCP tools<br/>orient · BFS · search · analyze_impact]
380
+ MCP --> Agent((Coding Agent))
381
+
382
+ Code -. optional, API key .-> Gen[openlore generate]
383
+ Gen --> Specs[openspec/specs/*.md<br/>RFC 2119 living specs]
384
+ Code --> Drift[openlore drift<br/>spec/code drift, ms, no API]
385
+ Agent -. record_decision .-> Gate[decisions pre-commit gate]
386
+ Gate --> Specs
277
387
  ```
278
- Codebase
279
-
280
-
281
- openlore analyze ──► SQLite graph store (.openlore/analysis/call-graph.db)
282
- │ │
283
- │ MCP tools (orient, BFS, search…)
284
- │ │
285
- Artifact Generator Agent
286
-
287
- ┌─────┴──────┐
288
- ▼ ▼
289
- CODEBASE.md (optional)
290
- openlore generate ──► openspec/specs/*.md
291
- openlore drift ──► drift report
292
- openlore decisions ► ADR gates
388
+
389
+ The graph and the OpenSpec spec layer are co-equal: the graph makes orientation fast, the specs make it semantically grounded. Drift detection and decision gates connect both. Crucially, application code, Infrastructure-as-Code, and architectural **decisions** all project onto one shared set of node/edge primitives — so a single traversal answers questions that span all three. See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the full pipeline diagram.
390
+
391
+ **Decisions on the graph** (Spec 16) — a decision becomes a node joined to the files it governs by `affects` edges, so impact analysis returns governance as a neighbor:
392
+
393
+ ```mermaid
394
+ flowchart LR
395
+ D["decision::c6d1ad07<br/>North-star substrate"]:::dec
396
+ D -- affects --> F1[src/cli/export/scip.ts]
397
+ D -- affects --> F2[src/core/analyzer/iac/project.ts]
398
+ F1 -- calls --> G[exportScip]
399
+ classDef dec fill:#6f42c1,stroke:#4b2e83,color:#fff
293
400
  ```
294
401
 
295
- The graph and the OpenSpec spec layer are co-equal: the graph makes orientation fast, the specs make it semantically grounded. Drift detection and decision gates connect both. See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the full pipeline diagram.
402
+ ---
403
+
404
+ ## Design Decisions
405
+
406
+ OpenLore dogfoods its own decision system. These ADRs were recorded with `record_decision`, gated at commit, and synced into `openspec/specs/` — and (per Spec 16) are now projected onto the graph itself. They are the load-bearing constraints behind the architecture above:
407
+
408
+ | Decision | Rationale | Where |
409
+ |----------|-----------|-------|
410
+ | **North star is a deterministic structural context substrate** | Local-first plumbing (like tree-sitter/SCIP/LSP) that agents build on; every feature must make the coding-agent case more useful and stay grounded in static analysis, not LLM guessing | [ADR-0001](openspec/decisions/adr-0001-north-star-is-a-deterministic-structural-context-s.md) |
411
+ | **IaC resources project onto the existing graph primitives** | One projector maps infrastructure onto `FunctionNode`/`CallEdge` so every MCP tool works on IaC with zero new tooling | `analyzer` spec · `src/core/analyzer/iac/project.ts` |
412
+ | **Decisions project onto the graph the same way** | A parser→projector split turns the decision store into `decision::` nodes + `affects` edges — governance becomes a deterministic graph join | `analyzer` spec · `src/core/decisions/project.ts` (Spec 16) |
413
+ | **EdgeStore uses SCHEMA_VERSION rebuild-on-bump, not migrations** | The graph is fully derivable from source, so a schema change drops and rebuilds — no migration code, no drift | `analyzer` spec · `src/core/services/edge-store.ts` |
414
+ | **BM25 keyword retrieval is the zero-network floor** | `orient`/`search_code` work with no API key or embedding server; dense embeddings are an optional upgrade, never a requirement | `analyzer` spec · Spec 06 |
415
+ | **SCIP is a one-way export, not a round-trip format** | The SQLite graph stays canonical; SCIP exports only the subset it can model, avoiding a lossy bidirectional contract | `cli` spec · `src/cli/export/scip.ts` |
416
+ | **MCP exposes a curated `navigation` preset, not all 50 tools** | A lean graph-traversal surface is what wins the Spec 14 agent benchmark; the full set stays available opt-in | `cli` spec · Spec 14 |
417
+ | **The `tools/list` prefix is trimmed losslessly + bounded by a guard, not byte-shaved** | Spec 28 measured it: MCP has no server-side schema deferral and the lossless byte-lever is ~2%; the real levers are the client (deferred schemas) and tool count, so we trim safely, guard against bloat, and report the limit | `cli` spec · Spec 28 |
418
+ | **Lean orientation skips enrichment compute, not just its payload** | `orient --lean` returns the navigation core for shallow lookups and skips the work behind the dropped blocks (extra embedding search, manifest/git reads); the rich default is unchanged | `cli` spec · Spec 27 |
419
+ | **Decision consolidation is serialized with a cross-process file lock** | Concurrent `record_decision` calls were losing drafts; a lock makes consolidation safe and every commit instant | `cli` spec · Spec 15 |
420
+
421
+ This table is not aspirational documentation — it is the live decision log the pre-commit gate enforces and Spec 16 makes queryable. See [docs/governance-dogfooding.md](docs/governance-dogfooding.md).
296
422
 
297
423
  ---
298
424
 
@@ -326,7 +452,7 @@ The manifest captures the public API surface, HTTP routes, stats, dependencies,
326
452
 
327
453
  | Topic | Doc |
328
454
  |-------|-----|
329
- | MCP tools reference (45 tools + parameters) | [docs/mcp-tools.md](docs/mcp-tools.md) |
455
+ | MCP tools reference (50 tools + parameters) | [docs/mcp-tools.md](docs/mcp-tools.md) |
330
456
  | Agent setup (Claude Code, Cline, OpenCode, Vibe…) | [docs/agent-setup.md](docs/agent-setup.md) |
331
457
  | `openlore install` — auto-configure agent surfaces | [docs/install.md](docs/install.md) |
332
458
  | LLM providers + embedding config | [docs/providers.md](docs/providers.md) |
@@ -335,6 +461,13 @@ The manifest captures the public API surface, HTTP routes, stats, dependencies,
335
461
  | CI/CD integration | [docs/ci-cd.md](docs/ci-cd.md) |
336
462
  | Preflight CI staleness gate | [docs/preflight.md](docs/preflight.md) |
337
463
  | SCIP export (Sourcegraph/Glean interop) | [docs/scip-export.md](docs/scip-export.md) |
464
+ | Cross-domain impact (code ↔ infrastructure) | [docs/cross-domain-impact.md](docs/cross-domain-impact.md) |
465
+ | Local provenance (git/PR, no OAuth) | [docs/provenance.md](docs/provenance.md) |
466
+ | Test impact selection (which tests to run) | [docs/test-impact-selection.md](docs/test-impact-selection.md) |
467
+ | Reachability & dead-code analysis | [docs/reachability-dead-code.md](docs/reachability-dead-code.md) |
468
+ | Structural change analysis (graph diff) | [docs/structural-diff.md](docs/structural-diff.md) |
469
+ | Change-coupling & volatility (git-mined) | [docs/change-coupling.md](docs/change-coupling.md) |
470
+ | Architecture invariant guardrails (pre-edit) | [docs/architecture-invariants.md](docs/architecture-invariants.md) |
338
471
  | Federation manifest (cross-repo) | [docs/federation.md](docs/federation.md) |
339
472
  | CLI command reference | [docs/cli-reference.md](docs/cli-reference.md) |
340
473
  | Interactive graph viewer | [docs/viewer.md](docs/viewer.md) |
@@ -378,6 +511,8 @@ The manifest captures the public API surface, HTTP routes, stats, dependencies,
378
511
 
379
512
  **Infrastructure-as-Code**: Terraform/HCL · Kubernetes · Helm · CloudFormation · Ansible · Pulumi · AWS CDK · CDKTF — IaC resources and their references are projected onto the same graph as application code, so `orient`, `search_code`, `get_subgraph`, and `analyze_impact` answer "what is the blast radius of changing this security group / ConfigMap / IAM role?" with zero new tooling. See [docs/iac.md](docs/iac.md).
380
513
 
514
+ **Cross-domain impact** (Spec 17): for embedded IaC (Pulumi/CDK/CDKTF), the code that provisions a resource is linked to it by a `references` edge, so `analyze_impact` traverses the code↔infra boundary **end-to-end** — "what infrastructure does this handler reach?" and the reverse, "what code breaks if I change this resource?". Infra neighbors are surfaced as a typed, ecosystem-tagged `crossDomain` block, distinct from the code blast radius. A code-only navigator structurally cannot answer this. Reproducible example: [docs/cross-domain-impact.md](docs/cross-domain-impact.md).
515
+
381
516
  ---
382
517
 
383
518
  ## Development
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/api/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAC;AAM/E;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CAgEpF"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/api/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAC;AAM/E;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CAsEpF"}
package/dist/api/init.js CHANGED
@@ -7,7 +7,7 @@
7
7
  import { resolve, relative } from 'node:path';
8
8
  import { OPENLORE_DIR, OPENLORE_CONFIG_REL_PATH, DEFAULT_OPENSPEC_PATH } from '../constants.js';
9
9
  import { detectProjectType, getProjectTypeName, } from '../core/services/project-detector.js';
10
- import { getDefaultConfig, writeOpenLoreConfig, openloreConfigExists, openspecDirExists, createOpenSpecStructure, } from '../core/services/config-manager.js';
10
+ import { getDefaultConfig, writeOpenLoreConfig, openloreConfigExists, openspecDirExists, createOpenSpecStructure, detectExistingSpecDir, } from '../core/services/config-manager.js';
11
11
  import { gitignoreExists, isInGitignore, addToGitignore, } from '../core/services/gitignore-manager.js';
12
12
  function progress(onProgress, step, status, detail) {
13
13
  onProgress?.({ phase: 'init', step, status, detail });
@@ -23,7 +23,14 @@ function progress(onProgress, step, status, detail) {
23
23
  */
24
24
  export async function openloreInit(options = {}) {
25
25
  const rootPath = options.rootPath ?? process.cwd();
26
- const openspecRelPath = options.openspecPath ?? DEFAULT_OPENSPEC_PATH;
26
+ let openspecRelPath = options.openspecPath ?? DEFAULT_OPENSPEC_PATH;
27
+ // Point at existing specs (docs/specs/, specs/) rather than creating an empty
28
+ // openspec/ blind to them, unless an explicit path was given (Spec 26 B5).
29
+ if (!options.openspecPath) {
30
+ const detected = await detectExistingSpecDir(rootPath);
31
+ if (detected && detected.root !== 'openspec')
32
+ openspecRelPath = detected.root;
33
+ }
27
34
  const openspecFullPath = resolve(rootPath, openspecRelPath);
28
35
  const force = options.force ?? false;
29
36
  const { onProgress } = options;
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/api/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/api/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAEhG,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,2CAA2C,CAAC;AAyBnD,UAAU,cAAc;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAaD;;GAEG;AAMH;;GAEG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GACA,OAAO,CAAC,cAAc,CAAC,CA4FzB;AAMD,eAAO,MAAM,cAAc,SAohBvB,CAAC"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAEhG,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,2CAA2C,CAAC;AAyBnD,UAAU,cAAc;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAaD;;GAEG;AAMH;;GAEG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GACA,OAAO,CAAC,cAAc,CAAC,CA4FzB;AAMD,eAAO,MAAM,cAAc,SAshBvB,CAAC"}
@@ -448,7 +448,7 @@ After analysis, run 'openlore generate' to create OpenSpec files.
448
448
  try {
449
449
  const ctx = artifacts.llmContext ?? null;
450
450
  const overview = buildArchitectureOverview(depGraph, ctx, rootPath);
451
- await writeArchitectureMd(rootPath, overview);
451
+ await writeArchitectureMd(outputPath, overview);
452
452
  architectureMdWritten = true;
453
453
  }
454
454
  catch (archErr) {
@@ -503,12 +503,14 @@ After analysis, run 'openlore generate' to create OpenSpec files.
503
503
  if (artifacts.repoStructure.envVars.length > 0) {
504
504
  console.log(` ├─ ${opts.output}env-inventory.json (${artifacts.repoStructure.envVars.length} env var(s))`);
505
505
  }
506
+ // CODEBASE.md (digestWritten) is the last branch when present, so it owns the
507
+ // └─ corner; otherwise the corner falls to ARCHITECTURE.md / SUMMARY.md.
506
508
  if (architectureMdWritten) {
507
509
  console.log(` ├─ ${opts.output}SUMMARY.md`);
508
- console.log(' ├─ ARCHITECTURE.md');
510
+ console.log(` ${digestWritten ? '├─' : '└─'} ${opts.output}ARCHITECTURE.md`);
509
511
  }
510
512
  else {
511
- console.log(` ├─ ${opts.output}SUMMARY.md`);
513
+ console.log(` ${digestWritten ? '├─' : '└─'} ${opts.output}SUMMARY.md`);
512
514
  }
513
515
  if (digestWritten) {
514
516
  console.log(` └─ ${opts.output}CODEBASE.md`);
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,6 @@
10
10
  import { Command } from 'commander';
11
11
  export declare function installPreCommitHook(rootPath: string): Promise<void>;
12
12
  export declare function uninstallPreCommitHook(rootPath: string): Promise<void>;
13
- export declare function installClaudeHook(rootPath: string): Promise<void>;
14
13
  export declare function uninstallClaudeHook(rootPath: string): Promise<void>;
15
14
  export declare const decisionsCommand: Command;
16
15
  //# sourceMappingURL=decisions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decisions.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/decisions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmLpC,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0E1E;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0D5E;AAeD,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBvE;AAUD,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAczE;AAiDD,eAAO,MAAM,gBAAgB,SAqjBzB,CAAC"}
1
+ {"version":3,"file":"decisions.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/decisions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6LpC,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0E1E;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0D5E;AAkBD,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAczE;AAiDD,eAAO,MAAM,gBAAgB,SAqjBzB,CAAC"}
@@ -156,8 +156,19 @@ async function ensureGitignored(rootPath, entry) {
156
156
  let content = '';
157
157
  if (await fileExists(gitignorePath)) {
158
158
  content = await readFile(gitignorePath, 'utf-8');
159
- if (content.split('\n').some((l) => l.trim() === entry))
160
- return;
159
+ // Trailing-slash-insensitive segments, so `.openlore` and `.openlore/` match
160
+ // but `.openlore` never falsely matches a sibling like `.openapi/` (B2a).
161
+ const segs = (p) => p.trim().replace(/\/+$/, '').split('/').filter(Boolean);
162
+ const want = segs(entry);
163
+ for (const line of content.split('\n')) {
164
+ const have = segs(line);
165
+ if (have.length === 0)
166
+ continue;
167
+ // Skip if an existing line is identical, or a covering parent prefix
168
+ // (e.g. existing `.openlore/` covers a new `.openlore/decisions/`).
169
+ if (have.length <= want.length && have.every((s, i) => s === want[i]))
170
+ return;
171
+ }
161
172
  }
162
173
  await writeFile(gitignorePath, content.trimEnd() + '\n' + entry + '\n', 'utf-8');
163
174
  logger.discovery(` → added ${entry} to .gitignore`);
@@ -289,36 +300,13 @@ export async function uninstallPreCommitHook(rootPath) {
289
300
  for (const filePath of agentFiles)
290
301
  await removeAgentInstructions(filePath);
291
302
  }
303
+ // Marker for the legacy full-`analyze` PostToolUse hook. The MCP server's
304
+ // `--watch-auto` (default since v2.0.6, Spec 13.1) is now the single freshness
305
+ // owner and keeps the index fresh incrementally O(change); the old hook ran a
306
+ // full O(repo) `openlore analyze` on *every* tool call (Read, Bash, …, masked
307
+ // only by a 10s lock) — pure double work. We no longer install it, and
308
+ // `uninstallClaudeHook` strips any copy a prior version left behind (Spec 26 B9).
292
309
  const ANALYZE_HOOK_MARKER = 'openlore analyze';
293
- const ANALYZE_HOOK_ENTRY = {
294
- _comment: 'openlore: keep call graph fresh after every file edit (debounced 10s)',
295
- type: 'command',
296
- command: [
297
- 'LOCK=.openlore/.analyze.lock;',
298
- 'if [ ! -f "$LOCK" ] || [ $(( $(date +%s) - $(cat "$LOCK" 2>/dev/null || echo 0) )) -gt 10 ]; then',
299
- ' echo $(date +%s) > "$LOCK";',
300
- ' openlore analyze --output .openlore/analysis 2>/dev/null & true;',
301
- 'fi',
302
- ].join(' '),
303
- };
304
- export async function installClaudeHook(rootPath) {
305
- const settingsPath = join(rootPath, '.claude', 'settings.json');
306
- let settings = {};
307
- try {
308
- settings = JSON.parse(await readFile(settingsPath, 'utf-8'));
309
- }
310
- catch { /* file missing or corrupt — start fresh */ }
311
- const hooks = settings.hooks?.PostToolUse ?? [];
312
- if (hooks.some((h) => JSON.stringify(h).includes(ANALYZE_HOOK_MARKER))) {
313
- logger.success('Claude Code analyze hook already present in .claude/settings.json');
314
- return;
315
- }
316
- settings.hooks ??= {};
317
- settings.hooks.PostToolUse = [...hooks, ANALYZE_HOOK_ENTRY];
318
- await mkdir(join(rootPath, '.claude'), { recursive: true });
319
- await writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
320
- logger.success('Claude Code PostToolUse hook added to .claude/settings.json');
321
- }
322
310
  export async function uninstallClaudeHook(rootPath) {
323
311
  const settingsPath = join(rootPath, '.claude', 'settings.json');
324
312
  if (!(await fileExists(settingsPath)))