knodin 0.7.6 → 0.8.2
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/README.md +19 -7
- package/benchmarks/competitors/SYNTHESIS.md +66 -0
- package/dist/bin/cli.js +2164 -108
- package/dist/bin/launcher.js +25 -3
- package/dist/src/agent-integration.js +304 -0
- package/dist/src/artifact-refresh.js +82 -0
- package/dist/src/cli-args.js +292 -0
- package/dist/src/cli-model.js +384 -0
- package/dist/src/codeflow-replay.js +81 -0
- package/dist/src/compact-structural.js +96 -0
- package/dist/src/compare.js +39 -0
- package/dist/src/competitive-cold-mcp.js +40 -0
- package/dist/src/competitive-constraints.js +21 -0
- package/dist/src/competitive-manifest.js +411 -0
- package/dist/src/competitive-measurement.js +183 -0
- package/dist/src/competitive-runner.js +487 -0
- package/dist/src/competitive-sandbox.js +108 -0
- package/dist/src/context-export.js +423 -0
- package/dist/src/context.js +102 -0
- package/dist/src/deterministic-random.js +34 -0
- package/dist/src/diagnostics-write-helper.js +473 -0
- package/dist/src/diagnostics.js +1476 -0
- package/dist/src/docs-sections.js +141 -0
- package/dist/src/doctor.js +382 -0
- package/dist/src/engine/ann-hnsw.js +261 -0
- package/dist/src/engine/embeddings.js +193 -0
- package/dist/src/engine/file-walker.js +49 -0
- package/dist/src/engine/git-history.js +289 -0
- package/dist/src/engine/index.js +14238 -0
- package/dist/src/engine/perf.js +115 -0
- package/dist/src/engine/prune.js +112 -0
- package/dist/src/engine/sarif-import.js +341 -0
- package/dist/src/engine/scip-import.js +423 -0
- package/dist/src/engine/source-policy.js +85 -0
- package/dist/src/engine/sqlite.js +71 -0
- package/dist/src/engine/state-paths.js +175 -0
- package/dist/src/engine/symbol-delete.js +58 -0
- package/dist/src/execution-profile.js +208 -0
- package/dist/src/failure-diagnosis.js +655 -0
- package/dist/src/fleet.js +7 -0
- package/dist/src/git-executable.js +31 -0
- package/dist/src/graph-layout.js +173 -0
- package/dist/src/graph-query-health.js +115 -0
- package/dist/src/hook-manager-integration.js +156 -0
- package/dist/src/index-activity.js +126 -0
- package/dist/src/init-progress-worker.js +106 -2
- package/dist/src/init-progress.js +155 -0
- package/dist/src/init.js +1295 -0
- package/dist/src/lifecycle-health.js +282 -0
- package/dist/src/lsp-readonly.js +217 -0
- package/dist/src/mcp-graph-worker.js +69 -0
- package/dist/src/mcp-reliability.js +154 -0
- package/dist/src/mcp-worker-supervisor.js +350 -0
- package/dist/src/mirror.js +290 -0
- package/dist/src/node-runtime.js +157 -0
- package/dist/src/output-compression.js +630 -0
- package/dist/src/output-telemetry.js +368 -0
- package/dist/src/pr-triage.js +638 -0
- package/dist/src/progressive-evidence.js +477 -0
- package/dist/src/pure-compression-cli.js +102 -0
- package/dist/src/relationship-adapters.js +377 -0
- package/dist/src/release-attestation.js +533 -0
- package/dist/src/release-preflight.js +513 -0
- package/dist/src/repair-lease.js +85 -0
- package/dist/src/repair-progress-worker.js +120 -2
- package/dist/src/repair-progress.js +262 -0
- package/dist/src/repository-init-process.js +177 -0
- package/dist/src/repository-management.js +1261 -0
- package/dist/src/response-budget.js +196 -0
- package/dist/src/server.js +217 -0
- package/dist/src/structural-fast-path.js +344 -0
- package/dist/src/structural-snapshot.js +37 -0
- package/dist/src/system-config.js +638 -0
- package/dist/src/terminal-help.js +83 -0
- package/dist/src/tools/knodin-tools.js +1640 -0
- package/dist/src/update-ceremony.js +162 -0
- package/dist/src/update-policy.js +944 -0
- package/dist/src/update-trust.js +504 -0
- package/dist/src/version.js +13 -0
- package/dist/src/visualization.js +515 -0
- package/dist/src/wait-for-fresh.js +98 -0
- package/dist/src/worktree-lifecycle.js +234 -0
- package/docs/BEHAVIORAL-CONTRACT.md +72 -0
- package/docs/CLI.md +20 -1
- package/docs/COMPARISON.md +403 -0
- package/docs/COMPETITIVE-LANDSCAPE-2026-08.md +267 -0
- package/docs/CONTAINED-EXECUTION.md +77 -0
- package/docs/DIAGNOSTICS.md +80 -0
- package/docs/GIT-HISTORY-REVIEW.md +39 -0
- package/docs/HANDOFF.md +180 -0
- package/docs/INSTALLATION.md +21 -18
- package/docs/MCP.md +59 -8
- package/docs/PROGRESSIVE-EVIDENCE.md +37 -0
- package/docs/PT-ACCESS-RECOMMENDATION.md +89 -0
- package/docs/RELEASE-0.3-EVIDENCE.md +73 -0
- package/docs/REPOSITORIES-AND-WORKTREES.md +18 -6
- package/docs/SCIP-IMPORT.md +62 -0
- package/docs/SIGNED-UPDATES.md +151 -0
- package/docs/TELEMETRY.md +46 -0
- package/docs/TOKEN-OPTIMIZER-SCORECARD.md +79 -0
- package/docs/assets/knodin-favicon.svg +4 -0
- package/docs/releases/0.3.0.md +46 -0
- package/docs/releases/0.4.0.md +68 -0
- package/docs/releases/0.4.1.md +28 -0
- package/docs/releases/0.4.2.md +27 -0
- package/docs/releases/0.4.3.md +23 -0
- package/docs/releases/0.5.0.md +29 -0
- package/docs/releases/0.5.1.md +17 -0
- package/docs/releases/0.6.0.md +18 -0
- package/docs/releases/0.7.0.md +24 -0
- package/docs/releases/0.7.1.md +21 -0
- package/docs/releases/0.7.2.md +21 -0
- package/docs/releases/0.7.3.md +23 -0
- package/docs/releases/0.7.4.md +17 -0
- package/docs/releases/0.7.5.md +20 -0
- package/docs/releases/0.8.0.md +74 -0
- package/docs/releases/0.8.2.md +34 -0
- package/package.json +127 -4
- package/roadmap/competitive-roadmap.md +3801 -0
- package/schemas/release-attestation-v1.schema.json +210 -0
- package/schemas/support-bundle-v2.schema.json +212 -0
- package/dist/chunks/chunk-DMQAGX77.js +0 -654
- package/dist/chunks/chunk-F4Z3Z766.js +0 -4
- package/dist/chunks/chunk-SIJAQVSX.js +0 -3
- package/dist/chunks/chunk-X6M4HUUE.js +0 -2
- package/dist/chunks/chunk-YPRMY2LP.js +0 -8
- package/dist/chunks/pure-compression-cli-4TA2TQD5.js +0 -5
- package/dist/chunks/server-7EDF4CBY.js +0 -14
- package/dist/chunks/structural-fast-path-KD5KQSPX.js +0 -4
- package/docs/releases/0.7.6.md +0 -25
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# Reckon Graph — Competitive Landscape & Strategic Threat Assessment
|
|
2
|
+
**Date:** 2026-08-01 · **Rev 2** (post-verification) · **Subject:** `reckon-graph` v0.4.3 (Docusign / DTS-Productivity-Engineering)
|
|
3
|
+
**Status:** research assessment with corrections applied. Not a benchmark report. See §0 for what is verified and by whom.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 0. Provenance and evidence discipline
|
|
8
|
+
|
|
9
|
+
This document follows the attribution rule already established in `docs/COMPARISON.md`: a claim is either **verified in this repo**, **attributed to a vendor**, **independently measured**, or **unverified**. Rev 2 applies corrections from a verification pass run in a networked environment.
|
|
10
|
+
|
|
11
|
+
### Four classes of claim, marked throughout
|
|
12
|
+
|
|
13
|
+
| Mark | Meaning |
|
|
14
|
+
|---|---|
|
|
15
|
+
| **[repo]** | Read directly from the `reckon-graph` checkout. Highest confidence. |
|
|
16
|
+
| **[independent]** | Measured by a third party with published methodology (JetBrains, arXiv preprints). |
|
|
17
|
+
| **[vendor]** | The vendor's own claim. Not reproduced. |
|
|
18
|
+
| **[survey]** | Observed in this research pass. **Absence of a finding is not proof of absence in the market.** |
|
|
19
|
+
|
|
20
|
+
### Network limitation — scoped correctly
|
|
21
|
+
|
|
22
|
+
The GitHub REST API was **unreachable from this research environment**, returning HTTP 403 with an explicit sandbox-policy body (`"GitHub access to this repository is not enabled for this session"`) — a network policy on my side, **not a GitHub outage and not a universal condition**. Rev 1 stated the caveat as though it were a fact about the world. It was a fact about my environment. A subsequent verification pass from a networked environment did reach the API.
|
|
23
|
+
|
|
24
|
+
**Star snapshot — two sources, neither independently confirmed by me:**
|
|
25
|
+
|
|
26
|
+
| Repository | Rev 1 (page reads / aggregators) | Verification pass, 2026-08-01 (live API) |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| `colbymchenry/codegraph` | 21,913 / 59.7k (disputed) | **63,942** |
|
|
29
|
+
| `Graphify-Labs/graphify` | 30.6k / 76k (disputed) | **100,041** |
|
|
30
|
+
| `Cranot/roam-code` | ~460 | **502** |
|
|
31
|
+
| `GlitterKill/sdl-mcp` | ~301 | **457** |
|
|
32
|
+
| `aovestdipaperino/tokensave` | ~249 | **523** |
|
|
33
|
+
| `sverklo/sverklo` | ~76 | **76** |
|
|
34
|
+
| `sdsrss/code-graph-mcp` | 44 | **60** |
|
|
35
|
+
|
|
36
|
+
> ⚠️ **Two of these warrant a human sanity check before external use.** A 100,041-star count would place a niche code-graph MCP tool in roughly the top tier of all GitHub repositories, and 63,942 for a repo created in January 2026 is an extraordinary four-month trajectory. Both may well be correct — the AI-tooling hype cycle produces real outliers — but I could not confirm either, and Rev 1's assertion that the *lower* codegraph figure was "more credible" was an unsupported guess and is withdrawn. **Star counts move daily; timestamp any figure you reuse.**
|
|
37
|
+
|
|
38
|
+
The separate warning about **AI-generated comparison spam in this category remains valid and unretracted** — aggregator blogs published figures differing from each other by 10–1000× (one checked case: `sdsrss/code-graph-mcp` cited at 16,000, actual double digits). That warning was about source quality, not API reachability.
|
|
39
|
+
|
|
40
|
+
### Corrections applied in Rev 2
|
|
41
|
+
Codebase-Memory paper figures (transposition + a fabricated detail) · MCP operation count (13 → 19) · cross-substrate impact demoted from capability to opportunity · all market-wide superiority claims rescoped to the surveyed set · TACO characterization softened and "peer-reviewed" removed · Amazon Q retirement narrowed · Claude Code "absorbed nothing" narrowed · Graphify version/license refreshed · vendor-percentage generalization narrowed.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 1. What Reckon Graph is **[repo]**
|
|
46
|
+
|
|
47
|
+
**A local, MIT-licensed code-intelligence MCP server that fuses four normally-separate jobs over one fresh SQLite graph, behind a single operation-routed MCP tool.**
|
|
48
|
+
|
|
49
|
+
| Layer | Detail |
|
|
50
|
+
|---|---|
|
|
51
|
+
| **Deployment** | One local Node.js 24+ process. No account, hosted index, credential flow, source egress, or mandatory database/vector daemon. `.reckon/db.sqlite` per checkout; shared MiniLM ONNX model in the user cache. |
|
|
52
|
+
| **MCP surface** | **Exactly one tool** (`reckon`) with **19 operation values** — verified in `src/context.ts:17-36` and `src/tools/reckon-tools.ts:216`: `explain`, `review`, `map`, `search`, `query`, `prs`, `context`, `wiki`, `docs`, `doctor`, `pack`, `compress`, `status`, `wait`, `worktrees`, `repair`, `repositories`, `system`, `telemetry`. *(Rev 1 listed 13, taken from the README rather than source.)* |
|
|
53
|
+
| **Core jobs** | `explain` (edit-ready verbatim source + call paths + blast radius) · `review` (risk-scored diff context, four explicit scopes) · `map` (Louvain communities + hubs + betweenness bridges) · `context`/`search`/`pack`/`compress` (bounded retrieval and export). |
|
|
54
|
+
| **Distinctive contracts** | Serialized **`responseBudget`** on every operation — byte/token/item limits, serialized size, truncation state, totals, continuation instruction; deterministic 4-bytes-per-token estimate, tested in `src/__tests__/unit/response-budget.spec.ts:35`. Explicit availability states (`no-match`, `not-initialized`, `empty-index`, `repair-needed`, `indexing`, `lifecycle-degraded`) that fail closed. Per-query freshness probe measured at **~30–50ms**, honestly qualified in `docs/COMPARISON.md:17`. |
|
|
55
|
+
| **`compress` / `compress diagnose`** | Bounded, recoverable compression of build/test output under hard line + content-byte budgets, preserving exit metadata and detected signals with exact omission reporting — then mapping a retained failure back through the graph to owning symbols, tests, callers, and bounded source. |
|
|
56
|
+
| **Parsers** | TS/JS, Python, Java, C#, **Apex**, SQL/PLSQL, Prisma, XML; structural indexers for **Salesforce metadata, Terraform/HCL, Dockerfile, dbt manifests, Workday Studio XML, LSIF**. Gaps: Go, Rust, PHP, Ruby, Kotlin, Swift, Bash, PowerShell — per `docs/LANGUAGE-SUPPORT.md`. |
|
|
57
|
+
| **Scale-out** | `reckon repos discover/init/status/doctor`, `reckon system`, `reckon.yaml`. Live 61-repository bounded certification recorded in `roadmap/competitive-roadmap.md:100`. |
|
|
58
|
+
| **Release posture** | npm + Homebrew tap + digest-pinned GHES assets. Signed-update machinery implemented; ceremony/drills open as C62–C67. |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 2. The four-way squeeze
|
|
63
|
+
|
|
64
|
+
| Category | Reckon surface | 2026 pressure |
|
|
65
|
+
|---|---|---|
|
|
66
|
+
| Symbol navigation | `explain`, `query`, `search` | 🔴 **Commoditized.** Many free local OSS servers. Serena still strongest via LSP. |
|
|
67
|
+
| Change impact & review | `review`, `impact`, `tests_for`, `prs` | 🔴 **Squeezed both ends.** Free OSS ships risk-scored diff review; Greptile and CodeRabbit give away SaaS review at the free tier. |
|
|
68
|
+
| Architecture mapping | `map`, `community`, `flows`, `wiki`, `visualize` | 🟠 **Being absorbed into products teams already buy.** SonarQube shipped Architecture (beta) inside its **$34/mo Team plan** [vendor]. DeepWiki is free for public repos. |
|
|
69
|
+
| Retrieval & context | `context`, `pack`, `compress` | 🟢 **Bifurcated.** Packers are symbol-blind; graph servers never see a build log. **No tool in the surveyed set crosses that line.** |
|
|
70
|
+
| **Platform substrates** *(not in the README taxonomy)* | Apex, SF metadata, Terraform, Workday XML | 🟢 **Least contested surface found**, and the one the docs undersell — `LANGUAGE-SUPPORT.md` frames it as a *limitations* matrix. |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 3. Known competitors — what moved
|
|
75
|
+
|
|
76
|
+
| Tool | Status change (2026) | Implication |
|
|
77
|
+
|---|---|---|
|
|
78
|
+
| **codegraph** (colbymchenry) | 🔴 **Converged on the one-tool thesis.** Lists `codegraph_explore` as its single default MCP tool with seven others functional-but-unlisted behind `CODEGRAPH_MCP_TOOLS`. Hosted-platform waitlist opened. Stars: see §0 snapshot. | **"Single operation-routed MCP tool" is no longer differentiating.** It is a shared design pattern. |
|
|
79
|
+
| **codebase-memory-mcp** | 🔴 Now ships **Louvain community detection** and `detect_changes` (git diff → affected symbols with risk classification). **Published preprint** — arXiv:2603.27277, verbatim from the abstract: *"parsing **66 languages**… Evaluated across **31 real-world repositories**, Codebase-Memory achieves **83% answer quality versus 92%** for a file-exploration agent, at **ten times fewer tokens** and **2.1 times fewer tool calls**."* [independent, preprint — not peer-reviewed] | Two Reckon headline features replicated in a tracked competitor — **with a published methodology Reckon has not matched.** *(Rev 1 said "31 languages, 12 question categories." Both wrong: figures transposed, and "12 question categories" does not appear in the paper.)* |
|
|
80
|
+
| **Graphify** | YC S26. **v0.9.31 (published 2026-07-30), Apache-2.0** per repository API. Leiden communities; `EXTRACTED`/`INFERRED`/`AMBIGUOUS` confidence tags; multi-modal ingest. Star figure disputed — see §0. | Its confidence-tier model is the closest analogue found to Reckon's evidence labeling. |
|
|
81
|
+
| **GitNexus** | PolyForm Noncommercial; migrated to LadybugDB; 17 MCP tools; enterprise SaaS tier. | License remains the cleanest wedge here. Unchanged. |
|
|
82
|
+
| **grepai** | Last release v0.35.0 (Mar 2026) — ~5 months quiet. | Deprioritize. |
|
|
83
|
+
| **Serena** | Reference LSP-over-MCP implementation; no token budgets. | Unchanged: better freshness and compiler accuracy, no graph analytics. |
|
|
84
|
+
| **Repomix** | v1.17.0 (Jul 2026). Tree-sitter "Code Compression" (**[vendor]** ~70% reduction), `--include-diffs`/`--include-logs`, `--token-count-tree`, `--split-output`, Agent Skills generation, two CVE fixes. ~26k★ / ~255k npm downloads/mo. | **`pack` alone is a commodity.** Repomix converged on nearly Reckon's `pack` feature set at far greater distribution. |
|
|
85
|
+
| **Aider repo-map** | Algorithm essentially unchanged since 2023. | Still the reference design; still not an MCP surface. |
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 4. New entrants not tracked in-repo
|
|
90
|
+
|
|
91
|
+
### Tier 1 — direct architectural twins
|
|
92
|
+
|
|
93
|
+
| Tool | Threat | Why |
|
|
94
|
+
|---|---|---|
|
|
95
|
+
| **Sverklo** (76★, MIT, TS) | 🔴 Critical | **Closest competitor found.** Independently arrived at Reckon's *exact* stack — SQLite + `sqlite-vec` + local `all-MiniLM-L6-v2` ONNX — and its analytics set: `review_diff` risk-scores by symbol importance × coverage × churn; `audit` finds god nodes and hub files; `ctx_peek`/`ctx_slice` slice context. Adds bi-temporal memory Reckon lacks. **Its only clear weakness vs Reckon is 37 flat MCP tools.** [vendor] 180-task benchmark, F1 0.58 vs grep 0.34. |
|
|
96
|
+
| **sdl-mcp** (457★, source-available) | 🔴 Critical | Ships an explicit **gateway mode (6 tools)** alongside 38 flat ones — attacks the one-tool differentiator directly. Its **"Iris Gate Ladder"** (four-rung context escalation with proof-of-need gating before raw source is released) is a more legible, productized articulation of Reckon's response-budget idea. |
|
|
97
|
+
| **roam-code** (502★, Apache + open-core) | 🟠 High | `preflight` = blast radius + tests; `critique` consumes `git diff`; PageRank reranking (explicitly rejects embeddings); signed exportable index bundles. **145 MCP tools** — the best foil for the one-tool argument. Uniquely detects algorithmic anti-patterns (O(n²), N+1). |
|
|
98
|
+
| **sdsrss/code-graph-mcp** (60★, Rust) | 🟠 High | SQLite + `sqlite-vec`, BM25+vector RRF, optional local Candle embeddings, **BLAKE3 Merkle incremental reindex**, dead code, impact analysis with risk classification, explicit "context compression for LLM token budgets." **A double-digit-star project matches the capability list.** |
|
|
99
|
+
| **Code-Graph-RAG** (~2.3k★, MIT, Python) | 🟠 High | Restored and active at v0.0.535 after its GitHub-account outage. Its opt-in `READS_FROM`, `WRITES_TO`, and `FLOWS_TO` graph models environment variables, files, databases, sockets, network endpoints, and standard streams across nine language registries. This is a real gap versus Knodin's bounded TS/JS statement flow, but its Memgraph + Docker + optional Qdrant/model stack conflicts with Knodin's compact local architecture. The analysis is conservatively intra-procedural plus one argument/return handoff, not path-sensitive, and source-order limited across files. C78's local disposable prototype retained 100% precision but reached only 62.5% recall on its labeled TS/JS oracle, so Knodin retained C8 unchanged rather than persisting a partial static reachability graph. |
|
|
100
|
+
|
|
101
|
+
### Tier 2 — adjacent, high momentum
|
|
102
|
+
|
|
103
|
+
**CocoIndex** (~10.2k★) — incremental pipeline framework now shipping a code MCP with AST-aware incremental index, call graph, blast radius; per-row provenance, hash-of-code invalidation. **The most credible competitor found to Reckon's freshness/reconciliation story.** · **Semble** (~5.7k★, MIT) — 2 MCP tools, **static Model2Vec embeddings, no transformer**; [vendor] 250ms full index, 1.5ms query, NDCG@10 0.854. · **tokensave** (523★, Rust) — composite code-health score (acyclicity, Gini, modularity, DSM); **per-branch graph DBs with cross-branch diff**, no equivalent in Reckon. · **Axon** (~709★, stalled Mar 2026) — Leiden communities, symbol-level branch diffing, **change-coupling from 6 months of git history**; on archived KuzuDB. · **RTK** — PreToolUse-hook binary compressing Bash output across 15 agents; **closest competitor to `compress`**, and independently benchmarked — see §5. · **build-output-tools-mcp** — the only other tool found with **artifact-ID drill-back** from compressed build output, but LLM-summarized (non-deterministic), no hard budget, no omission accounting, and drill-back returns raw log text rather than owning symbols.
|
|
104
|
+
|
|
105
|
+
**CodeFlow** (~3.7k★, MIT) — client-side interactive architecture map with
|
|
106
|
+
dependency/blast-radius views and raw JSON export. Its README explicitly calls
|
|
107
|
+
dependency resolution heuristic and warns that dynamic imports and runtime
|
|
108
|
+
renames may be missed. A LinkedIn summary further claims that individual edges
|
|
109
|
+
identify whether they came from Tree-sitter, a language parser, or regex, but
|
|
110
|
+
that finer per-edge extractor identity was not found in the current repository
|
|
111
|
+
or README and remains unverified. Knodin already returns edge provenance,
|
|
112
|
+
confidence, exact-versus-heuristic labels, source evidence, and source lines;
|
|
113
|
+
C77 adds a like-for-like replay to test communication and export fidelity rather
|
|
114
|
+
than assuming a product gap.
|
|
115
|
+
|
|
116
|
+
### Tier 3 — ecosystem facts
|
|
117
|
+
🔴 **Kuzu is dead** — archived without notice Oct 2025; an EC filing revealed an Apple acqui-hire. Successors: LadybugDB, FalkorDB Lite, Lance Graph. **Reckon's plain-SQLite choice is now a concrete talking point.** · 🟠 **SCIP moved to independent open governance (Mar 2026)** with a Meta/Uber/Sourcegraph steering committee. It is the durable interchange format and the precision upgrade path competitors are taking. **Reckon supports LSIF, which SCIP supersedes — a closable gap.**
|
|
118
|
+
|
|
119
|
+
### Dead / stalled
|
|
120
|
+
er77/code-graph-rag-mcp (archived) · mcp-language-server (last release May 2025) · VectorCode · code2prompt · files-to-prompt · **CodeSee** (→GitKraken 2024, sunset) · **Structure101** (→Sonar Oct 2024, explicitly no longer sold).
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 5. The commercial tier restructured
|
|
125
|
+
|
|
126
|
+
| Player | 2026 state | Egress | Floor |
|
|
127
|
+
|---|---|---|---|
|
|
128
|
+
| **Sourcegraph** | Split from **Amp** into separate companies (Dec 2025). **Cody Free/Pro deleted.** MCP server GA (Feb 2026) with SCIP-precise navigation; **Code Finder** [vendor] 2.19× faster, up to 40% fewer tokens than agents searching locally. | Self-hosted = none | **$16K/yr** |
|
|
129
|
+
| **Augment** | Pivoted to **Cosmos** orchestration; killed completions Mar 2026; individual plans eliminated. Context Engine survives ([vendor] 33% fewer tokens). | SaaS, indexed on their infra | $100/mo flat |
|
|
130
|
+
| **Greptile** | $25–30M raised, Benchmark-led. Explicit graph-based context → impact analysis. MCP server. Reads `CLAUDE.md`. | Self-host incl. air-gapped (Ent.) | Free tier / $30 seat |
|
|
131
|
+
| **Qodo** | **DeepCodeBench** [vendor] (1,144 PR-derived questions): Qodo 80% fact recall vs Claude Code 64%, Gemini CLI 45%. | **On-prem supported** | ~$0.012/credit |
|
|
132
|
+
| **CodeRabbit** | [vendor] $40M ARR, ~700% YoY, 8,000+ paying customers. Weakest graph story — no published architecture. | SaaS; self-host Ent. only | Free / $24 user |
|
|
133
|
+
| **Cursor** | Trained its **own embedding model** on agent session traces: [vendor] +12.5% accuracy, +2.6% code retention on 1,000+ file repos. **Explicitly says it does not replace grep.** | SaaS, server-side chunking | $20/mo |
|
|
134
|
+
| **Windsurf** | Cognition acquired the remnant; **became Devin Desktop (Jun 2026)**. Cascade retired; Devin Local rewritten in Rust. | SaaS + VPC Ent. | Free / $20 |
|
|
135
|
+
| **Amazon Q Developer** | **IDE plugins and paid subscriptions** are being retired — new signups blocked May 2026, support ends Apr 30 2027, replaced by **Kiro**. **AWS explicitly states Q Developer in the AWS console and other first-party experiences is unaffected.** *(Rev 1 said "being retired" flatly — overbroad.)* | — | — |
|
|
136
|
+
| **DeepWiki** | Free, no auth, every public GitHub repo. MCP server. | Hosted only | **$0** |
|
|
137
|
+
|
|
138
|
+
> **The wedge, precisely.** In the surveyed set, nobody paid competes below $30/seat except the agent vendors themselves. **Reckon's "free + local + no-egress" wedge holds against the commercial tier** — and is gone against OSS, where it is the baseline every entrant leads with.
|
|
139
|
+
|
|
140
|
+
### Adjacent tiers
|
|
141
|
+
Every DSM/architecture vendor MCP-enabled within ~6 months: Lattix 2026.0, NDepend (Feb 2026, open-sourced), CAST Imaging ($10.5K–$810.8K/yr), vFunction 4.5, and **Moderne** (local stdio MCP, Apr 2026 — auto-configures Claude Code/Cursor/Windsurf; [vendor] a Java 8→25 migration going 61M→30k tokens). **"Local graph + MCP server" became a checkbox in H1 2026.**
|
|
142
|
+
|
|
143
|
+
**SonarQube is the most dangerous long-tail threat:** Architecture (beta) + MCP GA + AI Code Assurance inside a **$34/month** product a large share of enterprise teams — including Docusign, per this repo's own `sonar-project.properties` — already license.
|
|
144
|
+
|
|
145
|
+
### Platform substrates — leg by leg
|
|
146
|
+
|
|
147
|
+
| Substrate | Served? | Assessment |
|
|
148
|
+
|---|---|---|
|
|
149
|
+
| **Apex source graph** | 🟢 Open | Salesforce Code Analyzer v5 + Graph Engine is *violation-shaped*, not navigable — **no caller/reference API found in the surveyed set**. SFGE remains Developer Preview and its per-entry-point timeout was cut 15 min → 30 s, with Salesforce conceding "some complex code violations may be missed." |
|
|
150
|
+
| **SF metadata graph** | 🟡 Contested | Elements.cloud, Salto, Panaya, Copado Agentia, Gearset Org Intelligence all claim it. **Every vendor examined in this pass requires live-org credentials**; none was found operating from a local checkout with no org connection. Window: ~12–18 months. |
|
|
151
|
+
| **Terraform / HCL** | 🟢 Largely open | **No local-checkout Terraform dependency analyzer for agents found in the surveyed set.** HashiCorp's official Terraform MCP server is registry/HCP-oriented per its own reference docs. `terraform graph` emits DOT with no agent surface. |
|
|
152
|
+
| **dbt** | 🔴 Solved | **Do not lead with dbt.** Official `dbt-mcp` ships local *and* remote **column-level lineage**. Reading `manifest.json` gets node-level lineage dbt already exposes better. |
|
|
153
|
+
| **Workday Studio XML** | 🟡 Open | **No Studio-XML static analyzer found in this pass.** Workday's June 2026 agent launch is about *building* agents, not *understanding* existing assemblies. Tiny, shrinking market. |
|
|
154
|
+
|
|
155
|
+
> **Cross-substrate impact is an opportunity, not a shipped capability. [corrected]**
|
|
156
|
+
> Reckon demonstrably indexes Terraform, dbt manifests, Salesforce metadata/Apex, and Workday inputs **independently**. Rev 1 listed *"Terraform → dbt → Salesforce field → Apex trigger"* cross-substrate resolution in the implemented-differentiator matrix. **A verification pass found no implementation, test, or documentation establishing that chain.** Correct framing: *Reckon has the ingredients for cross-substrate analysis; a demonstrated end-to-end cross-substrate path remains an opportunity* — and would need a checked-in replay before it appears in any external claim. This matters because `CLAUDE.md` explicitly forbids describing the engine as planned or almost-done.
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## 6. The research that should change the pitch
|
|
161
|
+
|
|
162
|
+
**Three primary studies, supported by two additional preprints.** *(Rev 1 said "three studies" and then listed five.)*
|
|
163
|
+
|
|
164
|
+
**① "Token Reduction Is Not Cost Reduction" — arXiv:2607.12161 (Jul 2026) [independent].** 2,908 Claude Code runs, 103 tasks, 7 repos, 3 models. Evaluated RTK, RTK-ML, Headroom, plus lexical/embedding/structural retrieval.
|
|
165
|
+
- Removing **38.4% of tool-output tokens produced a +6.8% cost *increase*** (95% CI [+2.8, +11.3]).
|
|
166
|
+
- Token reduction correlated with cost change at **r = 0.15** — essentially zero.
|
|
167
|
+
- **Prompt cache ≈ 87% of reconstructed cost.** Compressing uncached output attacks a small slice *while invalidating the cache.*
|
|
168
|
+
- **Compression destroyed verbatim edit anchors: patch application fell 27/40 → 15/40.**
|
|
169
|
+
|
|
170
|
+
**② JetBrains independent RTK trial (Jul 2026) [independent].** Pre-registered, paired A/B, 86 tasks, 425 billed trials. Low effort: **+7.6% cost** (p=0.004). High effort: ~0%. Output quality statistically equivalent. **RTK's own analytics reported "96.2M tokens saved" while the bill went up.**
|
|
171
|
+
|
|
172
|
+
**③ ContextBench — arXiv:2602.05892 (Feb 2026) [independent].** 1,136 tasks, 66 repos, 8 languages, human-annotated gold contexts. Headline: *"sophisticated agent scaffolding yields only marginal gains in context retrieval."* **Adverse to the entire category, Reckon included.**
|
|
173
|
+
|
|
174
|
+
*Supporting:* **TACO** (arXiv:2604.19572) — *"A Self-Evolving Framework for Efficient Terminal Agents via Observational Context Compression."* Learns compression rules from execution trajectories and preserves error/failure-signal outputs unchanged — the same invariant as Reckon's "preserve detected diagnostics." **Reports task-dependent token reductions with maintained or improved success rates; the abstract was not machine-readable at verification time, so no specific percentage is quoted here, and it is a preprint, not peer-reviewed.** *(Rev 1 characterized it as "peer-reviewed" with a clean "~10% per step" figure — both overstated.)* · **"Notation Matters"** (arXiv:2605.29676) — TOON/TRON encodings buy 18–27% at 9–14pp accuracy cost; Markdown/JSON/XML is the right call.
|
|
175
|
+
|
|
176
|
+
> **What to do with this.** The 27/40→15/40 patch-application collapse is a **correctness** failure caused by lossy, unrecoverable compression — the exact failure mode that bounded, recoverable, exact-omission-accounted compression is designed to prevent. That is a falsifiable, benchmark-backed pitch. A percentage is not. **Many surveyed vendor token-reduction claims are self-measured against undisclosed baselines** — that is a characterization of the sampled set, not a universal law *(Rev 1 said "every," which the report's own independent citations contradict)*.
|
|
177
|
+
>
|
|
178
|
+
> Two facts make `responseBudget` load-bearing: **Claude Code's ~25K-token tool-result ceiling** is documented in `anthropics/claude-code#45770` — *an issue report, not a formal product contract* — and the **MCP spec has no standardized response size limit** (open discussion `modelcontextprotocol#2211`). Every native truncation mechanism surveyed is destructive with no recovery handle.
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 7. Differentiator erosion matrix
|
|
183
|
+
|
|
184
|
+
Rescoped: **✓ holds** now means *"no equivalent found in the surveyed set"*, not market-wide uniqueness.
|
|
185
|
+
|
|
186
|
+
| Claimed differentiator | Status | Detail |
|
|
187
|
+
|---|---|---|
|
|
188
|
+
| Single operation-routed MCP tool | ✗ **Gone** | codegraph (1 default tool), sdl-mcp (gateway mode), pathfinder (7), Semble (2), probe (4). **Retire as the headline.** |
|
|
189
|
+
| Local, no-auth, no-egress | ✗ **Baseline** | Nearly every OSS entrant leads with it. Still a hard moat vs. every commercial player except self-hosted Sourcegraph, self-hosted Greptile, on-prem Qodo. |
|
|
190
|
+
| Diff-aware review with risk scoring | ✗ **Gone** | Sverklo `review_diff`, codebase-memory-mcp `detect_changes`, roam `preflight`/`critique`, jCodeMunch, sdsrss, Greptile. |
|
|
191
|
+
| Louvain communities / subsystem mapping | ✗ **Gone** | codebase-memory-mcp, Axon & Graphify (Leiden), SonarQube Architecture, DeepWiki. |
|
|
192
|
+
| Local ONNX embeddings · SQLite graph store | ✗ **Gone** | Sverklo uses the *identical* model on the identical stack. Semble's Model2Vec is faster still. |
|
|
193
|
+
| Context packing (`pack`) | ✗ **Gone** | Repomix, at far greater distribution, with Tree-sitter compression, diff scopes, split output, token trees. |
|
|
194
|
+
| Hub / bridge betweenness centrality | ~ **Partial** | roam (PageRank), Sverklo `audit`, tokensave (Gini/DSM), Axon. **True betweenness specifically remains uncommon in the surveyed set.** |
|
|
195
|
+
| Truthful serialized response budgets | ~ **Partial — best remaining graph claim** | sdl-mcp's Iris Gate Ladder is the only close analogue found, and it is more legible. Others offer `limit`/`offset` — pagination, not a budget. **No surveyed MCP server emits truncation state + continuation instruction.** |
|
|
196
|
+
| Explicit availability / freshness states | ✓ **No equivalent found** | `repair-needed`, `lifecycle-degraded`. Surveyed graph servers index and go quiet; CocoIndex has provenance but no fail-closed availability contract. |
|
|
197
|
+
| Recoverable bounded command-output compression | ✓ **No equivalent found** | RTK: bounded, partial recovery, no symbol drill-back. build-output-tools-mcp: recoverable but LLM-summarized. Headroom: returns the original chunk, not symbols. |
|
|
198
|
+
| `compress diagnose` — failure → owning symbols / tests / callers / source | ✓ **No equivalent found in the surveyed set** | The surveyed landscape is bifurcated: log compressors are symbol-blind; code-graph servers never see a build log. *(Rev 1 said "UNIQUE" — withdrawn as unprovable.)* |
|
|
199
|
+
| Apex + SF metadata from a local checkout, no org credentials | ✓ **No equivalent found** | Every Salesforce metadata vendor examined requires a live org connection. |
|
|
200
|
+
| ~~Cross-substrate impact~~ | ⚠️ **REMOVED — opportunity, not capability** | **No implementation, test, or documentation found establishing the Terraform → dbt → SF field → Apex chain.** Must not appear as a current capability until a checked-in replay demonstrates it. |
|
|
201
|
+
|
|
202
|
+
> **Honest summary.** Every *individual* graph feature is replicated in free OSS. What remains uncommon in the surveyed set is **(a)** the combination in one process — no single competitor found has all six of gateway + budgets + diff-review + communities + centrality + local embeddings; **(b)** the contracts — budget truthfulness, fail-closed availability, exact omission accounting, all verifiable in-repo; and **(c)** substrate coverage. **(a) is a race. (b) and (c) are the defensible ground** — and (b) is the only one backed by checked-in tests today.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## 8. Ranked threat assessment
|
|
207
|
+
|
|
208
|
+
| # | Threat | Severity | Horizon | Why |
|
|
209
|
+
|---|---|---|---|---|
|
|
210
|
+
| 1 | **Generic code-graph floor collapsed to $0** | 🔴 Critical | Now | codegraph, Sverklo, sdsrss, CodeGraphContext, roam all ship free, local, MCP-native graphs with impact analysis. |
|
|
211
|
+
| 2 | **Competitors published methodology; Reckon hasn't** | 🔴 Critical | Now | codebase-memory-mcp has a preprint with a reproducible protocol; Qodo has DeepCodeBench. Methodology is the scarcest asset in this market — and Reckon's replay harness already exists to produce it. Self-inflicted. |
|
|
212
|
+
| 3 | **SonarQube absorbs architecture mapping into $34/mo** | 🟠 High | 6–12 mo | In a product Docusign already runs. The internal adoption argument gets harder. |
|
|
213
|
+
| 4 | **Sverklo-class convergence** | 🟠 High | 3–9 mo | An independent project reached the same stack and analytics set. Feature-level differentiation has a short half-life. |
|
|
214
|
+
| 5 | **LSIF-only while SCIP takes over** | 🟠 High | 6–12 mo | Concrete and closable. |
|
|
215
|
+
| 6 | **Salesforce metadata window closing** | 🟡 Medium | 12–18 mo | Salesforce ships DX MCP toolsets monthly; Copado shipped a Context Hub Apr 2026. |
|
|
216
|
+
| 7 | **Free SaaS review from Greptile / CodeRabbit** | 🟡 Medium | Now | `review` is the most contested capability Reckon has. |
|
|
217
|
+
| 8 | **ContextBench's "bitter lesson"** | 🟡 Medium | Structural | Category ceiling may be lower than assumed. Argues for narrow, provable claims. |
|
|
218
|
+
| 9 | **Agent-native absorption** | 🟢 Low-Med | 12–24 mo | Asymmetric — see below. |
|
|
219
|
+
| 10 | **Indexing-cost undercut (Model2Vec)** | 🟢 Low | 12 mo | Onboarding-friction perception, not correctness. |
|
|
220
|
+
|
|
221
|
+
### On absorption — narrowed
|
|
222
|
+
|
|
223
|
+
**Semantic retrieval over a single repo is being absorbed. Precise, persistent, cross-repo symbol graphs are not.**
|
|
224
|
+
|
|
225
|
+
*For:* Cursor built and shipped its own embedding model default-on. GitHub bundles Copilot Spaces + repo overview + code review inside the seat price. Gemini Code Assist Enterprise indexes private repos. DeepWiki is free for public repos.
|
|
226
|
+
|
|
227
|
+
*Against:* **Neither Claude Code nor Codex documents a persistent repository index** — Claude Code's changelog through Jul 2026 shows no codebase-indexing entries, and reporting indicates Anthropic removed an early local vector DB in favor of agentic search. *(Rev 1 said they had "absorbed nothing" — "no persistent repository index documented" is the defensible version; absence of documentation is not proof of absence.)* Sourcegraph's CodeScaleBench [vendor]: Sonnet 4.6 + Sourcegraph MCP at 0.698 / $1.02 per quality point vs a frontier model with no retrieval at 0.568 / $1.83. Every vendor standardized on **MCP as the seam**.
|
|
228
|
+
|
|
229
|
+
> **Conclusion: target Claude Code and Codex users, not Cursor users.** `reckon init` already configures Claude Code, Codex, Gemini CLI, and Antigravity — that targeting is correct and should be explicit in the positioning.
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## 9. Recommendations
|
|
234
|
+
|
|
235
|
+
### Reposition
|
|
236
|
+
1. **Retire "single operation-routed MCP tool" as the headline.** Keep it as a design fact; keep roam-code's 145 tools as the foil.
|
|
237
|
+
2. **Lead with the compression↔graph join.** `compress diagnose` has no equivalent in the surveyed set and is currently buried in README paragraph 2.
|
|
238
|
+
3. **Reframe "no token-percentage claims" from caveat to pitch.** Cite arXiv:2607.12161 and the JetBrains RTK trial. Lead on determinism, exact omission accounting, preserved edit anchors, recoverability.
|
|
239
|
+
4. **Promote the substrate story out of the appendix** — but describe it as *coverage*, not as a demonstrated cross-substrate chain. Drop dbt from the lead.
|
|
240
|
+
5. **Name the target agent explicitly:** Claude Code and Codex.
|
|
241
|
+
|
|
242
|
+
### Build
|
|
243
|
+
6. **Publish the benchmark.** Highest ROI available. `bench:competitive`, the replay harness, and `benchmarks/evaluations/` already exist; codebase-memory-mcp's protocol (31 repos, 66 languages, quality-vs-tokens curve) is an adaptable template.
|
|
244
|
+
7. **Add SCIP import alongside LSIF.** Mechanically small, strategically disproportionate.
|
|
245
|
+
8. **Run a live bake-off against Sverklo** — same bar already applied to Serena and claude-context.
|
|
246
|
+
9. **Build the cross-substrate replay** — if the Terraform → dbt → SF → Apex chain is the strategic bet, it needs a checked-in oracle before it can be claimed at all. Currently it is the largest gap between the story and the evidence.
|
|
247
|
+
10. **Add git-history signals to `review`** (change-coupling, churn-weighted risk).
|
|
248
|
+
11. **Evaluate Model2Vec vs MiniLM ONNX**, given R44 already found batching made indexing worse.
|
|
249
|
+
|
|
250
|
+
### Watch
|
|
251
|
+
**Moderne** (closest strategic overlap in the commercial tier) · **SonarQube Architecture** (commoditization vector for `map`) · **sdl-mcp's Iris Gate Ladder** (better articulation of the budget idea) · **`modelcontextprotocol#2211`** (if the spec standardizes budgets, Reckon should be cited as prior art rather than made redundant).
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Appendix — verification register
|
|
256
|
+
|
|
257
|
+
| Claim class | Confidence | Note |
|
|
258
|
+
|---|---|---|
|
|
259
|
+
| Reckon capability set, 19 operations, `responseBudget` contract, ~30–50ms probe, 61-repo certification | **High [repo]** | Read from source; operation enum confirmed at `src/context.ts:17-36` |
|
|
260
|
+
| Cross-substrate impact chain | **NOT SUPPORTED** | No implementation, test, or doc found. Removed from the matrix. |
|
|
261
|
+
| arXiv figures (2607.12161, 2602.05892, 2603.27277) | **High [independent]** | Transcribed from abstracts; preprints, not peer-reviewed |
|
|
262
|
+
| TACO (2604.19572) | **Low** | Abstract not machine-readable at verification time; no figure quoted |
|
|
263
|
+
| Star counts | **Unconfirmed by me** | Two sources in §0; GitHub API blocked from this environment. Two figures flagged as extraordinary. **Timestamp anything you reuse.** |
|
|
264
|
+
| Vendor claims and percentages | **Attributed only** | Many self-measured against undisclosed baselines |
|
|
265
|
+
| Commercial pricing | **Med-High** | Public pricing pages; enterprise floors directional |
|
|
266
|
+
| Acquisitions / EOL | **High** | Press releases and vendor statements; Amazon Q narrowed to IDE plugins + paid subscriptions |
|
|
267
|
+
| "No equivalent found" statements | **Survey-scoped** | Bounded by what this pass examined. **Not market-wide nonexistence.** |
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Profile-based contained execution
|
|
2
|
+
|
|
3
|
+
`knodin` can execute one immutable repository-defined profile through the
|
|
4
|
+
single MCP gateway. It never accepts a command string, executable, argv, cwd,
|
|
5
|
+
environment, or limit from an MCP caller.
|
|
6
|
+
|
|
7
|
+
Execution is disabled by two independent defaults. Enable it globally in
|
|
8
|
+
`$XDG_CONFIG_HOME/knodin/execution.json` (or
|
|
9
|
+
`~/.config/knodin/execution.json`):
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{"execution":{"enabled":true}}
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Then define and enable exact profiles in `.knodin/execution.json`:
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"execution": {
|
|
20
|
+
"enabled": true,
|
|
21
|
+
"profiles": {
|
|
22
|
+
"test": {
|
|
23
|
+
"executable": "/opt/homebrew/bin/bun",
|
|
24
|
+
"args": ["run", "test"],
|
|
25
|
+
"network": "deny",
|
|
26
|
+
"timeoutMs": 120000,
|
|
27
|
+
"maxOutputBytes": 2097152,
|
|
28
|
+
"maxProcesses": 1,
|
|
29
|
+
"containment": "fully-contained"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
An agent may call `{ "operation": "execute", "profile": "test" }`. Profile
|
|
37
|
+
names are bounded identifiers. Shell strings and caller-supplied argument
|
|
38
|
+
suffixes are not part of the schema.
|
|
39
|
+
|
|
40
|
+
## Containment contract
|
|
41
|
+
|
|
42
|
+
The initial certified adapter is macOS `sandbox-exec`. It runs with a minimal
|
|
43
|
+
environment (`PATH`, `LANG`, `LC_ALL`, and repository-local `TMPDIR`), closed
|
|
44
|
+
stdin, no shell, repository cwd, a detached process group, hard timeout and
|
|
45
|
+
combined-output caps, and Seatbelt rules that:
|
|
46
|
+
|
|
47
|
+
- deny all network operations;
|
|
48
|
+
- deny process forks, making `maxProcesses: 1` a hard contract;
|
|
49
|
+
- deny all writes outside the repository;
|
|
50
|
+
- deny reads under user homes, mounted volumes, network mounts, and shared
|
|
51
|
+
temporary roots outside the repository; and
|
|
52
|
+
- allow repository reads/writes and read-only system runtime paths required to
|
|
53
|
+
load the approved executable.
|
|
54
|
+
|
|
55
|
+
Profiles needing child processes are rejected by this first contract. Define
|
|
56
|
+
the profile around a single-process test/lint/typecheck/build executable. The
|
|
57
|
+
macOS adapter reports `fully-contained` only when every configured boundary is
|
|
58
|
+
active. It also reports that `sandbox-exec` is deprecated; this certification
|
|
59
|
+
is tied to the checked-in adversarial tests, not a claim that Seatbelt is a
|
|
60
|
+
supported public Apple API.
|
|
61
|
+
|
|
62
|
+
Linux and Windows currently report `containment-unavailable` and do not spawn
|
|
63
|
+
the profile. A future Bubblewrap or Windows Job Object/restricted-token adapter
|
|
64
|
+
requires its own native evidence before it can change that result.
|
|
65
|
+
|
|
66
|
+
## Output, diagnosis, and audit
|
|
67
|
+
|
|
68
|
+
Captured stdout/stderr goes directly through recoverable compression. Failed,
|
|
69
|
+
timed-out, and output-limited MCP executions then request source-evidenced
|
|
70
|
+
failure diagnosis from the existing graph. Raw command text, argv, environment,
|
|
71
|
+
and output are never written to execution telemetry. The private repository
|
|
72
|
+
audit `.knodin/execution-audit.jsonl` records only timestamp, profile identity,
|
|
73
|
+
status, exit/signal, reported containment, and retained output-artifact identity.
|
|
74
|
+
|
|
75
|
+
Repository code can still be destructive inside the authorized repository.
|
|
76
|
+
This is a constrained trusted-repository workflow, not a guarantee that an
|
|
77
|
+
approved test/build profile cannot modify its own checkout.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Local troubleshooting diagnostics
|
|
2
|
+
|
|
3
|
+
knodin can retain a small, local diagnostic journal and build a redacted bundle
|
|
4
|
+
for a user to inspect and share with support. Diagnostics are disabled until the
|
|
5
|
+
user enables them, never upload automatically, and require no account or hosted
|
|
6
|
+
service.
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
knodin diagnostics enable --retention-days 14
|
|
10
|
+
knodin diagnostics status
|
|
11
|
+
knodin diagnostics preview --since 24h
|
|
12
|
+
knodin diagnostics archive --since 24h
|
|
13
|
+
knodin diagnostics inspect .knodin/diagnostics/knodin-diagnostics-….json.gz
|
|
14
|
+
knodin diagnostics clear
|
|
15
|
+
knodin diagnostics disable
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
`enable` records bounded failure envelopes from the CLI and MCP gateway. Each
|
|
19
|
+
record contains a timestamp, random correlation ID, surface, operation, phase,
|
|
20
|
+
safe error name/code, a message fingerprint, and sanitized stack shape. It does
|
|
21
|
+
not retain the command arguments, query, error message, source, raw output,
|
|
22
|
+
environment, username, repository path, or source paths. Records are stored in
|
|
23
|
+
`.knodin/diagnostics/events.jsonl`, mode `0600`, capped at 500 events, and
|
|
24
|
+
pruned to the configured 1–365 day retention window.
|
|
25
|
+
|
|
26
|
+
`preview` runs local installation and deep graph diagnostics and returns the
|
|
27
|
+
exact allowlisted payload that `archive` writes. (`collect` remains a compatible
|
|
28
|
+
alias for `archive`.) The default window is 24 hours; `--since` accepts hours or
|
|
29
|
+
days. Bundle output must remain inside the current checkout and cannot traverse
|
|
30
|
+
a symlink. Linked worktrees therefore retain separate trace journals and
|
|
31
|
+
archives even when they share Git objects.
|
|
32
|
+
|
|
33
|
+
Preview persists a private, content-addressed snapshot and returns its
|
|
34
|
+
`previewId`. Pass `--preview-id <id>` to `archive` to write those exact inspected
|
|
35
|
+
contents without recollecting timestamps or health state. The checkout retains
|
|
36
|
+
at most eight previews, seven days, and 2 MiB in aggregate; older or excess
|
|
37
|
+
entries are pruned inside two alternating private store slots after each
|
|
38
|
+
preview. Each slot is capped at 1 MiB, preserving one prior valid generation
|
|
39
|
+
while keeping the aggregate at 2 MiB. Retrieval treats both generations as one
|
|
40
|
+
eight-preview window. Symlinks are never followed.
|
|
41
|
+
|
|
42
|
+
Private diagnostic writes use a short-lived local helper bound to the validated
|
|
43
|
+
destination parent. The helper proves the parent device and inode with a random
|
|
44
|
+
nonce before knodin sends any payload bytes, then bounded-writes with
|
|
45
|
+
no-follow/exclusive descriptors, fsyncs, and returns an identity-bound receipt.
|
|
46
|
+
Malformed, crashed, displaced, or overdue helpers fail closed; there is no
|
|
47
|
+
pathname-write fallback and no network activity.
|
|
48
|
+
|
|
49
|
+
The schema-v2 bundle is gzip-compressed JSON, written mode `0600`, and includes
|
|
50
|
+
a human report plus logical runtime, health, repository-scale, MCP-trace, and
|
|
51
|
+
failure files. Its manifest names every logical file and field, exact UTF-8 byte
|
|
52
|
+
size, retention rule, explicit-allowlist policy, omissions, and unavailable
|
|
53
|
+
sections. `inspect` validates the manifest and compressed/uncompressed bounds
|
|
54
|
+
before returning its contents.
|
|
55
|
+
Users should inspect the bundle before attaching it to Jira, GitHub, email, or
|
|
56
|
+
another support channel. knodin does not transmit it.
|
|
57
|
+
|
|
58
|
+
`clear` removes only the event journal. It does not delete previously created
|
|
59
|
+
bundles or ROI telemetry. `disable` stops future failure recording but preserves
|
|
60
|
+
existing events so disabling never silently destroys troubleshooting evidence.
|
|
61
|
+
Run `clear` when deletion is intended.
|
|
62
|
+
|
|
63
|
+
Diagnostics are evidence, not runtime-causality proof. Message fingerprints can
|
|
64
|
+
group identical sanitized failures but cannot reconstruct the original message.
|
|
65
|
+
The default bundle does not pass arbitrary doctor, graph, telemetry, lifecycle,
|
|
66
|
+
or future diagnostic fields through a sanitizer. A fixed allowlist admits only
|
|
67
|
+
aggregate repository scale, classified health/freshness, safe runtime versions,
|
|
68
|
+
bounded failure envelopes, and C89 request/trace lifecycle fields. Source,
|
|
69
|
+
diffs, raw or external paths, credentials, environment values, usernames,
|
|
70
|
+
command output, Git remotes/messages, and arguments have no output slot. New
|
|
71
|
+
fields fail closed until the allowlist, schema, privacy fixture, and tests are
|
|
72
|
+
updated together. Automated redaction cannot certify arbitrary future fields,
|
|
73
|
+
so users must still inspect the preview before sharing.
|
|
74
|
+
|
|
75
|
+
The same preview/archive builder is exposed through MCP with
|
|
76
|
+
`operation: "diagnostics"`, `telemetryAction: "report"` for preview or
|
|
77
|
+
`telemetryAction: "export"` for archive, and an
|
|
78
|
+
optional `sinceHours` that is interpreted as the evidence window in hours. Pass the
|
|
79
|
+
preview's ID as `artifactId` when archiving the exact snapshot. Both surfaces are bounded, local, credential-free, and
|
|
80
|
+
perform no upload or other network action.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Bounded Git-history review signals
|
|
2
|
+
|
|
3
|
+
`knodin review` and the MCP gateway's `review` operation return `signals` beside
|
|
4
|
+
the compatibility `riskScore`. The signal groups stay separate:
|
|
5
|
+
|
|
6
|
+
- `graphImpact`: changed files and affected flows from indexed relationships;
|
|
7
|
+
- `testGaps`: missing test-path/reference facts;
|
|
8
|
+
- `structuralCentrality`: inbound, outbound, and total indexed references for
|
|
9
|
+
each changed symbol;
|
|
10
|
+
- `history`: rename-aware churn, co-change commit facts, and coupling ratios.
|
|
11
|
+
|
|
12
|
+
History output includes the exact contributing commit IDs, availability,
|
|
13
|
+
confidence, configured bounds, commands executed, analyzed counts, truncation,
|
|
14
|
+
and explicit omissions. Results are sorted deterministically. CLI and MCP output
|
|
15
|
+
also retain the review's graph `staleness` field.
|
|
16
|
+
|
|
17
|
+
## Bounds and unavailable states
|
|
18
|
+
|
|
19
|
+
The defaults are 250 commits, 25 changed files, 100 related-file facts, a
|
|
20
|
+
2-second timeout per Git command, and an 8 MiB output ceiling. Review uses one
|
|
21
|
+
bounded `git log` pass after HEAD and shallow-state probes, and caches facts by
|
|
22
|
+
repository, HEAD, requested files, and bounds. User-provided file paths must be
|
|
23
|
+
repository-relative; revisions never enter the history command.
|
|
24
|
+
|
|
25
|
+
`shallow`, `unborn`, `git-unavailable`, `not-a-repository`, `timeout`, and
|
|
26
|
+
`unavailable` are explicit. Missing history never produces synthetic commits or
|
|
27
|
+
coupling. Shallow results contain only locally present commits and disclose that
|
|
28
|
+
omission. Commit, file, and related-file truncation likewise names what was
|
|
29
|
+
omitted and why.
|
|
30
|
+
|
|
31
|
+
## Interpretation limit
|
|
32
|
+
|
|
33
|
+
Co-change and coupling show correlation in the inspected history only. They do
|
|
34
|
+
not assert causation, defect likelihood, ownership, or mandatory remediation.
|
|
35
|
+
Treat them as review context alongside graph impact, test gaps, and structural
|
|
36
|
+
centrality—not as an opaque score or automated decision.
|
|
37
|
+
|
|
38
|
+
The reproducible synthetic-DAG evidence, raw replay, resource measurement, and
|
|
39
|
+
verifier are under `benchmarks/evaluations/c85-git-history/`.
|