knodin 0.8.2 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -13
- package/dist/bin/cli.js +248 -62
- package/dist/src/agent-events.js +128 -0
- package/dist/src/agent-hooks.js +156 -0
- package/dist/src/cli-model.js +16 -1
- package/dist/src/docs-sections.js +1 -0
- package/dist/src/engine/index.js +911 -55
- package/dist/src/init-progress-worker.js +4 -40
- package/dist/src/output-telemetry.js +8 -3
- package/dist/src/progress-worker-runtime.js +46 -0
- package/dist/src/repair-progress-worker.js +3 -40
- package/dist/src/resource-reachability.js +456 -0
- package/dist/src/response-budget.js +69 -65
- package/dist/src/session-telemetry.js +163 -0
- package/dist/src/tools/knodin-tools.js +12 -7
- package/docs/BEHAVIORAL-CONTRACT.md +47 -5
- package/docs/CLI.md +27 -0
- package/docs/COMPARISON.md +10 -0
- package/docs/DEMO.md +49 -0
- package/docs/INSTALLATION.md +11 -0
- package/docs/MCP.md +5 -0
- package/docs/TELEMETRY.md +19 -1
- package/docs/releases/0.8.3.md +47 -0
- package/docs/releases/0.8.4.md +22 -0
- package/package.json +14 -1
- package/roadmap/competitive-roadmap.md +115 -0
|
@@ -132,6 +132,85 @@ new items or strengthen existing ones; they do not reopen the archived roadmap.
|
|
|
132
132
|
| C94 | P1 | parked-external-evidence — 2026-08-06 (previous: blocked) | Make first use self-explanatory and demonstrable | C89, C90, C91 |
|
|
133
133
|
| C95 | P1 | implemented | Codify and replay the defensible behavioral contract | C3, C24, C83 |
|
|
134
134
|
| C96 | P2 | evaluated — deferred | Gate every new capability on a narrow outcome replay | C24, C93, C95 |
|
|
135
|
+
| C97 | P1 | evaluated — retained existing design | Reclaim idle semantic memory without changing one-process architecture | C46, C51, C80, C87 |
|
|
136
|
+
| C98 | P1 | implemented | Add bounded source-to-sink resource reachability | C2, C3, C8, C24, C78, C95 |
|
|
137
|
+
| C99 | P1 | implemented | Resolve bounded TypeScript dependency-injection wiring | C2, C3, C24, C95 |
|
|
138
|
+
| C100 | P1 | implemented | Prove bounded Salesforce Flow-to-Apex paths | C2, C3, C20, C23, C95, C96 |
|
|
139
|
+
| C101 | P1 | implemented | Strengthen contract-led positioning | C95, C97, C98, C99, C100 |
|
|
140
|
+
| C102 | P1 | implemented — opt-in observational evidence only | Add bounded Claude session context and adoption evidence | C3, C16, C61, C93, C95 |
|
|
141
|
+
|
|
142
|
+
### C98 — Bounded source-to-sink resource reachability
|
|
143
|
+
|
|
144
|
+
- Status: implemented
|
|
145
|
+
- Evidence: `benchmarks/evaluations/c98-resource-reachability/` freezes the strengthened eight-path C78 oracle and records 100% precision, 100% recall, deterministic ordering, and historical cold/warm/RSS measurements across three local repositories. The verifier independently replays correctness and its current sub-1-GB memory gate; portfolio timings remain descriptive rather than acceptance gates.
|
|
146
|
+
- Implementation: `query resource_reachability` performs cached, on-demand TS/JS analysis without persisted resource-flow tables. It recognizes literal `process.env` and `fs.readFileSync` sources, `console.log`, `fetch`, and `db.query` sinks, plus assignment, argument, return, and bounded recursive handoff.
|
|
147
|
+
- Bounds: maximum depth 6 and 100 paths. Results are static heuristics, never runtime reachability or exploitability proof; dynamic names, reflection, computed aliases, unsupported languages, cycles, truncation, continuation, coverage, and freshness remain explicit.
|
|
148
|
+
- Locality: no hosted service, authentication, credentials, source egress, network access, or production model is required.
|
|
149
|
+
|
|
150
|
+
### C99 — Bounded TypeScript dependency-injection wiring
|
|
151
|
+
|
|
152
|
+
- Status: implemented
|
|
153
|
+
- Evidence: `benchmarks/evaluations/c99-typescript-di/` records 100% precision and recall on its declared Inversify/tsyringe oracle, including an explicit ambiguous-token omission; `npm run verify:c99` rejects stale evidence or any missed/extra edge.
|
|
154
|
+
- Implementation: exact source-only `di_binding` and `di_resolution` references cover `bind().to`, `toSelf`, `register(useClass)`, `registerSingleton`, `@inject`, `get`, and `resolve`. Existing explain, impact, traversal, shortest-path, review, and architecture consumers reuse the persisted relationships.
|
|
155
|
+
- Known bounds: only source-proven framework imports, receivers, token declarations, and uniquely resolved implementations qualify. Multiple bindings, computed tokens, aliases, factories, runtime container modules, conditionals, and reflection remain explicit omissions rather than inferred edges.
|
|
156
|
+
|
|
157
|
+
### C100 — Bounded Salesforce Flow-to-Apex paths
|
|
158
|
+
|
|
159
|
+
- Status: implemented
|
|
160
|
+
- Evidence: `benchmarks/evaluations/c100-flow-apex-path/` records 100% precision and recall for one preregistered Salesforce DX Flow `actionCalls` to uniquely declared Apex `@InvocableMethod` boundary, including unannotated, missing, and overloaded negative cases. The paired missed-dependency replay improves from an imprecise file answer to a stable method identity with exact XML and Apex evidence.
|
|
161
|
+
- Implementation: Flow indexing persists an exact `flow_apex_action` method reference in addition to its compatible file topology. `query cross_substrate_path <from> <to>` requires both endpoints and returns only that supported substrate transition with stable identities, per-step substrates, extracted provenance, confidence, freshness, exact source evidence, truthful truncation/continuation, and explicit omissions.
|
|
162
|
+
- Known bounds: this is not a general path engine and does not support Terraform, dbt, arbitrary Salesforce metadata, runtime dispatch, namespaced packages, factories, aliases, or ambiguous/multiple Apex methods. One passing boundary and paired task do not establish broad cross-substrate or competitor superiority.
|
|
163
|
+
- Locality: the replay requires no Salesforce org, hosted service, authentication, credentials, network access, or source egress.
|
|
164
|
+
|
|
165
|
+
### C101 — Contract-led positioning closure
|
|
166
|
+
|
|
167
|
+
- Status: implemented
|
|
168
|
+
- Evidence: `benchmarks/evaluations/c101-contract-positioning/` and
|
|
169
|
+
`scripts/verify-c101.ts` source-bind the C97–C100 decisions, the behavioral
|
|
170
|
+
contract, public CLI/MCP declarations, positioning documents, and repository
|
|
171
|
+
stewardship instructions.
|
|
172
|
+
- Contract: eight adversarial mutations of actual production responses reject
|
|
173
|
+
resource/path stale evidence, continuation-free truncation, a truncated
|
|
174
|
+
response presented as complete, heuristic-to-exact promotion, DI source
|
|
175
|
+
removal, DI ambiguity, and a path omission retained beside a supported step.
|
|
176
|
+
Fixture-backed CLI and one-tool MCP calls return the same bounded resource and
|
|
177
|
+
Flow-to-Apex envelopes; DI reuses
|
|
178
|
+
existing explain/query/review/map surfaces rather than adding a discriminator.
|
|
179
|
+
- Positioning: value is less manual context assembly and fewer missed
|
|
180
|
+
dependencies; ROI's intended mechanism is fewer corrective round trips
|
|
181
|
+
without hosted-service, authentication, or source-egress overhead, while
|
|
182
|
+
C93's null two-task result authorizes no measured productivity claim;
|
|
183
|
+
tomorrow is `knodin init` plus the local CLI or single gateway; the secret
|
|
184
|
+
sauce is stable identity, source evidence, freshness, and truthful budgets
|
|
185
|
+
composed under one contract.
|
|
186
|
+
- Known bounds: C98 is a static TS/JS heuristic, C99 covers only its declared
|
|
187
|
+
Inversify/tsyringe patterns, C100 proves one Flow-to-Apex boundary, and C97
|
|
188
|
+
does not reclaim idle semantic RSS. The closure proves checked fixtures, not
|
|
189
|
+
runtime causality, arbitrary cross-substrate paths, broad framework coverage,
|
|
190
|
+
client/platform certification, or competitor superiority.
|
|
191
|
+
- Stewardship: pull requests invoke the full test matrix and Sonar analysis and
|
|
192
|
+
are therefore long and resource intensive. Related dependency-compatible
|
|
193
|
+
commits normally form one reasonably sized shared PR; assistants do not
|
|
194
|
+
auto-open per-item PRs, and unrelated changes are not bundled for size.
|
|
195
|
+
|
|
196
|
+
### C102 — Bounded Claude session context and adoption evidence
|
|
197
|
+
|
|
198
|
+
- Status: implemented — opt-in observational evidence only
|
|
199
|
+
- Priority: P1
|
|
200
|
+
- DependsOn: C3, C16, C61, C93, C95
|
|
201
|
+
- Evidence: `src/agent-hooks.ts`, `src/agent-events.ts`,
|
|
202
|
+
`src/session-telemetry.ts`, focused unit/CLI tests, and
|
|
203
|
+
`benchmarks/evaluations/c102-session-adoption/README.md`.
|
|
204
|
+
- Implementation: an explicit user-global Claude hook installer atomically
|
|
205
|
+
preserves unrelated settings and supports status, dry-run, and targeted
|
|
206
|
+
uninstall. SessionStart injects cached, freshness-aware orientation under
|
|
207
|
+
600 tokens, 8 KiB, and 12 items. Separate repository-local telemetry opt-in
|
|
208
|
+
records private lifecycle categories and extends the existing local report.
|
|
209
|
+
- Bounds: ordinary hooks prove neither task success nor why a follow-up turn
|
|
210
|
+
occurred. The dashboard labels corrective round trips unavailable, stores no
|
|
211
|
+
prompt/source/command/transcript/tool-output bodies, and authorizes no
|
|
212
|
+
productivity or superiority claim. Claude is the only supported client for
|
|
213
|
+
this adapter; the event model remains client-neutral for later evaluation.
|
|
135
214
|
|
|
136
215
|
## Roadmap completion contract
|
|
137
216
|
|
|
@@ -3709,6 +3788,42 @@ Evidence: `benchmarks/evaluations/c93-engineering-outcomes/verification.json`,
|
|
|
3709
3788
|
`contracts/behavior-contract-v1.json`, and
|
|
3710
3789
|
`benchmarks/evaluations/c95-behavior-contract/runner.ts`.
|
|
3711
3790
|
|
|
3791
|
+
### C97 — One-process semantic residency reclamation
|
|
3792
|
+
|
|
3793
|
+
- Status: evaluated — retained existing design
|
|
3794
|
+
- Priority: P1
|
|
3795
|
+
- Disposition: Evaluate
|
|
3796
|
+
- DependsOn: C46, C51, C80, C87
|
|
3797
|
+
- Touches: evaluation and decision evidence only; no runtime, status, API, or
|
|
3798
|
+
storage change.
|
|
3799
|
+
- What: test whether idle model/vector/HNSW eviction can make a repeatable OS-RSS
|
|
3800
|
+
guarantee while preserving Knodin's one-local-process architecture.
|
|
3801
|
+
- Evidence: `benchmarks/evaluations/c97-one-process-semantic-residency/` and
|
|
3802
|
+
`scripts/verify-c97.ts` bind 10-trial fresh-process measurements to the runner,
|
|
3803
|
+
engine, package, and embedding-test sources.
|
|
3804
|
+
|
|
3805
|
+
Decision: retain the current lazy local model and bounded generation-scoped
|
|
3806
|
+
caches. No in-process candidate repeatedly reclaimed both 32 MiB and 15% of its
|
|
3807
|
+
attributable semantic increment across two corpus tiers. ONNX disposal and
|
|
3808
|
+
allocator behavior were nondeterministic; `worker_threads` retained the shared
|
|
3809
|
+
native address space; q8 lacks the required C28 retrieval-equivalence replay;
|
|
3810
|
+
fp16 failed to initialize. Child-process isolation is explicitly rejected
|
|
3811
|
+
because it would violate the one-local-process product contract. Do not claim
|
|
3812
|
+
idle RSS reclamation from model disposal or cache clearing on this evidence.
|
|
3813
|
+
|
|
3814
|
+
Known limitations: resident semantic search retains a measurable one-process
|
|
3815
|
+
RSS cost after first use. Structural-first routing still avoids loading the model
|
|
3816
|
+
when evidence is sufficient, and decoded-vector/HNSW caches remain bounded and
|
|
3817
|
+
generation-invalidated. Reopen only with a portable allocator/runtime mechanism
|
|
3818
|
+
that passes the unchanged absolute, percentage, p95, retrieval, and 20-cycle
|
|
3819
|
+
gates.
|
|
3820
|
+
|
|
3821
|
+
Final-stack refresh: C101 reran the full C97 measurement after C98–C100 changed
|
|
3822
|
+
the shared engine. Some individual cache/ONNX trials crossed the memory
|
|
3823
|
+
threshold, but no production candidate passed all 10 trials; the retained
|
|
3824
|
+
one-process decision therefore remains unchanged. The refreshed raw artifact
|
|
3825
|
+
replaces the mutable C97 measurement file and `verify:c97` recomputes this gate.
|
|
3826
|
+
|
|
3712
3827
|
## Explicit non-goals from the GitNexus comparison
|
|
3713
3828
|
|
|
3714
3829
|
- Do not split knodin's gateway into one MCP schema per capability; the one-tool
|