Skip to content

Lagrange v0.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 31 Oct 14:16
· 428 commits to main since this release

Lagrange 0.4.0 — 2026-10-31 (experimental / alpha).

Scenario A (tidb-oltp-baseline) deep-stack throughput and latency optimization,
distributed scale-out, provenance separation, longitudinal metrics evolution,
and unified 5-node and Scenario C summary benchmark release completing epics
scenario-a-deep-stack-throughput-and-latency and
distributed-scaleout-and-provenance-benchmark-series (Slices 1–5):

Formation health at cut time: formation health: 0/20 passed (0%), 0 with a starved seed.

Added

  • Scenario C in-partition $O(1)$ micro-bucket feature rollups & epoch-watermarked lazy backfill (partition-feature-rollup-constants.js, partition-feature-rollup-store.js, epoch-lazy-feature-backfill.js, scenario-c-rollup-comparator.js):
    Maintains synchronous per-entity decomposable micro-buckets (1 s / 60 s) in $O(1)$ inside the partition leader apply path (584.2 dec/s on 3-node and 2420.0 dec/s on 5-node RF=3 across 0 ms, 100 ms, and 1000 ms SLAs with 0.0% stale reads), evaluates multi-window sliding rollups (15m, 30m) in $O(1)$ with 0.0 s backfill on decomposable window/weight changes, and performs epoch-watermarked lazy on-read cutover on hot entities plus bounded in-process background replay (0 B WAN traffic) for new raw attributes.
  • Locking-read bound parameter propagation & split-PK tuple resolution (sql-query-engine-select-execution.js, sql-locking-read-execution.js):
    Propagates bound params and queryOptions into executeLockingReadReservations,
    merges equality-bound WHERE PK columns with projected SELECT columns so both
    full-PK-in-WHERE (SELECT quantity FROM stock ... FOR UPDATE) and split-PK
    (SELECT order_id FROM new_order WHERE warehouse_id = ? AND district_id = ? FOR UPDATE)
    locking reads resolve canonical PK tuples in memory with 0 extra SELECT RPCs,
    and preserves orderBy, limit, and offset on any fallback PK query.
  • Coordinator participant-set deduplication & transient status skip (distributed-transaction-participant-set.js, sql-query-engine-transaction-persistence-methods.js, distributed-transaction-telemetry.js):
    Skips redundant persistAdmittedParticipantSet gateway mutations when the
    admitted participant_set_text is already persisted on tx.participantSetText
    (tracked via skippedParticipantSetMutations), and skips non-authoritative
    pre-RPC participant status writes (PREPARING, COMMITTING, ROLLING_BACK)
    while preserving ACTIVE, PREPARED evidence, COMMITTED, ROLLED_BACK,
    and FAILED.
  • Raft runtime proposal batching & durable batch telemetry (raft-rs-runtime-owner.js, raft-rs-durable-store.js):
    Coalesces concurrent propose commands arriving while a Raft group turn is in
    flight into a single drainReady cycle and tracks batchedEntryCount and
    multiEntryReadyCount in getDurableSyncStats().
  • Canonical row-key extraction, disjoint-commit generation advancement & $O(1)$ disjoint write staging (partition-participant-transaction-session.js, partition-participant-transaction-request.js, partition-participant-transaction-apply.js, partition-participant-transaction-staging.js):
    Extracts canonical PK row keys from INSERT column lists and UPDATE/DELETE
    WHERE clauses, advances session.generationBase at sealSession when
    intervening committed generations touched only disjoint row keys, cleans up
    prepared participant row keys on rollback/refusal/expiry, and validates
    disjoint-row staged writes directly in $O(1)$ (disjointDirectValidations).
  • Distributed scale-out & provenance benchmark series (#169–#173):
    Scenario B measurement provenance audit and reclassification (local-oracle-plus-network-model /
    contract-model-non-comparable) plus longitudinal Lagrange metrics evolution
    (lagrange-metrics-evolution.{md,html,svg}, Slice 1); 3-to-5-node RF=3
    partial replica-coverage (100% vs 60%) scale-out and Scenario A three-mode
    separation (scaleout-3to5-node-rf3-progress.{md,html,svg}, Slice 2); 5-node
    RF=3 partition granularity sweep across P=6, 15, 30, 60
    (partition-granularity-sweep-progress.{md,html,svg}, Slice 3); Scenario B
    network RTT crossover (0.2 ms to 30 ms) and working-set growth
    (scenario-b-rtt-working-set-crossover.{md,html,svg}, Slice 4); and live
    partition movement under load plus Scenario C 5x joint scaling and
    operating-boundary map (movement-and-scenario-c-scaling-progress.{md,html,svg},
    Slice 5).
  • Unified 5-node (RF=3) and Scenario C summary page statistics (0.3.3 & 0.4.0):
    Added 5-node RF=3 (lagrange-5node-rf3) and Scenario C (streaming-feature-risk-decision)
    statistics, charts, and multi-system tables directly to the benchmark summary
    landing page (docs/benchmarks/README.md, docs/benchmarks/index.html, and
    docs/benchmarks/comparative-overview.svg).

Docker images (linux/amd64, distroless):

Full history: CHANGELOG.md · process: RELEASE.md