Beta Past initial proving, but the Python API surface may still shift before 1.0. WiredTiger on-disk format is stable, but there's no migration tool yet — don't put production data here.

Blog

Updates, design notes, and deep dives from the SecantusDB project.

  • Java gauge widens to 60 integration tests — write-error semantics get straightened out

    10 May 2026 · Joe Drumgoole

    Summary: Java gauge widens to 60 integration tests, write-error semantics get straightened out (v0.5.0b2).

    The Java conformance gauge tripled in scope this release — from 19 tests across 5 driver-sync classes to 60 tests across 13 classes, including the unified-spec runners that exercise the wire-level command-logging / command-monitoring / connection-pool-logging protocols …

  • All five driver gauges are now genuine end-to-end SecantusDB tests

    10 May 2026 · Joe Drumgoole

    Summary: All five driver gauges are now genuine end-to-end SecantusDB tests (v0.5.0b1).

    Until this release, four of our five "validated against the official driver test suites" gauges weren't actually testing SecantusDB. The Java, Node, and Ruby gauges ran the drivers' own pure-code subsets — :bson:test, test/unit/, files …

  • v0.4.0b2: SecantusDB enters beta

    10 May 2026 · Joe Drumgoole

    Summary: SecantusDB graduates from alpha to beta. The pymongo conformance gauge sits at 100.0%, the cross-driver matrix now covers 15 features across mongosh, Go, Node, and Java, and the functional surface has filled in enough — real session tracking, multikey indexes, custom and cluster role bundles, noop oplog heartbeats, malformed-BSON …

  • Wire-protocol robustness, cross-driver session smokes, and a 100%-honest gauge

    9 May 2026 · Joe Drumgoole

    Summary: Malformed BSON in command bodies now elicits a BadValue reply instead of dropping the connection, sessions and cluster-role bundles get cross-driver smokes (mongosh + Node + Go + Java), and the pymongo conformance dashboard catches up to the gauge it was always passing — a clean 100.0% (v0.3.0a78).

    The wire …

  • Real session tracking, date densify, and a 100% pymongo gauge

    9 May 2026 · Joe Drumgoole

    Summary: Logical sessions are now real server-side state, $densify walks date ranges by week / day / hour / minute / second / millisecond, and the pymongo conformance gauge moves to a clean 100.0% (v0.3.0a77).

    startSession / endSessions / refreshSessions are no longer no-op stubs. A new thread-safe secantus.sessions.SessionRegistry tracks logical sessions …

  • Change-stream split events + four cluster role bundles

    9 May 2026 · Joe Drumgoole

    Summary: Opt-in splitEvent envelope on every change-stream event and four documented mongod cluster role bundles — clusterMonitor, clusterAdmin, backup, restore — join the built-in role set (v0.3.0a76).

    The splitLargeChangeStreamEvents option now stamps a splitEvent: {fragment: 1, of: 1} envelope on every change-stream event — insert, update, delete, replace, invalidate. Without the …

  • Multikey indexes: array fields are now IXSCAN-fast

    9 May 2026 · Joe Drumgoole

    Summary: Indexes on array-valued fields now use per-element entries, so {tags: "python"} against {tags: ["python", "go"]} lands at IXSCAN instead of falling back to a full collection scan (v0.3.0a75).

    Before v0.3.0a75, the moment any document on an indexed field carried an array value, SecantusDB flagged the …

  • Compound-index $lookup + Java smoke matrix

    8 May 2026 · Joe Drumgoole

    Summary: $lookup now exploits compound non-multikey indexes whose leading field matches foreignField, and the Java cross-driver smoke matrix is complete (v0.3.0a74).

    v0.3.0a74 widens $lookup's index-acceleration window. Previously the per-outer-doc IXSCAN path only fired when the foreign collection had a single-field index on foreignField exactly; otherwise …

  • SASLprep arrives: SCRAM-SHA-256 now Unicode-correct

    6 May 2026 · Joe Drumgoole

    Summary: SASLprep on SCRAM-SHA-256 — non-ASCII passwords now Unicode-normalised before PBKDF2 (v0.3.0a73).

    v0.3.0a73 brings SecantusDB's SCRAM-SHA-256 authentication into line with RFC 4013 by running passwords through SASLprep before they reach PBKDF2. The full stringprep pipeline lands: B.1 mapping (zero-width and other "to-nothing" code points stripped), NFKC …

  • Change streams emit createIndexes/dropIndexes; updateUser command

    5 May 2026 · Joe Drumgoole

    Change streams emit createIndexes/dropIndexes; updateUser command (v0.3.0a52).