Skip to content

Release/0.0.27 - #202

Merged
Levalicious merged 31 commits into
masterfrom
release/0.0.27
Jun 28, 2026
Merged

Levalicious merged 31 commits into
masterfrom
release/0.0.27

Conversation

@Levalicious

Copy link
Copy Markdown
Owner

No description provided.

github-actions Bot and others added 30 commits May 17, 2026 01:44
Bumps [@opentelemetry/semantic-conventions](https://github.com/open-telemetry/opentelemetry-js) from 1.40.0 to 1.41.1.
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@semconv/v1.40.0...semconv/v1.41.1)

---
updated-dependencies:
- dependency-name: "@opentelemetry/semantic-conventions"
  dependency-version: 1.41.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [eslint](https://github.com/eslint/eslint) from 10.3.0 to 10.4.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](eslint/eslint@v10.3.0...v10.4.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [qs](https://github.com/ljharb/qs) from 6.14.2 to 6.15.2.
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](ljharb/qs@v6.14.2...v6.15.2)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.15.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 29.4.9 to 29.4.11.
- [Release notes](https://github.com/kulshekhar/ts-jest/releases)
- [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md)
- [Commits](kulshekhar/ts-jest@v29.4.9...v29.4.11)

---
updated-dependencies:
- dependency-name: ts-jest
  dependency-version: 29.4.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 25.6.2 to 25.9.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 25.9.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.59.2 to 8.59.4.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.4/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.59.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.6 to 7.6.1.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.6.1/CHANGELOG.md)
- [Commits](protobufjs/protobuf.js@protobufjs-v7.5.6...protobufjs-v7.6.1)

---
updated-dependencies:
- dependency-name: protobufjs
  dependency-version: 7.6.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@grpc/grpc-js](https://github.com/grpc/grpc-node) from 1.14.3 to 1.14.4.
- [Release notes](https://github.com/grpc/grpc-node/releases)
- [Commits](https://github.com/grpc/grpc-node/compare/@grpc/grpc-js@1.14.3...@grpc/grpc-js@1.14.4)

---
updated-dependencies:
- dependency-name: "@grpc/grpc-js"
  dependency-version: 1.14.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…@opentelemetry/exporter-trace-otlp-grpc, @opentelemetry/resources, @opentelemetry/sdk-metrics and @opentelemetry/sdk-node

Bumps [@opentelemetry/core](https://github.com/open-telemetry/opentelemetry-js) to 2.8.0 and updates ancestor dependencies [@opentelemetry/core](https://github.com/open-telemetry/opentelemetry-js), [@opentelemetry/exporter-metrics-otlp-grpc](https://github.com/open-telemetry/opentelemetry-js), [@opentelemetry/exporter-trace-otlp-grpc](https://github.com/open-telemetry/opentelemetry-js), [@opentelemetry/resources](https://github.com/open-telemetry/opentelemetry-js), [@opentelemetry/sdk-metrics](https://github.com/open-telemetry/opentelemetry-js) and [@opentelemetry/sdk-node](https://github.com/open-telemetry/opentelemetry-js). These dependencies need to be updated together.


Updates `@opentelemetry/core` from 2.7.1 to 2.8.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@v2.7.1...v2.8.0)

Updates `@opentelemetry/exporter-metrics-otlp-grpc` from 0.218.0 to 0.219.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@experimental/v0.218.0...experimental/v0.219.0)

Updates `@opentelemetry/exporter-trace-otlp-grpc` from 0.218.0 to 0.219.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@experimental/v0.218.0...experimental/v0.219.0)

Updates `@opentelemetry/resources` from 2.7.1 to 2.8.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@v2.7.1...v2.8.0)

Updates `@opentelemetry/sdk-metrics` from 2.7.1 to 2.8.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@v2.7.1...v2.8.0)

Updates `@opentelemetry/sdk-node` from 0.218.0 to 0.219.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@experimental/v0.218.0...experimental/v0.219.0)

---
updated-dependencies:
- dependency-name: "@opentelemetry/core"
  dependency-version: 2.8.0
  dependency-type: indirect
- dependency-name: "@opentelemetry/exporter-metrics-otlp-grpc"
  dependency-version: 0.219.0
  dependency-type: direct:production
- dependency-name: "@opentelemetry/exporter-trace-otlp-grpc"
  dependency-version: 0.219.0
  dependency-type: direct:production
- dependency-name: "@opentelemetry/resources"
  dependency-version: 2.8.0
  dependency-type: direct:production
- dependency-name: "@opentelemetry/sdk-metrics"
  dependency-version: 2.8.0
  dependency-type: direct:production
- dependency-name: "@opentelemetry/sdk-node"
  dependency-version: 0.219.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [hono](https://github.com/honojs/hono) from 4.12.18 to 4.12.26.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](honojs/hono@v4.12.18...v4.12.26)

---
updated-dependencies:
- dependency-name: hono
  dependency-version: 4.12.26
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Replace the v1/v2 storage with a from-scratch pure-C graph store. The old
biscuit-derived free-list could double-free into a 1-node cycle and hang; v3
eliminates that by redesign (Cartesian-tree allocator, sized free, continuous
coalescing) rather than guarding against it.

native/
  memoryfile  v3 mmap arena + Cartesian-tree free allocator (zero live
              metadata); refuses non-v3 files
  stringtable interned, refcounted strings
  graph       entities/relations/observations, adjacency, persistent name
              index, BFS neighbors/find_path (best-effort + byte budget),
              POSIX-ERE search, MC pagerank + MERW psi, random walk, validate
  graphbind   N-API binding (the C store IS the DB)
  entity.h/schema.h  biscuit-style versioned records (X-macro lens chain)

server.ts is now a thin MCP shell over the C ops (pagination, sort/format,
NL-guard, walker-visit recording, tracing); src/store.ts wraps the binding.
Search is case-sensitive POSIX ERE (dialect surfaced in the no-match warning).

Migration (src/migrate.ts): logical-rebuild old v1/v2 -> v3 preserving
mtime/obsMtime/visits/psi/totals. Auto-migrates in place on open (ensureV3):
flock-serialized across detect+migrate so concurrent startups can't race or
empty-clobber; keeps a .premigrate backup. Validated on a copy of the live
67k-entity / 146k-relation KB (0 mismatches); proven safe under 4 concurrent
startups. Live files are only read, never the originals.

binding.gyp: graphstore target, no -lnode (fixes the Node 24 exit segfault),
-fno-math-errno (drops libm).

Tests: the existing jest suite passes UNMODIFIED; 168/168 (adds migrate.test).
native/Makefile builds the C fuzz/unit harnesses under ASan/UBSan with a
test-only double-free detector (MEMFILE_DOUBLE_FREE_CHECK) that is absent from
the shipped binary; clean across ~900k fuzz ops.

Remove dead JS ranking (pagerank.ts, merw.ts) -- now computed in C.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EfzTKfjTRRNQ828crWoJf1
…test

The find_path byte budget is enforced in C (graph_find_path_ex), so the V8
container-slot constants in server.ts were unused (no-unused-vars). The
native/bench/test_binding.cjs smoke test duplicated jest coverage and tripped
no-require-imports on a CommonJS file; the jest suite + C harnesses cover the
binding.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EfzTKfjTRRNQ828crWoJf1
tsconfig compiles tests/ (include ./**/*.ts) and the prepare hook runs tsc, so
the new test needs the explicit @jest/globals import the other tests already
use. Ambient globals aren't surfaced under CI's frozen-lockfile install (only
local npm @types/jest provided them), so tsc failed with TS2304/TS2593 on
describe/it/expect.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EfzTKfjTRRNQ828crWoJf1
…ency

The migrator read the old format via the old memoryfile.node, which CI/deploy
never build (binding.gyp only builds graphstore.node, and the old addon's source
became the v3 memoryfile.c -- it can't be rebuilt). That broke the CI test job
and, worse, the actual auto-migration for users on first v3 start.

readOldRaw parses the old .graph/.strings bytes directly (read-only; layout per
graphfile.ts), validated byte-for-byte against the old addon on a copy of the
live 67k-entity KB (0 mismatches, totals equal). The migrate test now migrates a
committed v2 fixture, so it needs no native old addon either.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EfzTKfjTRRNQ828crWoJf1
memfile v3: pure-C graph store, ops in C, transparent auto-migration
…velop/actions/checkout-7

Bump actions/checkout from 6 to 7
…lop/opentelemetry/semantic-conventions-1.41.1

Bump @opentelemetry/semantic-conventions from 1.40.0 to 1.41.1
…lop/eslint-10.4.0

Bump eslint from 10.3.0 to 10.4.0
…lop/ts-jest-29.4.11

Bump ts-jest from 29.4.9 to 29.4.11
…lop/types/node-25.9.1

Bump @types/node from 25.6.2 to 25.9.1
…lop/typescript-eslint-8.59.4

Bump typescript-eslint from 8.59.2 to 8.59.4
Per-op rdtsc microbenchmark for the v3 graph store:
- Adaptive sampling (riff RE=CV/sqrt(n) criterion, 2% target, batch-means),
  resolved in-run rather than persisted; auto-sizes iterations per op (~0.1s/run).
- Frequency-reference op so comparisons cancel cross-run CPU-turbo drift;
  median is the headline metric.

CI tooling, no committed baselines (nothing for git to churn):
- bench-compare: base-vs-head on one runner, freq-corrected median, median of
  N interleaved runs, soft-fail + PR comment (benchmark.yml).
- bench-aggregate + bench-creep: reference-normalized time-series on an orphan
  bench-history branch + slow-creep detector vs rolling baseline
  (benchmark-history.yml, on push to master).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EfzTKfjTRRNQ828crWoJf1
fc_graph.c: WP/ACSL proofs (memory-model-clean abstractions, fc_index idiom) of
the adjacency edge encoding that every traversal decodes.
- adj_pack / adj_pack_injective: the (target<<2)|dir packing is a lossless
  round-trip and injective for target<2^62, dir<4. Modeled arithmetically as
  target*4+dir (decode /4, %4 — bit-identical for these field widths); the
  literal bitwise form is opaque to WP's integer model, the same abstraction
  boundary fc_index uses for hash32.
- read_edges_model: iterating count 24-byte entries at adj+8+i*24 is memory-safe
  and terminating. 42/42 goals discharged by Alt-Ergo.

CI (proofs.yml, path-filtered to proof changes): opam frama-c + alt-ergo, runs
`make proofs`. scripts/run-proofs.sh gates the result — frama-c exits 0 even with
unproved goals, so it parses "Proved goals: P / T": clean files must be 100%,
fc_tree is safety-only (mf_fit_model termination needs an acyclicity measure, the
documented free-list-cycle frontier). Verified locally: fc_proofs 25/25,
fc_index 27/27, fc_graph 42/42, fc_tree 12/13.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EfzTKfjTRRNQ828crWoJf1
@Levalicious
Levalicious merged commit 4d9b485 into master Jun 28, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant