# pymongo async Validation Report (Rust server) Generated 2026-08-19 — SecantusDB 0.6.0b12 vs pymongo f2103a95870a (`vendor/pymongo-tests/test/asynchronous/`). Run `uv run python -m invoke validate-pymongo-async --server rust` to refresh. This is the async-driver analogue of the R8 conformance gate: pymongo's native `AsyncMongoClient` suite pointed at the **Rust server**. ## Summary by test file | Test file | Passed | Failed | Errored | Skipped | Total | Pass rate | |---|---:|---:|---:|---:|---:|---:| | `test_bulk.py` | 34 | 0 | 0 | 4 | 38 | 100.0% | | `test_change_stream.py` | 97 | 0 | 0 | 58 | 155 | 100.0% | | `test_collation.py` | 16 | 0 | 0 | 0 | 16 | 100.0% | | `test_collection.py` | 85 | 2 | 0 | 4 | 91 | 97.7% | | `test_collection_management.py` | 7 | 0 | 0 | 0 | 7 | 100.0% | | `test_command_logging.py` | 22 | 0 | 0 | 14 | 36 | 100.0% | | `test_command_monitoring.py` | 31 | 0 | 0 | 7 | 38 | 100.0% | | `test_comment.py` | 3 | 0 | 0 | 0 | 3 | 100.0% | | `test_common.py` | 4 | 0 | 0 | 0 | 4 | 100.0% | | `test_crud_unified.py` | 301 | 0 | 0 | 185 | 486 | 100.0% | | `test_cursor.py` | 57 | 3 | 0 | 12 | 72 | 95.0% | | `test_custom_types.py` | 51 | 0 | 0 | 0 | 51 | 100.0% | | `test_database.py` | 35 | 0 | 0 | 1 | 36 | 100.0% | | `test_examples.py` | 18 | 0 | 0 | 2 | 20 | 100.0% | | `test_logger.py` | 4 | 0 | 0 | 2 | 6 | 100.0% | | `test_read_concern.py` | 6 | 0 | 0 | 0 | 6 | 100.0% | | `test_read_preferences.py` | 9 | 1 | 0 | 20 | 30 | 90.0% | | `test_run_command.py` | 16 | 0 | 0 | 5 | 21 | 100.0% | | `test_transactions_unified.py` | 92 | 0 | 0 | 172 | 264 | 100.0% | | `test_versioned_api_integration.py` | 38 | 0 | 0 | 5 | 43 | 100.0% | | **Overall** | **926** | **6** | **0** | **491** | **1423** | **99.4%** | ## Failures (6) First 30 failure node-ids for manual triage: ``` vendor/pymongo-tests/test/asynchronous/test_collection.py::AsyncTestCollection::test_index_hashed vendor/pymongo-tests/test/asynchronous/test_collection.py::AsyncTestCollection::test_index_text vendor/pymongo-tests/test/asynchronous/test_cursor.py::TestCursor::test_maxtime_ms_message vendor/pymongo-tests/test/asynchronous/test_cursor.py::TestCursor::test_to_list_csot_applied vendor/pymongo-tests/test/asynchronous/test_cursor.py::TestCursor::test_where vendor/pymongo-tests/test/asynchronous/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated ``` ## How this is generated **pymongo's async tests are run unmodified.** The submodule at `vendor/pymongo-tests/` is checked out at the pinned upstream tag with zero local edits. The integration is entirely external: the shared `pymongo_validation/plugin.py` starts an embedded Rust server (`_secantus_server.RustServer(storage_path=, port=0)`) (real on-disk WiredTiger) before pymongo's conftest is imported and writes the bound host/port into `DB_IP` + `DB_PORT` — the env vars pymongo's `helpers_shared.py` reads at import time, which the async `AsyncClientContext` also resolves from. Pytest then runs the in-scope paths from `pymongo_async_validation/include_paths.py` under `pytest-asyncio` (`asyncio_mode=auto`). Tests gated on replica-set / sharding / auth / TLS / encryption topology self-skip — those skips are honest gaps, not failures. The pass rate is a meaningful conformance number for SecantusDB's behaviour under pymongo's async driver, exercised the same way pymongo's own CI exercises a real `mongod`.