Beta v0.5.1b24 — 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.

  • 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).

  • Compound-index sort acceleration

    5 May 2026 · Joe Drumgoole

    Compound-index sort acceleration (v0.3.0a50).

  • Index-accelerated $lookup foreign-side

    5 May 2026 · Joe Drumgoole

    Index-accelerated $lookup foreign-side (v0.3.0a48).

  • Per-command RBAC against built-in MongoDB roles; geo work complete

    5 May 2026 · Joe Drumgoole

    Per-command RBAC against built-in MongoDB roles; geo work complete (v0.3.0a46).