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
package/docs/HANDOFF.md
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# knodin — Handoff
|
|
2
|
+
|
|
3
|
+
Context for anyone (human or agent) picking this repo up cold. Originally
|
|
4
|
+
written at scaffold time on 2026-07-15 and updated after the native engine and
|
|
5
|
+
competitive program shipped. `CLAUDE.md` is the terse working-rules file; this
|
|
6
|
+
is the *why*, current product truth, and adoption path.
|
|
7
|
+
|
|
8
|
+
> **Current-state guardrail:** knodin is an implemented engine, CLI, and
|
|
9
|
+
> MCP server. The scaffold-era backend decision is resolved. Do not describe
|
|
10
|
+
> this repository as a stub, skeleton, wiring-only project, or “almost done.”
|
|
11
|
+
|
|
12
|
+
## One-line pitch
|
|
13
|
+
|
|
14
|
+
> **knodin — source-evidenced local code intelligence with known bounds.** Your
|
|
15
|
+
> agent knodins the whole codebase instead of grepping it.
|
|
16
|
+
|
|
17
|
+
A **local, no-auth core code-intelligence MCP server** that composes the three
|
|
18
|
+
things you actually want from a code graph into a single `knodin` gateway tool.
|
|
19
|
+
The optional `prs` operation uses the caller's authenticated `gh`; it does not
|
|
20
|
+
make the graph engine credentialed.
|
|
21
|
+
|
|
22
|
+
## Why this exists (the decision chain)
|
|
23
|
+
|
|
24
|
+
The starting question was: we already run **codegraph** and **code-review-graph**
|
|
25
|
+
locally — should we adopt **Graphify** instead of / in addition to them?
|
|
26
|
+
|
|
27
|
+
The original conclusion after comparing all three was:
|
|
28
|
+
|
|
29
|
+
- **Keep both incumbents.** Each wins its own slot decisively and Graphify
|
|
30
|
+
doesn't beat either at it:
|
|
31
|
+
- **codegraph** → orient→edit loop: one call returns verbatim, line-numbered,
|
|
32
|
+
edit-ready source + call paths + blast radius. Its whole value is
|
|
33
|
+
"Read-equivalent, edit-with-dependents-in-view."
|
|
34
|
+
- **code-review-graph** → review loop: risk-scored, ~200-token diff context
|
|
35
|
+
(changed functions, affected flows, test gaps) + semantic/cross-repo search.
|
|
36
|
+
- **Graphify's** differentiators (Leiden community/subsystem maps, god-node
|
|
37
|
+
centrality, multimodal ingestion of SQL/Terraform/docs, EXTRACTED/INFERRED
|
|
38
|
+
edge provenance) are real but are the capabilities a *self-built* daily loop
|
|
39
|
+
needs least. They shine for **comprehending unfamiliar code**.
|
|
40
|
+
|
|
41
|
+
The high-leverage product direction was a **composing MCP that assembles the
|
|
42
|
+
three winning workflows**—codegraph-style explain, code-review-graph-style
|
|
43
|
+
review, and Graphify-style map—behind one tool. knodin now implements those
|
|
44
|
+
workflows in its own native local engine; the bullets above explain the origin,
|
|
45
|
+
not an outstanding backend choice.
|
|
46
|
+
|
|
47
|
+
### Build it standalone, NOT inside AtlasMCP
|
|
48
|
+
|
|
49
|
+
Decided against folding this into AtlasMCP's core, and Atlas's own code voted for
|
|
50
|
+
it (it already surfaces Glean via `src/client/embedded-mcp.ts` + `EmbeddedMcpTool`
|
|
51
|
+
rather than reimplementing it in-core):
|
|
52
|
+
|
|
53
|
+
- **Different bounded context.** Atlas is a credential-delegating gateway to
|
|
54
|
+
external SaaS (all its `src/auth/*` + `src/client/*` are OAuth'd API clients).
|
|
55
|
+
knodin is local compute: tree-sitter parsing, a per-repo on-disk graph,
|
|
56
|
+
file-watch freshness, **zero external auth**. Co-mingling two unrelated failure
|
|
57
|
+
domains in one deployable is the trap.
|
|
58
|
+
- **Atlas optimizes for a small tool surface** (its stated "gateway pattern, keep
|
|
59
|
+
it to ~8 tools"). A fat code-graph tool family fights that.
|
|
60
|
+
- **Standalone reuse is the point.** Like codegraph/code-review-graph, it should
|
|
61
|
+
work in *any* assistant with a local index and no auth. Burying it in Atlas
|
|
62
|
+
would only make it reachable when Atlas runs with its full OAuth apparatus.
|
|
63
|
+
|
|
64
|
+
**External and optional:** Atlas can federate knodin through its existing
|
|
65
|
+
embedded-MCP seam—request-scoped dispatch, same as Glean, with zero code
|
|
66
|
+
co-mingled. That Atlas-side integration is outside this repository and is not a
|
|
67
|
+
missing part of knodin's implemented standalone product.
|
|
68
|
+
|
|
69
|
+
## The name (so nobody relitigates it)
|
|
70
|
+
|
|
71
|
+
Long hunt. The lesson: this is the most naming-saturated niche in software right
|
|
72
|
+
now — every transparent "code + graph / memory / map" word is already taken by a
|
|
73
|
+
near-clone (codegraph, coregraph, cartograph, omnigraph, graphify, lore,
|
|
74
|
+
mnemosyne, cairn, episteme — all gone, most in the exact Claude-Code-MCP niche).
|
|
75
|
+
Transparency is the collision magnet.
|
|
76
|
+
|
|
77
|
+
**Landed on: knodin, CLI `knodin`.** Rationale:
|
|
78
|
+
- `knodin` is how engineers already talk ("I knodin it's in the auth module",
|
|
79
|
+
"ask knodin", "knodin says nothing calls this") — a verb that spreads by
|
|
80
|
+
word-of-mouth, which is the real adoption criterion.
|
|
81
|
+
- Means the right thing: to figure out / judge / know.
|
|
82
|
+
- `graph` gives instant category legibility for a newcomer.
|
|
83
|
+
- Clean in the niche (no code-intelligence/MCP tool by this name; the AU
|
|
84
|
+
accounting co. and an old npm `knodin` weather wrapper are benign — publish
|
|
85
|
+
scoped as `@yourorg/knodin`, the `bin` stays `knodin`).
|
|
86
|
+
|
|
87
|
+
Deliberately **not** themed to pair with Atlas or the Council agents — this is a
|
|
88
|
+
tool, and catchy+memorable beats thematic coherence for a tool.
|
|
89
|
+
|
|
90
|
+
## Implemented product surface
|
|
91
|
+
|
|
92
|
+
One flat gateway, `knodin`, with an `operation` enum. Same engine backs the CLI
|
|
93
|
+
and the MCP server.
|
|
94
|
+
|
|
95
|
+
| Op | CLI | Job | Wraps / builds |
|
|
96
|
+
|---|---|---|---|
|
|
97
|
+
| `explain` | `knodin explain <symbol>` | edit-ready verbatim source + call paths + blast radius | codegraph's job |
|
|
98
|
+
| `review` | `knodin review [base]` | risk-scored diff context: changed symbols, affected flows, test gaps | code-review-graph's job |
|
|
99
|
+
| `map` | `knodin map` | subsystems (Leiden communities) + EXTRACTED/INFERRED edges | Graphify's job |
|
|
100
|
+
|
|
101
|
+
The backend decision is closed: knodin uses a native TypeScript/tree-sitter
|
|
102
|
+
engine with local SQLite persistence, incremental watchers and reconciliation,
|
|
103
|
+
stable symbol identities, resolved typed edges, communities and flows, hybrid
|
|
104
|
+
local search, review scopes, health/repair, and response budgets. Optional
|
|
105
|
+
local integrations remain integrations; they are not the graph backend.
|
|
106
|
+
|
|
107
|
+
## Show me the value
|
|
108
|
+
|
|
109
|
+
knodin gives a human or coding agent edit-ready source, resolved relationships,
|
|
110
|
+
blast radius, diff risk, architecture, and bounded context without manually
|
|
111
|
+
assembling a Grep/Read chain. The practical outcome is fewer missed dependencies
|
|
112
|
+
and less repeated context gathering in the orient → edit → review loop.
|
|
113
|
+
|
|
114
|
+
## What is the ROI?
|
|
115
|
+
|
|
116
|
+
- Intended outcome: fewer agent/tool round trips for definition, caller, diff,
|
|
117
|
+
test, and architecture discovery. Existing replays measure operation-level
|
|
118
|
+
correctness, latency, and size, not an end-to-end productivity percentage.
|
|
119
|
+
- One MCP schema instead of a large always-loaded tool family.
|
|
120
|
+
- No hosted index, account, credential flow, source egress, or required
|
|
121
|
+
database/vector daemon.
|
|
122
|
+
- Measurable correctness, latency, response-size, safety, and effort gates under
|
|
123
|
+
`benchmarks/evaluations/` rather than a generic productivity claim.
|
|
124
|
+
|
|
125
|
+
## What happens tomorrow?
|
|
126
|
+
|
|
127
|
+
On Windows, macOS, or Linux with Node.js 24 or newer, run
|
|
128
|
+
`npm install --global --ignore-scripts knodin`. pnpm, Bun, Yarn Classic,
|
|
129
|
+
and Node version-manager details are in
|
|
130
|
+
[the installation guide](INSTALLATION.md). Then run `knodin init` and use the
|
|
131
|
+
CLI or connect the single MCP gateway to the existing checkout. Start with
|
|
132
|
+
`knodin context "<task>"`,
|
|
133
|
+
`knodin explain <symbol>`, and `knodin review --scope all`; use `map`, `search`,
|
|
134
|
+
and structured `query` operations when the task needs architecture or graph
|
|
135
|
+
drill-down. No hosted rollout or workflow migration is required.
|
|
136
|
+
|
|
137
|
+
The external Homebrew tap and GHES mirror still use their legacy repository
|
|
138
|
+
names. Their knodin paths become authoritative only after each external rename
|
|
139
|
+
and after the renamed artifact passes the version, MCP, lifecycle, and
|
|
140
|
+
uninstall smoke gate. The repository-local formula is a migration candidate,
|
|
141
|
+
not evidence that a knodin tap is already live.
|
|
142
|
+
|
|
143
|
+
The packed-consumer gate proves a generic MCP handshake and local CLI behavior.
|
|
144
|
+
Do not generalize that evidence into compatibility with every named assistant
|
|
145
|
+
or operating system without a corresponding client/platform run.
|
|
146
|
+
|
|
147
|
+
## What makes knodin unique? What is the secret sauce?
|
|
148
|
+
|
|
149
|
+
The moat is the constraint combination: ambiguity-safe stable symbol identity,
|
|
150
|
+
source-evidenced impact/review answers, honest freshness, serialized response
|
|
151
|
+
budgets, and a compact one-tool local surface. Competitors can match individual
|
|
152
|
+
features; knodin's differentiated system composes them across the daily loop
|
|
153
|
+
while remaining local, measurable, and explicit about unresolved evidence.
|
|
154
|
+
|
|
155
|
+
## Current state
|
|
156
|
+
|
|
157
|
+
The engine, CLI, and MCP server are implemented and exercised by hundreds of
|
|
158
|
+
tests plus labeled competitive replays. The active roadmap records remaining
|
|
159
|
+
evidence and product-surface gaps; it does not represent an unbuilt core.
|
|
160
|
+
|
|
161
|
+
- `src/engine/index.ts` — native graph backend and query/review/map lifecycle.
|
|
162
|
+
- `src/tools/knodin-tools.ts` — the `knodin` gateway definition (hand-written
|
|
163
|
+
JSON Schema literal) + dispatcher.
|
|
164
|
+
- `src/server.ts` — MCP stdio server, **low-level** registration.
|
|
165
|
+
- `bin/cli.ts` — the `knodin` CLI over the same engine.
|
|
166
|
+
|
|
167
|
+
### Hard rule carried over from AtlasMCP
|
|
168
|
+
|
|
169
|
+
**Never** use the SDK's high-level `server.tool()` overload — it makes `tsc`
|
|
170
|
+
infer handler arg types from the Zod shape via pathologically deep types
|
|
171
|
+
(TS2589) and OOMs typecheck on larger tool sets. Register via
|
|
172
|
+
`setRequestHandler(ListTools…/CallTool…)` with hand-written schema literals and
|
|
173
|
+
narrow args manually. Keep to the single flat gateway; add capabilities as new
|
|
174
|
+
operations, not new top-level tools.
|
|
175
|
+
|
|
176
|
+
## Next work
|
|
177
|
+
|
|
178
|
+
Use [`roadmap/competitive-roadmap.md`](../roadmap/competitive-roadmap.md) as the
|
|
179
|
+
authoritative queue. Remaining items are evidence-backed improvements or
|
|
180
|
+
bounded product-surface decisions—not implementation of a missing core engine.
|
package/docs/INSTALLATION.md
CHANGED
|
@@ -8,6 +8,11 @@ shells, Git hooks, and MCP clients.
|
|
|
8
8
|
|
|
9
9
|
## Support and evidence
|
|
10
10
|
|
|
11
|
+
The certified boundary is macOS. Linux and Windows are unavailable for C91
|
|
12
|
+
certification; success in portable unit tests must not be promoted into a
|
|
13
|
+
platform claim. Runtime-manager fixtures cover the supported directory and
|
|
14
|
+
shim layouts, not every shell customization.
|
|
15
|
+
|
|
11
16
|
| Installer or manager | Command | Current status |
|
|
12
17
|
| --- | --- | --- |
|
|
13
18
|
| npm without a Node manager | `npm install --global --ignore-scripts knodin@<version>` | Verified by the packed-consumer gate on macOS/Linux |
|
|
@@ -19,8 +24,8 @@ shells, Git hooks, and MCP clients.
|
|
|
19
24
|
| pnpm | `pnpm add --global --ignore-scripts knodin@<version>` | Executable gate provided; release verification requires the published version |
|
|
20
25
|
| Bun | `bun add --global --ignore-scripts knodin@<version>` | Executable gate provided; release verification requires the published version |
|
|
21
26
|
| approved npm-compatible registry | use the npm command with approved registry configuration | Same artifact; registry authentication/promotion is organization-owned |
|
|
22
|
-
| P&T GHES release asset |
|
|
23
|
-
| Homebrew |
|
|
27
|
+
| P&T GHES release asset | download the exact `.tgz` from `Enterprise-Apps/knodin`, verify SHA-256, then use the npm command with the local file | Read-only synchronized mirror; source changes originate in the authoritative SaaS repository |
|
|
28
|
+
| Homebrew | `brew install knodin/tap/knodin` after its formula gate | `knodin/knodin` is the tap repository, not the source or release authority |
|
|
24
29
|
|
|
25
30
|
“Guidance” is not a compatibility claim. The repository records the manager
|
|
26
31
|
version, command, package version, platform, and result when a release gate is
|
|
@@ -34,22 +39,12 @@ manager-owned tool.
|
|
|
34
39
|
|
|
35
40
|
## Exact npm installation
|
|
36
41
|
|
|
37
|
-
|
|
38
|
-
remain pinned to Node.js 20. When a repository-local version-manager shim
|
|
39
|
-
selects Node 20, the launcher searches `PATH` and standard mise, nvm, fnm, asdf,
|
|
40
|
-
Volta, and Homebrew installation locations, then relaunches the same command
|
|
41
|
-
with a version-checked Node 24+ runtime. Discovery
|
|
42
|
-
trusts and probes executables from absolute, user-controlled `PATH` entries and
|
|
43
|
-
version-manager locations. Override discovery explicitly when a
|
|
44
|
-
runtime lives elsewhere:
|
|
42
|
+
Node.js 24 or newer is required:
|
|
45
43
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
The override is version-checked before execution. Installation through npm
|
|
51
|
-
should still be performed from Node 24+ so package-manager engine checks remain
|
|
52
|
-
truthful:
|
|
44
|
+
The handoff only relaunches the knodin launcher. It does not modify the
|
|
45
|
+
repository's runtime declaration (`package.json`, `.node-version`, `.nvmrc`,
|
|
46
|
+
or manager configuration). If discovery is missing or conflicting, use the
|
|
47
|
+
single absolute `KNODIN_NODE_RUNTIME` override named by the diagnostic.
|
|
53
48
|
|
|
54
49
|
```bash
|
|
55
50
|
npm install --global --ignore-scripts knodin@0.4.3
|
|
@@ -98,7 +93,6 @@ mise which knodin
|
|
|
98
93
|
knodin --version
|
|
99
94
|
cd /path/to/node-24-project && knodin --version
|
|
100
95
|
cd /path/to/node-26-project && knodin --version
|
|
101
|
-
cd /path/to/node-20-project && knodin --version
|
|
102
96
|
```
|
|
103
97
|
|
|
104
98
|
## Volta
|
|
@@ -202,6 +196,15 @@ knodin status --deep
|
|
|
202
196
|
knodin doctor
|
|
203
197
|
```
|
|
204
198
|
|
|
199
|
+
`knodin doctor` is diagnostic and preview-oriented: it enumerates manager,
|
|
200
|
+
duplicate executable, lifecycle, graph, and client remediation without
|
|
201
|
+
executing arbitrary suggested commands. Apply only the named `init`, `repair`,
|
|
202
|
+
or `configure` operation, rerun doctor, and roll agent configuration back with
|
|
203
|
+
`knodin configure --scope cli-only`. Repeating those managed operations is
|
|
204
|
+
idempotent. Local fixtures use zero hosted spend, no credentials, and no source
|
|
205
|
+
egress. Diagnostic archives remain governed by the privacy-safe preview and
|
|
206
|
+
archive contract in [`DIAGNOSTICS.md`](DIAGNOSTICS.md).
|
|
207
|
+
|
|
205
208
|
Upgrade with the manager that owns the executable:
|
|
206
209
|
|
|
207
210
|
```bash
|
package/docs/MCP.md
CHANGED
|
@@ -17,10 +17,13 @@ recoverable hard-budget continuations. See `docs/PROGRESSIVE-EVIDENCE.md`.
|
|
|
17
17
|
- **CLI-only:** `knodin init --scope cli-only` keeps the local graph and Git
|
|
18
18
|
refresh behavior without MCP registration.
|
|
19
19
|
|
|
20
|
-
knodin supports project adapters for
|
|
21
|
-
Antigravity. A generic MCP handshake is release-gated.
|
|
22
|
-
reported only when its adapter/configuration is
|
|
23
|
-
every client version or platform.
|
|
20
|
+
knodin supports project adapters for GitHub Copilot in VS Code, Claude Code,
|
|
21
|
+
Codex, Gemini CLI, and Antigravity. A generic MCP handshake is release-gated.
|
|
22
|
+
Named-client status is reported only when its adapter/configuration is
|
|
23
|
+
detected; it is not proof of every client version or platform. Personal-scope
|
|
24
|
+
Copilot detection requires the VS Code CLI and an installed `GitHub.copilot`
|
|
25
|
+
or `GitHub.copilot-chat` extension; team scope can write the adapter without
|
|
26
|
+
claiming that the local client is installed.
|
|
24
27
|
|
|
25
28
|
## Canonical command
|
|
26
29
|
|
|
@@ -48,6 +51,21 @@ Manual JSON configuration:
|
|
|
48
51
|
}
|
|
49
52
|
```
|
|
50
53
|
|
|
54
|
+
GitHub Copilot in VS Code uses `.vscode/mcp.json` and the VS Code `servers`
|
|
55
|
+
shape:
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"servers": {
|
|
60
|
+
"knodin": {
|
|
61
|
+
"type": "stdio",
|
|
62
|
+
"command": "knodin",
|
|
63
|
+
"args": ["serve"]
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
51
69
|
Codex TOML:
|
|
52
70
|
|
|
53
71
|
```toml
|
|
@@ -103,10 +121,43 @@ If the handshake fails:
|
|
|
103
121
|
MCP requests never trigger update-network checks. Cached update state is
|
|
104
122
|
available through the `doctor` operation without changing stdio framing.
|
|
105
123
|
When local diagnostics have been explicitly enabled for the repository, an MCP
|
|
106
|
-
operation failure records the same bounded
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
124
|
+
operation failure records the same bounded failure envelope as the CLI. It
|
|
125
|
+
never records request arguments, queries, source, or raw responses. The single
|
|
126
|
+
gateway also exposes `operation: "diagnostics"` with `telemetryAction: "report"`
|
|
127
|
+
for preview or `"export"` for archive. It uses the exact schema-v2 explicit-allowlist builder
|
|
128
|
+
as `knodin diagnostics preview|archive`; no failure or archive is uploaded
|
|
129
|
+
automatically. See `docs/DIAGNOSTICS.md`.
|
|
130
|
+
|
|
131
|
+
## Request reliability and recovery
|
|
132
|
+
|
|
133
|
+
Every tool call has a client request ID and generated trace ID. Graph operations
|
|
134
|
+
are serialized inside one warm child process per repository/worktree; no engine
|
|
135
|
+
or database handle is shared across those workers. The gateway owns deadlines,
|
|
136
|
+
cancellation, a 250 ms cooperative cleanup grace, hard termination, and a
|
|
137
|
+
bounded three-start-per-minute restart policy. The graph-independent `docs`
|
|
138
|
+
operation remains available in the gateway while a worker is being replaced.
|
|
139
|
+
`KNODIN_MCP_DEADLINE_MS` may be set to a positive value up to 300000 for local
|
|
140
|
+
testing of the cooperative repair path.
|
|
141
|
+
|
|
142
|
+
Checked-in process replays prove a real SQLite held lock, abrupt worker exit,
|
|
143
|
+
disconnect/cancellation race against a stuck worker, hard kill, bounded restart,
|
|
144
|
+
warm-worker reuse, worktree isolation, and the next independent success. The
|
|
145
|
+
raw CLI stdio replay also executes a real MCP status call through the child
|
|
146
|
+
boundary. Memory and deadline diagnoses remain bounded signals, not proof of an
|
|
147
|
+
operating-system root cause.
|
|
148
|
+
|
|
149
|
+
The gateway appends metadata-only lifecycle records to
|
|
150
|
+
`.knodin/mcp-reliability.jsonl`. Synchronously appended complete JSONL records
|
|
151
|
+
are retained after ordinary or abrupt worker exit, rotate at 256 KiB or
|
|
152
|
+
seven days (one prior generation), and contain only operation, correlation,
|
|
153
|
+
timing, progress sequence, and classified state. Restart and recovery records
|
|
154
|
+
link the failed predecessor trace to the next successful request.
|
|
155
|
+
They never include request arguments, queries, source, responses, environment,
|
|
156
|
+
credentials, remotes, or repository paths. Progress is advisory, emitted only
|
|
157
|
+
when the client supplies a progress token, and bounded to the request deadline;
|
|
158
|
+
the journal retains at most 64 progress records per request. Each linked
|
|
159
|
+
worktree writes only inside its own `.knodin` directory. Power-loss durability
|
|
160
|
+
beyond complete synchronous records is not claimed.
|
|
110
161
|
|
|
111
162
|
The `review` operation serializes graph impact, test gaps, structural
|
|
112
163
|
centrality, and bounded Git-history facts separately. Churn, co-change, and
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Progressive source evidence
|
|
2
|
+
|
|
3
|
+
`knodin evidence` returns exact local source through four deterministic levels:
|
|
4
|
+
|
|
5
|
+
1. `locate` — stable file identity, path, hash, size, freshness, and confidence.
|
|
6
|
+
2. `outline` — top-level declaration signatures and exact line ranges.
|
|
7
|
+
3. `evidence` — requested verbatim source lines with edit anchors intact.
|
|
8
|
+
4. `expand` — the complete verbatim file within caller-selected hard budgets.
|
|
9
|
+
|
|
10
|
+
CLI:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
knodin evidence locate src/widget.ts
|
|
14
|
+
knodin evidence evidence src/widget.ts --start 10 --end 30
|
|
15
|
+
knodin evidence evidence src/widget.ts --continuation <evidence-handle> \
|
|
16
|
+
--baseline-hash <sha256> --baseline-bytes <bytes>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The single MCP gateway uses `operation: "evidence"`, `file`, and
|
|
20
|
+
`evidenceLevel`. Supply a returned `continuation` to recover omitted source.
|
|
21
|
+
Every response names returned and omitted material, a reason, whether more
|
|
22
|
+
exists, a stable continuation and evidence handle, freshness, confidence, the
|
|
23
|
+
path taken, and exact item/UTF-8-byte/local-token-estimate budgets.
|
|
24
|
+
The mandatory recoverability envelope requires at least 1,600 effective bytes
|
|
25
|
+
(the lower of the byte cap and four times the local token-estimate cap); smaller
|
|
26
|
+
requests fail closed instead of dropping contract fields.
|
|
27
|
+
|
|
28
|
+
Source omission occurs only when a server-issued evidence handle is valid and
|
|
29
|
+
both `baselineHash` and `baselineBytes` equal the current complete local file.
|
|
30
|
+
Missing or partial metadata/handle, a stale/tampered hash, source changed since
|
|
31
|
+
a handle was issued, or a renamed path selects a named `full-*` recovery path.
|
|
32
|
+
Invalid or tampered handles fail closed. Inputs
|
|
33
|
+
must identify an exact repository-relative regular file; ambiguous selection,
|
|
34
|
+
absolute/traversal paths, and symlinks are refused.
|
|
35
|
+
|
|
36
|
+
This protocol does not summarize source and does not support token-savings or
|
|
37
|
+
task-success claims. See the C83 checked-in replay and limitations for bounds.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# P&T access through Docusign GitHub Enterprise Server
|
|
2
|
+
|
|
3
|
+
The knodin GHES path is
|
|
4
|
+
`github.docusignhq.com/Enterprise-Apps/knodin`. It is a read-only downstream
|
|
5
|
+
mirror of the authoritative GitHub SaaS repository
|
|
6
|
+
`DTS-Productivity-Engineering/knodin`; product changes must originate in
|
|
7
|
+
that source repository, never in the mirror or the `knodin/knodin` Homebrew tap.
|
|
8
|
+
|
|
9
|
+
The legacy `v0.3.0` release and its original artifact digest were verified on
|
|
10
|
+
2026-08-01. That evidence does not certify a renamed knodin artifact or path.
|
|
11
|
+
|
|
12
|
+
## Quick install without GitHub SaaS
|
|
13
|
+
|
|
14
|
+
Node.js 24 or newer and an authenticated GHES CLI are required. Download the
|
|
15
|
+
versioned release asset from GHES, verify its observed SHA-256, install it
|
|
16
|
+
without dependency lifecycle scripts, and initialize the existing checkout:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
mkdir knodin-install && cd knodin-install
|
|
20
|
+
GH_HOST=github.docusignhq.com gh release download v0.3.0 \
|
|
21
|
+
--repo Enterprise-Apps/reckon-graph \
|
|
22
|
+
--pattern 'reckon-graph-0.3.0.tgz'
|
|
23
|
+
printf '%s %s\n' \
|
|
24
|
+
373ca7540e745915f195e51f4ed6383374e4df4a2b8663872b2f279380e60989 \
|
|
25
|
+
reckon-graph-0.3.0.tgz | shasum -a 256 --check
|
|
26
|
+
npm install --global --ignore-scripts ./reckon-graph-0.3.0.tgz
|
|
27
|
+
cd /path/to/existing/repository
|
|
28
|
+
reckon init
|
|
29
|
+
reckon doctor
|
|
30
|
+
reckon status --deep
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Unverified Windows guidance: PowerShell provides
|
|
34
|
+
`Get-FileHash -Algorithm SHA256` instead of `shasum`, and the npm/CLI commands
|
|
35
|
+
are intended to be portable. A native Windows named-client run has not yet been
|
|
36
|
+
certified, so this is not a Windows support claim. The release page records the
|
|
37
|
+
versioned filename and observed digest; do not substitute a branch archive or a
|
|
38
|
+
mutable `latest` URL. GHES does not currently enforce immutable releases, which
|
|
39
|
+
is why digest verification and the separate signed-update trust remain
|
|
40
|
+
required.
|
|
41
|
+
|
|
42
|
+
The same 0.3.0 tarball was published to Docusign Artifactory at
|
|
43
|
+
`dts-productivity-engineering-npm-dev-local/knodin-0.3.0.tgz`. That raw
|
|
44
|
+
artifact path requires normal corporate Artifactory authentication and is not
|
|
45
|
+
an npm registry endpoint. GHES release download is the supported P&T bootstrap
|
|
46
|
+
until an approved internal npm virtual repository exposes the package metadata.
|
|
47
|
+
|
|
48
|
+
## Mirror operating model
|
|
49
|
+
|
|
50
|
+
1. Source commits and reviewed release tags originate in the GitHub SaaS
|
|
51
|
+
repository.
|
|
52
|
+
2. The GHES `main` branch and release tag are synchronized without rewriting
|
|
53
|
+
history.
|
|
54
|
+
3. The exact retained release tarball is attached to the matching GHES release;
|
|
55
|
+
it is not rebuilt on GHES.
|
|
56
|
+
4. A release is not certified merely because it appears on GHES. The final
|
|
57
|
+
cross-channel attestation must prove that npm, Artifactory, GitHub SaaS,
|
|
58
|
+
Homebrew, and GHES represent the same source and bytes.
|
|
59
|
+
5. Developers do not dual-push feature branches. Mirror synchronization is a
|
|
60
|
+
release/operations responsibility and must eventually use a narrowly scoped
|
|
61
|
+
workload identity rather than a personal SSH key.
|
|
62
|
+
|
|
63
|
+
The destination must eventually enforce repository visibility, branch
|
|
64
|
+
protection, required reviews/checks, security scans, commit/tag provenance, and
|
|
65
|
+
license notices. Today the repository is internal, but `main` is unprotected and
|
|
66
|
+
maintainers retain push access. Those are open governance controls, not
|
|
67
|
+
completed evidence. Future mirror automation must fail closed and must not
|
|
68
|
+
accept changes back into the authoritative repository.
|
|
69
|
+
|
|
70
|
+
## Required governance follow-up
|
|
71
|
+
|
|
72
|
+
Record or complete:
|
|
73
|
+
|
|
74
|
+
- repository-owner approval to disclose the source to P&T;
|
|
75
|
+
- enterprise GitHub/security approval for cross-organization private forks or
|
|
76
|
+
mirrors;
|
|
77
|
+
- legal/compliance confirmation for source and license visibility;
|
|
78
|
+
- the exact destination GitHub organization and repository name;
|
|
79
|
+
- confirmation of destination visibility and membership controls;
|
|
80
|
+
- the required branch-protection, review, scan, and retention policy;
|
|
81
|
+
- approval of a narrowly scoped GitHub App/workload identity, its installation
|
|
82
|
+
owners, secret store, rotation owner, and audit-log owner;
|
|
83
|
+
- an owner for incident response and mirror decommissioning.
|
|
84
|
+
|
|
85
|
+
The destination repository and current release asset are live. Branch
|
|
86
|
+
protection, enforced read-only direction, automated mirror synchronization,
|
|
87
|
+
production threshold-update trust, timed onboarding evidence, and a Windows
|
|
88
|
+
named-client release certification remain open gates; the existence of this
|
|
89
|
+
access path is not evidence that those separate controls are complete.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Reckon Graph 0.3 evidence ledger
|
|
2
|
+
|
|
3
|
+
This ledger freezes the field and competitor evidence used to define the 0.3
|
|
4
|
+
release. Historical observations are not rewritten as current measurements.
|
|
5
|
+
|
|
6
|
+
## Minions field observation
|
|
7
|
+
|
|
8
|
+
The prior 0.1.22 field run recorded:
|
|
9
|
+
|
|
10
|
+
- 3,006 source files;
|
|
11
|
+
- 2,949 indexed files and 157 health findings before repair;
|
|
12
|
+
- 3,006 indexed files after repair;
|
|
13
|
+
- current HEAD `cbf058aa...`;
|
|
14
|
+
- recorded indexed HEAD `4d45fe02...`;
|
|
15
|
+
- a 16-commit distance while 0.2.0 status incorrectly reported healthy;
|
|
16
|
+
- 195 repair operations, including reconciliation of stale/orphaned state and
|
|
17
|
+
regeneration of 1,874 symbol embeddings.
|
|
18
|
+
|
|
19
|
+
The workload fast-forwarded main across 15 merged commits and removed 16 linked
|
|
20
|
+
worktrees. The checked-in lifecycle regression recreates those lifecycle
|
|
21
|
+
shapes, including additions, edits, renames, deletions, policy transitions,
|
|
22
|
+
overlapping hook workers, immediate queries, and cleanup.
|
|
23
|
+
|
|
24
|
+
The Minions checkout is a read-only field fixture for this release. Its current
|
|
25
|
+
HEAD on 2026-07-30 was `44c91f6d013fd8d6f4e106d063a87eab94b19866`;
|
|
26
|
+
the historical SHAs above belong to the original observation, not that later
|
|
27
|
+
checkout state. Existing modified and untracked Minions files were left intact.
|
|
28
|
+
|
|
29
|
+
## Token Optimizer observation
|
|
30
|
+
|
|
31
|
+
The complete 102.8-second demo artifact has SHA-256
|
|
32
|
+
`a8085ec26d56ab220f3b31578f818a911caf277e604ed9f8d46c0d9f31fbb60d`.
|
|
33
|
+
It demonstrates seven named surfaces: file outline, symbol extraction, symbol
|
|
34
|
+
find, batch outline, project overview, output compression, and command running.
|
|
35
|
+
It describes Python AST parsing and heuristic/regular-expression coverage for
|
|
36
|
+
other languages.
|
|
37
|
+
|
|
38
|
+
At release time, no authorized immutable source commit, packaged executable,
|
|
39
|
+
README, version, or raw measurement data was available, so the original
|
|
40
|
+
observation was `demo-only`. A post-release source audit now pins the authorized
|
|
41
|
+
GHES implementation at
|
|
42
|
+
`a2b9cef5efdfcf0393e9e7a5ded229ffd9f613d7`. It verifies the source inventory
|
|
43
|
+
and selected implementation observations, including a behavioral compression
|
|
44
|
+
budget probe. Equivalent end-to-end measurements remain incomplete, and the
|
|
45
|
+
displayed savings remain hypotheses: the demo showed two calls, used a bytes/4
|
|
46
|
+
token estimate, and showed inconsistent 83% and 93% targeted-lookup figures.
|
|
47
|
+
|
|
48
|
+
The reproducible comparison contract is
|
|
49
|
+
[`../benchmarks/evaluations/token-optimizer-20260730/comparison-manifest.json`](../benchmarks/evaluations/token-optimizer-20260730/comparison-manifest.json).
|
|
50
|
+
The immutable source result is
|
|
51
|
+
[`../benchmarks/evaluations/token-optimizer-20260730/raw-source-audit-20260730.json`](../benchmarks/evaluations/token-optimizer-20260730/raw-source-audit-20260730.json).
|
|
52
|
+
Missing behavioral measurements are `null`, never zero.
|
|
53
|
+
|
|
54
|
+
The later C56 replay now executes all seven pinned workflows with shared
|
|
55
|
+
fixtures, real-token counts, 20 warm samples, five cold-process samples, and
|
|
56
|
+
explicit correctness oracles. Both products pass the five structural oracles.
|
|
57
|
+
The result is intentionally `complete-with-gaps`: Token Optimizer is smaller
|
|
58
|
+
and faster on all five small-fixture structural calls, Reckon has no output
|
|
59
|
+
compressor yet, and command execution remains containment-gated. See
|
|
60
|
+
[`../benchmarks/evaluations/token-optimizer-20260730/summary.md`](../benchmarks/evaluations/token-optimizer-20260730/summary.md).
|
|
61
|
+
|
|
62
|
+
## Implemented and deferred
|
|
63
|
+
|
|
64
|
+
Reckon now provides parser-grounded bounded file and batch outlines, compact
|
|
65
|
+
source-only extraction, deterministic project overview, natural-prompt routing,
|
|
66
|
+
real-token local telemetry, and a static local report through the existing
|
|
67
|
+
single `reckon` gateway.
|
|
68
|
+
|
|
69
|
+
`reckon run` is not shipped. A no-shell launcher alone could not prove portable
|
|
70
|
+
hard memory limits and process-tree termination across POSIX and Windows. The
|
|
71
|
+
full gate and adversarial fixtures remain documented in
|
|
72
|
+
[`COMMAND-OUTPUT-COMPRESSION.md`](COMMAND-OUTPUT-COMPRESSION.md). This is a
|
|
73
|
+
security decision, not a claim that the competitor implementation is unsafe.
|
|
@@ -55,14 +55,26 @@ doctor` and the single MCP gateway are unchanged.
|
|
|
55
55
|
|
|
56
56
|
Sibling location never establishes system membership or a relationship.
|
|
57
57
|
`repos init` works sequentially and performs each live repository operation in
|
|
58
|
-
a disposable process
|
|
58
|
+
a disposable process. Memory is uncapped by default so a legitimate large
|
|
59
|
+
repository is not killed by a product-wide guess. Operators can set an explicit
|
|
60
|
+
per-repository RSS ceiling for one run with `--memory-limit-mib <mib>` or for a
|
|
61
|
+
configured portfolio in `knodin.yaml`; the CLI value takes precedence:
|
|
62
|
+
|
|
63
|
+
```yaml
|
|
64
|
+
schemaVersion: 1
|
|
65
|
+
repositoryInitialization:
|
|
66
|
+
memoryLimitMiB: 1024
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The minimum explicit ceiling is 128 MiB. A worker that exceeds a configured
|
|
59
70
|
ceiling or its deadline has its process group terminated, produces a
|
|
60
71
|
repository-scoped failure, and does not prevent later repositories from being
|
|
61
|
-
processed. JSON records the observed per-repository peak, enforced ceiling
|
|
62
|
-
and count of ceiling failures. The
|
|
63
|
-
interval rather than a claim that transient
|
|
64
|
-
one sample. Windows can terminate the worker
|
|
65
|
-
same descendant process-group guarantee as
|
|
72
|
+
processed. JSON records the observed per-repository peak, the enforced ceiling
|
|
73
|
+
or `null` when uncapped, and the count of ceiling failures. The 250 ms RSS
|
|
74
|
+
heartbeat is a bounded enforcement interval rather than a claim that transient
|
|
75
|
+
allocation can never overshoot by one sample. Windows can terminate the worker
|
|
76
|
+
process but cannot provide the same descendant process-group guarantee as
|
|
77
|
+
macOS/Linux.
|
|
66
78
|
|
|
67
79
|
Initialization supports `--dry-run` and preserves a healthy graph when only
|
|
68
80
|
managed integration needs refreshing. Dry-run never starts a worker, opens a
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Optional SCIP import
|
|
2
|
+
|
|
3
|
+
> **Bounds are overridable.** Every limit below can be raised with a flag, and
|
|
4
|
+
> each refusal names the flag and a value that would admit the file:
|
|
5
|
+
> `--scip-max-bytes`, `--scip-max-files`, `--scip-max-facts`,
|
|
6
|
+
> `--scip-timeout-ms`. A ceiling the operator cannot move is just a failure.
|
|
7
|
+
|
|
8
|
+
knodin can add compiler-produced SCIP facts to its local graph without running a
|
|
9
|
+
language server. The tier is deliberately opt-in:
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
knodin index --scip path/to/index.scip
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The input must be a regular file inside the repository. knodin never discovers,
|
|
16
|
+
downloads, or produces a SCIP index, and a normal `knodin init` or `knodin
|
|
17
|
+
index` does not import one. Repositories without the flag keep the existing
|
|
18
|
+
native and LSIF behavior byte-for-byte at the command boundary.
|
|
19
|
+
|
|
20
|
+
## Evidence and conflicts
|
|
21
|
+
|
|
22
|
+
Imported definitions use stable repository/file/range identities, `SCIP_*`
|
|
23
|
+
kinds, a summary containing the original SCIP symbol and `scip` provenance,
|
|
24
|
+
`scip_reference`, `scip_relationship_reference`, `scip_implementation`,
|
|
25
|
+
`scip_type_definition`, or `scip_definition` reference kinds, and `scip_import`
|
|
26
|
+
file edges. Native and LSIF facts are not deleted or overwritten. If two tiers
|
|
27
|
+
define the same name, normal ambiguity-safe resolution returns all candidates
|
|
28
|
+
and requires a file, kind, or identity selector. A stale SCIP input is refused
|
|
29
|
+
rather than replacing fresher source-derived evidence.
|
|
30
|
+
|
|
31
|
+
Every successful index result includes the producer name/version and represented
|
|
32
|
+
languages from the SCIP file plus the exact limits used. Defaults are 64 MiB,
|
|
33
|
+
10,000 documents, 250,000 decoded facts, and 30 seconds. Inputs that are
|
|
34
|
+
missing, malformed, oversized, stale relative to a represented source file, or
|
|
35
|
+
contain absolute, traversal, missing, symlink, or non-file document paths fail
|
|
36
|
+
before the SCIP tier is replaced.
|
|
37
|
+
|
|
38
|
+
## Known bounds and limitations
|
|
39
|
+
|
|
40
|
+
- The importer supports standard SCIP `Index`, `Document`, `Occurrence`,
|
|
41
|
+
`SymbolInformation`, and `Relationship` fields needed for definitions,
|
|
42
|
+
references, source ranges, and relationships. Unknown protobuf fields are
|
|
43
|
+
skipped, but unsupported wire types and malformed ranges fail closed.
|
|
44
|
+
- Precision and coverage are bounded by the producer. Checked-in coverage is
|
|
45
|
+
npm-integrity-pinned `@sourcegraph/scip-typescript@0.4.0` over TypeScript. Its
|
|
46
|
+
emitted documents omit the optional language field, so the import report says
|
|
47
|
+
`unknown`; other conforming producers and languages are not certified by C84.
|
|
48
|
+
- The index mtime must be at least as new as every represented source file.
|
|
49
|
+
This is a conservative local freshness check, not a claim that the producer
|
|
50
|
+
indexed the exact Git commit or compiler configuration.
|
|
51
|
+
- An import replaces the prior SCIP tier as one snapshot. It does not merge
|
|
52
|
+
multiple SCIP files, watch an index, start a daemon, or provide live LSP.
|
|
53
|
+
Live LSP requires a separately approved roadmap item.
|
|
54
|
+
- SCIP local symbols are scoped by document. Relationship flags remain distinct
|
|
55
|
+
(`reference`, `implementation`, `type-definition`, or `definition`); only an
|
|
56
|
+
actual cross-file occurrence reference contributes a `scip_import` file edge.
|
|
57
|
+
- The checked-in replay is synthetic and authorizes no superiority,
|
|
58
|
+
production-readiness, trusted-distribution, or cross-platform claim.
|
|
59
|
+
|
|
60
|
+
The replay, verifier, raw results, and resource report live under
|
|
61
|
+
`benchmarks/evaluations/c84-scip-import/`; run `npm run verify:c84` entirely
|
|
62
|
+
offline to reproduce them.
|