Skip to content

LSQB: native ArcadeDB comparison lane - #48

Open
lvca wants to merge 13 commits into
querygraph:mainfrom
ArcadeData:arcadedb-lane
Open

lvca wants to merge 13 commits into
querygraph:mainfrom
ArcadeData:arcadedb-lane

Conversation

@lvca

@lvca lvca commented Oct 15, 2026

Copy link
Copy Markdown

Adds a native ArcadeDB comparison lane to the LSQB benchmark, modelled on the native Neo4j lane: same READY/GO isolated-process protocol, rotating W2/R10, 60-second coordinator deadline, the 9 LSQB queries plus the 13 attacks, frozen evidence bundles. It is not a Grust adapter and these are not LDBC Benchmark Results. Details in benchmarks/lsqb/ARCADEDB.md.

What is in it

  • grust-lsqb-arcadedb (feature arcadedb-native): a small built-in HTTP/1.1 client (no new dependency; the HTTP API is the only protocol used), the import (one streamed /api/v1/batch request into a database the run creates, Post and Comment as subtypes of Message that keep kind, created counts and node/edge totals checked, then ArcadeDB's Graph Analytical View built once inside the load budget), the READY/GO workers, the deadline-probe and recovery-probe.
  • Server-side cancellation after every sample: the worker tags its HTTP transaction session and statement with X-ArcadeDB-Query-Tag; from a separate connection the coordinator lists what still carries the tag (list queries tag <tag>, list transactions), terminates exactly that, and continues only when nothing with the tag is left, then RETURN 42. Each observation records the proof; the audit requires it.
  • run-native-arcadedb.py, validate-arcadedb-diagnostic.py, bundle-native-arcadedb.py: runner, audit and bundle, following the Neo4j ones (host preflight, internal network, 8 CPU / 6 GiB without swap, no exported credentials, pinned server per platform digest, CLIENT_PROFILES).
  • Dockerfile/Cargo.toml: the arcadedb-native feature and binary.

Qualified runs (ArcadeDB 26.10.2 pinned by digest, client cf18446882cd, Apple Silicon laptop on AC power, each run started after the host preflight passed)

264 of 264 samples at every scale (44 warm-ups, 220 measurements), no mismatch, timeout or error, cancellation verified on every sample, pinned audit passes.

Scale Load (import + view) q1-q9 medians slowest attack medians Bundle manifest SHA-256
example 0.4 s 1.2-1.3 ms a6 2.5 ms 9ee41977…
SF0.1 9.8 s 6.9-23.3 ms a2 106 ms, a1 37 ms 628db395…
SF0.3 27.7 s 16.4-76.8 ms a2 451 ms, a1 132 ms, a5 130 ms a69c419f…

Full hashes and probe results are in ARCADEDB.md; the bundles themselves are available for site admission.

Notes

  • benchmarks/lsqb/Cargo.lock on main (e981849) does not match the workspace any more (it pins turso 0.7.2, the workspace wants 0.8), so the Dockerfile's cargo build --locked stops with "cannot update the lock file" for every lane. This PR leaves the lock alone; the qualified client image was built from cf18446882cd with the lock refreshed by cargo (only turso and its dependencies move). Happy to add that refresh as a separate commit, or rebase once main has it.
  • The lane needs ArcadeDB 26.10.2 or later: the running-statement listing and termination over HTTP arrived in that release.

lvca and others added 13 commits October 10, 2026 08:20
…s, Docker runner)

Work in progress. Server-side cancellation proof is pending ArcadeData/arcadedb#9680;
until then every observation records cancellation_verified: false.
The audit checks counts, journal, rotating W2/R10 sampling and runtime records;
--require-cancellation (applied by the bundle) refuses runs until server-side
cancellation proof exists (ArcadeData/arcadedb#9680).
Tag each sample's transaction session and statement with
X-ArcadeDB-Query-Tag, then from a separate connection list and terminate
exactly that work (list queries / terminate query, list transactions /
terminate transaction) until none remains, before the RETURN 42 check.
Implement the targeted-termination recovery probe; the deadline probe
now requires the abandoned statement to be terminated. The audit
requires the proof on every observation (diagnostic schema v2).
Formatting only in the Rust sources. ARCADEDB.md records the W2/R10 runs
and probes on a server with ArcadeDB #9680, and that publication now
waits only for a release image containing it.
The 2026-10-10 snapshot runs Temurin 25 and contains ArcadeDB #9680.
Pinned by platform digest in the runner and the audit until 26.10.2,
cut from the same main, replaces it.
…n its client goes away and closes its session later
@lvca
lvca marked this pull request as ready for review October 15, 2026 21:04
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