motedb-python 0.14.0__tar.gz → 0.15.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. motedb_python-0.15.1/.github/ISSUE_TEMPLATE/bug_report.yml +73 -0
  2. motedb_python-0.15.1/.github/ISSUE_TEMPLATE/config.yml +11 -0
  3. motedb_python-0.15.1/.github/ISSUE_TEMPLATE/feature_request.yml +50 -0
  4. motedb_python-0.15.1/.github/ISSUE_TEMPLATE/install_problem.yml +64 -0
  5. motedb_python-0.15.1/.github/pull_request_template.md +29 -0
  6. motedb_python-0.15.1/.github/workflows/node-publish.yml +292 -0
  7. motedb_python-0.15.1/.github/workflows/release-smoke.yml +160 -0
  8. motedb_python-0.15.1/.github/workflows/site.yml +35 -0
  9. {motedb_python-0.14.0 → motedb_python-0.15.1}/CHANGELOG.md +180 -0
  10. motedb_python-0.15.1/CONTRIBUTING.md +111 -0
  11. {motedb_python-0.14.0 → motedb_python-0.15.1}/Cargo.lock +8 -1
  12. {motedb_python-0.14.0 → motedb_python-0.15.1}/Cargo.toml +5 -4
  13. {motedb_python-0.14.0 → motedb_python-0.15.1}/Makefile +16 -1
  14. {motedb_python-0.14.0 → motedb_python-0.15.1}/PKG-INFO +3 -3
  15. {motedb_python-0.14.0 → motedb_python-0.15.1}/README.md +16 -3
  16. motedb_python-0.15.1/RELEASE_NOTES.md +104 -0
  17. motedb_python-0.15.1/SECURITY.md +76 -0
  18. motedb_python-0.15.1/bindings/go/README.md +44 -0
  19. motedb_python-0.15.1/bindings/go/go.mod +3 -0
  20. motedb_python-0.15.1/bindings/go/motedb.go +266 -0
  21. motedb_python-0.15.1/bindings/go/motedb.h +27 -0
  22. motedb_python-0.15.1/bindings/go/motedb_test.go +290 -0
  23. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/Cargo.lock +9 -2
  24. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/Cargo.toml +1 -1
  25. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/e2e/e2e_workload.py +2 -0
  26. motedb_python-0.15.1/bindings/python/e2e/test_snapshot_export.py +82 -0
  27. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/src/lib.rs +37 -0
  28. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/01-quick-start.md +4 -1
  29. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/02-installation.md +15 -4
  30. motedb_python-0.15.1/docs/18-install-troubleshooting.md +169 -0
  31. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/README.md +4 -1
  32. motedb_python-0.15.1/docs/design/2026-10-file-layout-plan.md +180 -0
  33. motedb_python-0.15.1/docs/design/2026-10-file-layout.md +160 -0
  34. motedb_python-0.15.1/docs/design/2026-10-good-first-issues.md +177 -0
  35. motedb_python-0.15.1/docs/design/2026-10-industry-parity-plan.md +323 -0
  36. motedb_python-0.15.1/examples/file_layout_bench.rs +153 -0
  37. motedb_python-0.15.1/examples/probe_ckpt.rs +72 -0
  38. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/traj_spike.rs +5 -7
  39. {motedb_python-0.14.0 → motedb_python-0.15.1}/pyproject.toml +6 -2
  40. motedb_python-0.15.1/scripts/release_smoke.sh +242 -0
  41. motedb_python-0.15.1/site/index.html +18 -0
  42. motedb_python-0.15.1/site/llms-full.txt +70 -0
  43. motedb_python-0.15.1/site/llms.txt +41 -0
  44. motedb_python-0.15.1/site/robots.txt +22 -0
  45. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/api.rs +184 -19
  46. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/catalog/registry.rs +97 -12
  47. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/config.rs +7 -0
  48. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/core.rs +290 -229
  49. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/crud.rs +64 -92
  50. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/datasets.rs +4 -4
  51. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/helpers.rs +2 -1
  52. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/index_metadata.rs +50 -16
  53. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/indexes/timestamp.rs +106 -12
  54. motedb_python-0.15.1/src/database/meta_store.rs +344 -0
  55. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/mod.rs +2 -0
  56. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/persistence.rs +204 -6
  57. motedb_python-0.15.1/src/database/snapshot.rs +406 -0
  58. motedb_python-0.15.1/src/ffi.rs +533 -0
  59. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/btree.rs +66 -15
  60. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/mcap_import.rs +1 -1
  61. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/ast.rs +5 -0
  62. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/evaluator.rs +91 -94
  63. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/executor/join.rs +1 -11
  64. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/executor/mod.rs +132 -1277
  65. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/executor/scan.rs +4 -129
  66. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/parser.rs +72 -43
  67. motedb_python-0.15.1/src/storage/col_segment/manifest.rs +790 -0
  68. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/col_segment/mod.rs +1 -1
  69. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/col_segment/segment.rs +2 -2
  70. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/col_segment/store.rs +139 -35
  71. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/columnar/store.rs +6 -2
  72. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/lsm/blobstore.rs +44 -16
  73. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/txn/wal.rs +79 -57
  74. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_blob_type.rs +102 -0
  75. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_col_segment.rs +19 -21
  76. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_col_segment_fastpaths.rs +1 -1
  77. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_corruption_recovery.rs +11 -3
  78. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_datasets.rs +3 -3
  79. motedb_python-0.15.1/tests/test_file_layout.rs +284 -0
  80. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_fts_recovery_staleness.rs +17 -10
  81. motedb_python-0.15.1/tests/test_global_manifest.rs +488 -0
  82. motedb_python-0.15.1/tests/test_snapshot.rs +609 -0
  83. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_text_ts_search_semantics.rs +7 -0
  84. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_timeseries_semantics.rs +80 -0
  85. motedb_python-0.14.0/RELEASE_NOTES.md +0 -20
  86. motedb_python-0.14.0/src/ffi.rs +0 -110
  87. motedb_python-0.14.0/src/storage/col_segment/manifest.rs +0 -216
  88. {motedb_python-0.14.0 → motedb_python-0.15.1}/.cargo/config.toml +0 -0
  89. {motedb_python-0.14.0 → motedb_python-0.15.1}/.devcontainer/devcontainer.json +0 -0
  90. {motedb_python-0.14.0 → motedb_python-0.15.1}/.github/workflows/ci.yml +0 -0
  91. {motedb_python-0.14.0 → motedb_python-0.15.1}/.github/workflows/fuzz.yml +0 -0
  92. {motedb_python-0.14.0 → motedb_python-0.15.1}/.github/workflows/perf-gate.yml +0 -0
  93. {motedb_python-0.14.0 → motedb_python-0.15.1}/.github/workflows/publish.yml +0 -0
  94. {motedb_python-0.14.0 → motedb_python-0.15.1}/.github/workflows/python-wheels.yml +0 -0
  95. {motedb_python-0.14.0 → motedb_python-0.15.1}/.gitignore +0 -0
  96. {motedb_python-0.14.0 → motedb_python-0.15.1}/.zcode/plans/plan-sess_abb2c954-05fb-477e-9d0a-3e22261e2449.md +0 -0
  97. {motedb_python-0.14.0 → motedb_python-0.15.1}/.zcode/plans/plan-sess_b5937a06-b7bf-4471-9756-dbf2787b263c.md +0 -0
  98. {motedb_python-0.14.0 → motedb_python-0.15.1}/LICENSE +0 -0
  99. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/README.md +0 -0
  100. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/README.md +0 -0
  101. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/adversarial_verify.py +0 -0
  102. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/bench_edge.py +0 -0
  103. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/compete_bench.py +0 -0
  104. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/compete_fts_industry.py +0 -0
  105. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/compete_scale.py +0 -0
  106. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/compete_spatial_ts.py +0 -0
  107. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/compete_vec_industry.py +0 -0
  108. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/compete_writes.py +0 -0
  109. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/fts_probe_once.py +0 -0
  110. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/perf_ab.py +0 -0
  111. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/perf_overall.py +0 -0
  112. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/prof_ann.py +0 -0
  113. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/prof_fts.py +0 -0
  114. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/prof_insert.py +0 -0
  115. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/prof_point.py +0 -0
  116. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/prof_real.py +0 -0
  117. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/prof_scale.py +0 -0
  118. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/prof_scale_vec.py +0 -0
  119. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/prof_vec_parallel.py +0 -0
  120. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/resource_bench.py +0 -0
  121. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/resource_bench_2026-09_profile.json +0 -0
  122. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/resource_bench_v0.10.0.json +0 -0
  123. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/spatial_eval.py +0 -0
  124. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/text_eval.py +0 -0
  125. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/ts_eval.py +0 -0
  126. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/bench/vector_recall_eval.py +0 -0
  127. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/build.rs +0 -0
  128. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/e2e/test_durability_kwarg.py +0 -0
  129. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/licenses/LICENSE +0 -0
  130. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/scripts/build_wheel.sh +0 -0
  131. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/tests/data/demo.mcap +0 -0
  132. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/tests/test_backup.py +0 -0
  133. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/tests/test_crash_recovery.py +0 -0
  134. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/tests/test_e2e_cli.py +0 -0
  135. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/tests/test_e2e_functional.py +0 -0
  136. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/tests/test_feature_selfcheck.py +0 -0
  137. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/tests/test_fetch_arrays.py +0 -0
  138. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/tests/test_fuzz_bigtable.py +0 -0
  139. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/tests/test_fuzz_differential.py +0 -0
  140. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/tests/test_insert_arrays.py +0 -0
  141. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/tests/test_mcap_import.py +0 -0
  142. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/tests/test_parallel_ab.py +0 -0
  143. {motedb_python-0.14.0 → motedb_python-0.15.1}/bindings/python/tests/test_smoke.py +0 -0
  144. {motedb_python-0.14.0 → motedb_python-0.15.1}/deny.toml +0 -0
  145. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/03-sql-operations.md +0 -0
  146. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/04-batch-operations.md +0 -0
  147. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/05-transactions.md +0 -0
  148. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/06-indexes-overview.md +0 -0
  149. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/07-column-index.md +0 -0
  150. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/08-vector-index.md +0 -0
  151. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/09-text-index.md +0 -0
  152. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/10-spatial-index.md +0 -0
  153. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/11-timestamp-index.md +0 -0
  154. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/12-performance.md +0 -0
  155. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/13-data-types.md +0 -0
  156. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/14-api-reference.md +0 -0
  157. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/15-best-practices.md +0 -0
  158. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/16-faq.md +0 -0
  159. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/17-hybrid-arrow.md +0 -0
  160. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/benchmark_methodology.md +0 -0
  161. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/design/2026-10-embodied-roadmap.md +0 -0
  162. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/design/2026-10-traj-spike.md +0 -0
  163. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/paper/README.md +0 -0
  164. {motedb_python-0.14.0 → motedb_python-0.15.1}/docs/paper/motedb.tex +0 -0
  165. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/bench_300k.rs +0 -0
  166. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/bench_autocommit_lock.rs +0 -0
  167. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/bench_disk.rs +0 -0
  168. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/bench_exec_only.rs +0 -0
  169. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/bench_insert_engine.rs +0 -0
  170. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/bench_layer.rs +0 -0
  171. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/bench_memory.rs +0 -0
  172. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/bench_multimodal_vs_competitors.rs +0 -0
  173. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/bench_point_read.rs +0 -0
  174. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/bench_profile_hot.rs +0 -0
  175. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/bench_scaling.rs +0 -0
  176. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/bench_stability.rs +0 -0
  177. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/bench_vs_sqlite.rs +0 -0
  178. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/corruption_fuzz.rs +0 -0
  179. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/crud.rs +0 -0
  180. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/differential_fuzz.rs +0 -0
  181. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/gen_test_bag.rs +0 -0
  182. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/hello_world.rs +0 -0
  183. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/join_differential_fuzz.rs +0 -0
  184. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/logging.rs +0 -0
  185. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/perf_smoke.rs +0 -0
  186. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/probe_filter_decomp.rs +0 -0
  187. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/probe_jemalloc.rs +0 -0
  188. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/probe_memory_source.rs +0 -0
  189. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/probe_tail_latency.rs +0 -0
  190. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/text_rank_probe.rs +0 -0
  191. {motedb_python-0.14.0 → motedb_python-0.15.1}/examples/vector_recall_real.rs +0 -0
  192. {motedb_python-0.14.0 → motedb_python-0.15.1}/licenses/LICENSE +0 -0
  193. {motedb_python-0.14.0 → motedb_python-0.15.1}/python/motedb/__init__.py +0 -0
  194. {motedb_python-0.14.0 → motedb_python-0.15.1}/scripts/Dockerfile.e2e +0 -0
  195. {motedb_python-0.14.0 → motedb_python-0.15.1}/scripts/compete.sh +0 -0
  196. {motedb_python-0.14.0 → motedb_python-0.15.1}/scripts/docker_e2e.sh +0 -0
  197. {motedb_python-0.14.0 → motedb_python-0.15.1}/scripts/repro_point_query_gap.sh +0 -0
  198. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/bin/motedb-cli.rs +0 -0
  199. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/cache/mod.rs +0 -0
  200. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/cache/row_cache.rs +0 -0
  201. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/catalog/mod.rs +0 -0
  202. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/doctor.rs +0 -0
  203. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/indexes/column.rs +0 -0
  204. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/indexes/dashmap_migration.md +0 -0
  205. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/indexes/ioctree.rs +0 -0
  206. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/indexes/mod.rs +0 -0
  207. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/indexes/text.rs +0 -0
  208. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/indexes/vector.rs +0 -0
  209. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/mem_buffer.rs +0 -0
  210. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/pk_cache.rs +0 -0
  211. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/table.rs +0 -0
  212. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/timeseries.rs +0 -0
  213. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/database/transaction.rs +0 -0
  214. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/distance/cosine.rs +0 -0
  215. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/distance/euclidean.rs +0 -0
  216. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/distance/mod.rs +0 -0
  217. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/error.rs +0 -0
  218. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/btree_generic.rs +0 -0
  219. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/builder.rs +0 -0
  220. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/cached_index.rs +0 -0
  221. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/column_value.rs +0 -0
  222. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/fresh_graph.rs +0 -0
  223. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/ioctree/leaf_store.rs +0 -0
  224. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/ioctree/mod.rs +0 -0
  225. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/ioctree/node.rs +0 -0
  226. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/ioctree/persistence.rs +0 -0
  227. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/ioctree/search.rs +0 -0
  228. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/mod.rs +0 -0
  229. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/primary_key.rs +0 -0
  230. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/text_dictionary.rs +0 -0
  231. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/text_encoding.rs +0 -0
  232. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/text_fts.rs +0 -0
  233. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/text_query.rs +0 -0
  234. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/text_types.rs +0 -0
  235. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/tokenizers.rs +0 -0
  236. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/vamana/config.rs +0 -0
  237. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/vamana/disk_graph.rs +0 -0
  238. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/vamana/diskann_index.rs +0 -0
  239. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/vamana/mod.rs +0 -0
  240. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/vamana/pruner.rs +0 -0
  241. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/vamana/sq8.rs +0 -0
  242. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/index/vamana/sq8_vectors.rs +0 -0
  243. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/lib.rs +0 -0
  244. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/platform_io.rs +0 -0
  245. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/executor/agg.rs +0 -0
  246. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/join/hash_join.rs +0 -0
  247. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/join/index_join.rs +0 -0
  248. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/join/mod.rs +0 -0
  249. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/lexer.rs +0 -0
  250. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/mod.rs +0 -0
  251. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/optimizer.rs +0 -0
  252. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/row_converter.rs +0 -0
  253. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/token.rs +0 -0
  254. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/sql/vector_exec.rs +0 -0
  255. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/checksum.rs +0 -0
  256. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/col_segment/merge.rs +0 -0
  257. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/colbatch.rs +0 -0
  258. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/columnar/column_encoding.rs +0 -0
  259. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/columnar/config.rs +0 -0
  260. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/columnar/gorilla.rs +0 -0
  261. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/columnar/mod.rs +0 -0
  262. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/columnar/segment.rs +0 -0
  263. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/columnar/segment_manager.rs +0 -0
  264. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/columnar/write_buffer.rs +0 -0
  265. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/file_manager.rs +0 -0
  266. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/lsm/bloom.rs +0 -0
  267. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/lsm/columnar.rs +0 -0
  268. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/lsm/compaction.rs +0 -0
  269. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/lsm/engine.rs +0 -0
  270. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/lsm/memtable.rs +0 -0
  271. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/lsm/merging_iterator.rs +0 -0
  272. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/lsm/mod.rs +0 -0
  273. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/lsm/sstable.rs +0 -0
  274. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/lsm/unified_memtable.rs +0 -0
  275. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/manifest/manifest.rs +0 -0
  276. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/manifest/mod.rs +0 -0
  277. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/manifest/version.rs +0 -0
  278. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/mod.rs +0 -0
  279. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/storage/row_format.rs +0 -0
  280. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/txn/coordinator.rs +0 -0
  281. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/txn/lock_manager.rs +0 -0
  282. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/txn/mod.rs +0 -0
  283. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/txn/mvcc.rs +0 -0
  284. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/txn/recovery.rs +0 -0
  285. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/txn/version_store.rs +0 -0
  286. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/types/comp_sum.rs +0 -0
  287. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/types/mod.rs +0 -0
  288. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/types/spatial.rs +0 -0
  289. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/types/table.rs +0 -0
  290. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/types/tensor.rs +0 -0
  291. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/types/text.rs +0 -0
  292. {motedb_python-0.14.0 → motedb_python-0.15.1}/src/types/timestamp.rs +0 -0
  293. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/acid_test.rs +0 -0
  294. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_2m.rs +0 -0
  295. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_acid.rs +0 -0
  296. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_batch_ops.rs +0 -0
  297. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_compare.rs +0 -0
  298. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_comprehensive.rs +0 -0
  299. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_concurrent.rs +0 -0
  300. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_index_ops.rs +0 -0
  301. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_multimodal.rs +0 -0
  302. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_multimodal_full.rs +0 -0
  303. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_multimodal_ops.rs +0 -0
  304. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_perf_report.rs +0 -0
  305. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_quick_baseline.rs +0 -0
  306. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_release.rs +0 -0
  307. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_report.rs +0 -0
  308. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_resource.rs +0 -0
  309. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_sql_queries.rs +0 -0
  310. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_timeseries_index.rs +0 -0
  311. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_v060_report.rs +0 -0
  312. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_vs_sqlite_100k.rs +0 -0
  313. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/bench_vs_sqlite_v05.rs +0 -0
  314. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/common/mod.rs +0 -0
  315. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/durability_probe.rs +0 -0
  316. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/fts_probe.rs +0 -0
  317. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/perf_test.rs +0 -0
  318. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/repro_multirow_update_fts.rs +0 -0
  319. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/repro_point_gap.rs +0 -0
  320. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/stress_300k.rs +0 -0
  321. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/stress_test.rs +0 -0
  322. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_acid_audit.rs +0 -0
  323. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_acid_comprehensive.rs +0 -0
  324. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_advanced_hunt.rs +0 -0
  325. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_api_correctness.rs +0 -0
  326. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_asof_join.rs +0 -0
  327. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_auto_checkpoint_segments.rs +0 -0
  328. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_backup.rs +0 -0
  329. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_btree_integrity.rs +0 -0
  330. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt.rs +0 -0
  331. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt2.rs +0 -0
  332. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt3.rs +0 -0
  333. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt4.rs +0 -0
  334. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt5.rs +0 -0
  335. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt6.rs +0 -0
  336. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt7.rs +0 -0
  337. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v10.rs +0 -0
  338. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v100.rs +0 -0
  339. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v101.rs +0 -0
  340. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v11.rs +0 -0
  341. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v12.rs +0 -0
  342. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v13.rs +0 -0
  343. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v14.rs +0 -0
  344. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v15.rs +0 -0
  345. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v16.rs +0 -0
  346. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v17_cte.rs +0 -0
  347. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v18.rs +0 -0
  348. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v19.rs +0 -0
  349. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v2.rs +0 -0
  350. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v20.rs +0 -0
  351. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v21.rs +0 -0
  352. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v22.rs +0 -0
  353. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v23.rs +0 -0
  354. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v24.rs +0 -0
  355. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v25.rs +0 -0
  356. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v26.rs +0 -0
  357. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v27.rs +0 -0
  358. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v28.rs +0 -0
  359. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v29.rs +0 -0
  360. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v3.rs +0 -0
  361. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v30.rs +0 -0
  362. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v31.rs +0 -0
  363. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v32.rs +0 -0
  364. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v33.rs +0 -0
  365. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v34.rs +0 -0
  366. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v35.rs +0 -0
  367. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v36.rs +0 -0
  368. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v38.rs +0 -0
  369. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v39.rs +0 -0
  370. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v4.rs +0 -0
  371. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v40.rs +0 -0
  372. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v43.rs +0 -0
  373. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v45.rs +0 -0
  374. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v48.rs +0 -0
  375. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v49.rs +0 -0
  376. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v5.rs +0 -0
  377. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v50.rs +0 -0
  378. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v51.rs +0 -0
  379. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v52.rs +0 -0
  380. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v53.rs +0 -0
  381. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v54.rs +0 -0
  382. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v55.rs +0 -0
  383. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v56.rs +0 -0
  384. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v57.rs +0 -0
  385. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v58.rs +0 -0
  386. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v59.rs +0 -0
  387. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v6.rs +0 -0
  388. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v60.rs +0 -0
  389. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v61.rs +0 -0
  390. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v62.rs +0 -0
  391. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v63.rs +0 -0
  392. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v64.rs +0 -0
  393. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v65.rs +0 -0
  394. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v66.rs +0 -0
  395. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v67.rs +0 -0
  396. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v68.rs +0 -0
  397. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v69.rs +0 -0
  398. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v7.rs +0 -0
  399. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v70.rs +0 -0
  400. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v71.rs +0 -0
  401. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v72.rs +0 -0
  402. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v73.rs +0 -0
  403. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v74.rs +0 -0
  404. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v75.rs +0 -0
  405. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v76.rs +0 -0
  406. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v77.rs +0 -0
  407. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v78.rs +0 -0
  408. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v79.rs +0 -0
  409. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v8.rs +0 -0
  410. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v80.rs +0 -0
  411. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v81.rs +0 -0
  412. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v82.rs +0 -0
  413. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v83.rs +0 -0
  414. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v84.rs +0 -0
  415. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v85.rs +0 -0
  416. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v86.rs +0 -0
  417. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v87.rs +0 -0
  418. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v88.rs +0 -0
  419. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v89.rs +0 -0
  420. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v9.rs +0 -0
  421. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v90.rs +0 -0
  422. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v91.rs +0 -0
  423. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v92.rs +0 -0
  424. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v93.rs +0 -0
  425. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v94.rs +0 -0
  426. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v95.rs +0 -0
  427. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v96.rs +0 -0
  428. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v97.rs +0 -0
  429. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v98.rs +0 -0
  430. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_bug_hunt_v99.rs +0 -0
  431. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_columnar.rs +0 -0
  432. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_columnar_acid.rs +0 -0
  433. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_compact_storage.rs +0 -0
  434. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_compaction_integrity.rs +0 -0
  435. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_compiled_where_semantics.rs +0 -0
  436. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_comprehensive.rs +0 -0
  437. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_comprehensive_audit.rs +0 -0
  438. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_concurrent_sql_features.rs +0 -0
  439. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_concurrent_stress.rs +0 -0
  440. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_corruption_robustness.rs +0 -0
  441. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_crash_injection.rs +0 -0
  442. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_crash_recovery.rs +0 -0
  443. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_data_types.rs +0 -0
  444. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_db_path_hygiene.rs +0 -0
  445. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_deadlock_stress.rs +0 -0
  446. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_deep_edge.rs +0 -0
  447. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_delete_persist.rs +0 -0
  448. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_differential_correctness.rs +0 -0
  449. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_disk_bloat.rs +0 -0
  450. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_disk_usage.rs +0 -0
  451. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_doctor.rs +0 -0
  452. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_durability.rs +0 -0
  453. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_e2e_crash_and_stress.rs +0 -0
  454. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_edge_cases.rs +0 -0
  455. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_edge_semantics.rs +0 -0
  456. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_episodes.rs +0 -0
  457. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_executemany.rs +0 -0
  458. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_exists_subquery.rs +0 -0
  459. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_explain.rs +0 -0
  460. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_extreme_hunt.rs +0 -0
  461. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_fast_paths.rs +0 -0
  462. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_fuzz_sql_combinations.rs +0 -0
  463. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_groupby_first_query.rs +0 -0
  464. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_hybrid_search.rs +0 -0
  465. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_index_maintenance.rs +0 -0
  466. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_index_reopen.rs +0 -0
  467. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_index_robustness.rs +0 -0
  468. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_indexed_query_semantics.rs +0 -0
  469. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_insert_engine.rs +0 -0
  470. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_insert_explicit_fastpath.rs +0 -0
  471. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_insert_paths_index_maintenance.rs +0 -0
  472. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_insert_select.rs +0 -0
  473. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_ioctree.rs +0 -0
  474. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_isolation_levels.rs +0 -0
  475. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_join_count_fold.rs +0 -0
  476. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_knn_parallel.rs +0 -0
  477. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_large_rows.rs +0 -0
  478. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_m5_mines.rs +0 -0
  479. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_mcap_import.rs +0 -0
  480. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_memory_leak.rs +0 -0
  481. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_memory_linear.rs +0 -0
  482. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_multimodal.rs +0 -0
  483. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_multimodal_e2e.rs +0 -0
  484. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_mvcc_isolation.rs +0 -0
  485. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_mvcc_recovery.rs +0 -0
  486. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_no_bloat.rs +0 -0
  487. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_optimization_regression.rs +0 -0
  488. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_order_by_expr_keys.rs +0 -0
  489. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_parser_fuzz_regression.rs +0 -0
  490. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_performance_guarantees.rs +0 -0
  491. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_pk_change_semantics.rs +0 -0
  492. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_prepared_dml.rs +0 -0
  493. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_public_api.rs +0 -0
  494. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_query_equivalence.rs +0 -0
  495. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_range_count.rs +0 -0
  496. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_release_readiness.rs +0 -0
  497. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_repro12.rs +0 -0
  498. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_round12_optimizations.rs +0 -0
  499. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_round12b_edge.rs +0 -0
  500. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_round12c_e2e_bugs.rs +0 -0
  501. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_round13_bug_hunt.rs +0 -0
  502. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_row_api.rs +0 -0
  503. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_rrf_hybrid.rs +0 -0
  504. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_savepoint_window.rs +0 -0
  505. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_scalability.rs +0 -0
  506. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_scan_integrity.rs +0 -0
  507. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_semantic_edges.rs +0 -0
  508. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_spatial_index.rs +0 -0
  509. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_spatial_large_geometry.rs +0 -0
  510. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_spatial_sql_semantics.rs +0 -0
  511. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_sql_advanced.rs +0 -0
  512. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_sql_correctness.rs +0 -0
  513. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_sql_correctness_part2.rs +0 -0
  514. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_sql_ddl_features.rs +0 -0
  515. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_sql_errors_edges.rs +0 -0
  516. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_sql_functions.rs +0 -0
  517. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_sql_groupby.rs +0 -0
  518. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_sql_joins.rs +0 -0
  519. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_sql_scenarios.rs +0 -0
  520. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_storage_integrity.rs +0 -0
  521. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_stress.rs +0 -0
  522. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_stress_hunt.rs +0 -0
  523. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_timeseries_index.rs +0 -0
  524. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_timestamp_recovery.rs +0 -0
  525. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_transaction_semantics.rs +0 -0
  526. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_txn_ddl_and_nan_ordering.rs +0 -0
  527. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_update_perf.rs +0 -0
  528. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_upsert.rs +0 -0
  529. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_v050_features.rs +0 -0
  530. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_vec_m0.rs +0 -0
  531. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_vec_m4.rs +0 -0
  532. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_vector_column_read_paths.rs +0 -0
  533. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_vector_durability.rs +0 -0
  534. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_vector_index_recall.rs +0 -0
  535. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_vector_spatial_text.rs +0 -0
  536. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_vector_visibility.rs +0 -0
  537. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_wide_tables.rs +0 -0
  538. {motedb_python-0.14.0 → motedb_python-0.15.1}/tests/test_write_concurrency.rs +0 -0
@@ -0,0 +1,73 @@
1
+ name: Bug report
2
+ description: Something returns the wrong result, panics, corrupts data or hangs.
3
+ title: "[bug] "
4
+ labels: ["bug"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for the report. Install / import problems have their own template ("Installation problem").
10
+ Security-relevant bugs (crash from crafted input, path traversal, data loss): please use
11
+ private reporting instead — see SECURITY.md.
12
+ - type: input
13
+ id: version
14
+ attributes:
15
+ label: MoteDB version
16
+ description: "`cargo tree -i motedb`, `python -c \"import importlib.metadata as m; print(m.version('motedb-python'))\"`, or `node -p \"require('motedb/package.json').version\"`"
17
+ placeholder: "0.15.0"
18
+ validations:
19
+ required: true
20
+ - type: dropdown
21
+ id: surface
22
+ attributes:
23
+ label: Where you hit it
24
+ options:
25
+ - Rust crate
26
+ - Python (motedb-python)
27
+ - Node.js (motedb)
28
+ - Go binding
29
+ - motedb-cli
30
+ - SQL (any surface)
31
+ validations:
32
+ required: true
33
+ - type: input
34
+ id: platform
35
+ attributes:
36
+ label: Platform
37
+ placeholder: "macOS 15 arm64 / Ubuntu 24.04 x86_64 (glibc) / Alpine 3.20 (musl) / Windows 11 x64"
38
+ validations:
39
+ required: true
40
+ - type: textarea
41
+ id: what
42
+ attributes:
43
+ label: What happened
44
+ description: Actual behaviour, including the full error message or panic backtrace (`RUST_BACKTRACE=1`).
45
+ validations:
46
+ required: true
47
+ - type: textarea
48
+ id: expected
49
+ attributes:
50
+ label: What you expected
51
+ validations:
52
+ required: true
53
+ - type: textarea
54
+ id: repro
55
+ attributes:
56
+ label: Minimal reproduction
57
+ description: |
58
+ The smallest schema + statements (or code) that shows the problem. Starting from an empty
59
+ database is ideal. If it needs an existing database file, say whether you can share it.
60
+ render: sql
61
+ validations:
62
+ required: true
63
+ - type: textarea
64
+ id: logs
65
+ attributes:
66
+ label: Logs
67
+ description: "Output with `RUST_LOG=motedb=debug` (Rust) or the equivalent logger in your language, if relevant."
68
+ render: text
69
+ - type: textarea
70
+ id: config
71
+ attributes:
72
+ label: Configuration
73
+ description: "Preset (`for_edge` / `for_robotics` / `for_embodied` / default) and any overridden `DBConfig` fields, read-only container or not."
@@ -0,0 +1,11 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Questions & usage help
4
+ url: https://github.com/motedb/motedb/discussions/categories/q-a
5
+ about: "\"How do I…\", \"is this expected?\", schema design — ask in Discussions."
6
+ - name: Security vulnerability
7
+ url: https://github.com/motedb/motedb/security/advisories/new
8
+ about: Crash from crafted input, path traversal, silent data loss — report privately (see SECURITY.md).
9
+ - name: Show & tell
10
+ url: https://github.com/motedb/motedb/discussions/categories/show-and-tell
11
+ about: Built something on MoteDB? Robot, pipeline, benchmark — we would love to see it.
@@ -0,0 +1,50 @@
1
+ name: Feature request
2
+ description: A capability MoteDB should have — SQL syntax, an API, a format, a platform.
3
+ title: "[feat] "
4
+ labels: ["enhancement"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Not sure it fits? Open a [Discussion](https://github.com/motedb/motedb/discussions) first.
10
+ Out of scope by design (see `docs/design/`): distributed / clustered mode, a client-server daemon,
11
+ a visualization frontend, full DuckDB-level SQL parity.
12
+ - type: textarea
13
+ id: problem
14
+ attributes:
15
+ label: The problem
16
+ description: What you are trying to do and why the current engine makes it hard. Concrete data shapes (rows, dimensions, rates) help a lot.
17
+ validations:
18
+ required: true
19
+ - type: dropdown
20
+ id: scenario
21
+ attributes:
22
+ label: Scenario
23
+ options:
24
+ - On-robot / edge capture (power-fail safety, low memory)
25
+ - Training-data pipeline (MCAP / LeRobot / Parquet / DataLoader)
26
+ - Retrieval (vector / FTS / hybrid / trajectory)
27
+ - Time series / episodes / alignment (ASOF JOIN etc.)
28
+ - SQL surface / types
29
+ - SDK / bindings / platform support
30
+ - Tooling (CLI, doctor, MCP, observability)
31
+ - Other
32
+ validations:
33
+ required: true
34
+ - type: textarea
35
+ id: proposal
36
+ attributes:
37
+ label: Proposed shape
38
+ description: The SQL or API you would like to write. Pseudocode is fine.
39
+ render: sql
40
+ - type: textarea
41
+ id: alternatives
42
+ attributes:
43
+ label: Alternatives considered
44
+ description: What you do today instead (another tool, a workaround), and why it falls short.
45
+ - type: checkboxes
46
+ id: help
47
+ attributes:
48
+ label: Contribution
49
+ options:
50
+ - label: I am willing to implement this with guidance.
@@ -0,0 +1,64 @@
1
+ name: Installation problem
2
+ description: pip / npm / cargo install fails, or the module does not load.
3
+ title: "[install] "
4
+ labels: ["install"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Please read [docs/18-install-troubleshooting.md](https://github.com/motedb/motedb/blob/main/docs/18-install-troubleshooting.md)
10
+ first — the package names differ per registry (`pip install motedb-python`, `npm install motedb`,
11
+ `cargo add motedb`) and most reports are covered there.
12
+ - type: dropdown
13
+ id: lang
14
+ attributes:
15
+ label: Language
16
+ options:
17
+ - Python (pip install motedb-python)
18
+ - Node.js (npm install motedb)
19
+ - Rust (cargo add motedb)
20
+ - Go (bindings/go)
21
+ validations:
22
+ required: true
23
+ - type: input
24
+ id: version
25
+ attributes:
26
+ label: Version you tried to install
27
+ placeholder: "0.15.0"
28
+ validations:
29
+ required: true
30
+ - type: input
31
+ id: platform
32
+ attributes:
33
+ label: OS / architecture / libc
34
+ description: "`uname -a` (or `ver` on Windows). On Linux say glibc or musl (Alpine)."
35
+ placeholder: "Linux 6.8 aarch64, Debian 12 (glibc 2.36) / Alpine 3.20 (musl) / macOS 15 arm64 / Windows 11 x64"
36
+ validations:
37
+ required: true
38
+ - type: input
39
+ id: runtime
40
+ attributes:
41
+ label: Runtime version
42
+ description: "`python -V && python -m pip --version` / `node -v && npm -v` / `rustc -V && cargo -V`"
43
+ validations:
44
+ required: true
45
+ - type: textarea
46
+ id: command
47
+ attributes:
48
+ label: Exact command
49
+ render: shell
50
+ validations:
51
+ required: true
52
+ - type: textarea
53
+ id: output
54
+ attributes:
55
+ label: Full output
56
+ description: Everything the command printed, unedited. For Node loader errors include `npm ls | grep motedb-`.
57
+ render: text
58
+ validations:
59
+ required: true
60
+ - type: textarea
61
+ id: env
62
+ attributes:
63
+ label: Environment details
64
+ description: "Container / CI image, proxy or private registry mirror, `--no-optional` / `--omit=optional`, pnpm/yarn, virtualenv/conda, anything non-default."
@@ -0,0 +1,29 @@
1
+ <!-- Thanks! Keep the PR focused: one behaviour change per PR. -->
2
+
3
+ ## What
4
+
5
+ <!-- One or two sentences: what changes and why. Link the issue / discussion / design note. -->
6
+
7
+ ## How
8
+
9
+ <!-- The approach, and anything a reviewer should look at first (a tricky invariant, a lock order, a format change). -->
10
+
11
+ ## Checklist
12
+
13
+ - [ ] Tests: new behaviour has a test; a bug fix has a regression test that failed before.
14
+ - [ ] `cargo fmt --check` and `cargo test --lib --all-features` pass locally.
15
+ - [ ] Touched suites pass: `cargo test --test <suite>` (and `CI=1 cargo test --workspace` if the change is broad).
16
+ - [ ] Storage format / WAL / recovery touched → migration test added, `docs/design/2026-10-file-layout.md` rules respected, crash tests run.
17
+ - [ ] SQL surface changed → `README.md` *SQL Support* and `docs/` updated; fuzz template / differential test extended where applicable.
18
+ - [ ] Engine capability added → wired through FFI + Python + Node (+ Go) or the gap is called out below.
19
+ - [ ] New dependency → passes `cargo deny check`, feature-gated if not needed by edge builds.
20
+ - [ ] `CHANGELOG.md` entry under the upcoming version.
21
+ - [ ] No `println!`/`eprintln!` in library code (use the `log` facade macros).
22
+
23
+ ## Performance
24
+
25
+ <!-- Delete if not relevant. Otherwise: `make compete-quick` JSON attached, or "perf gate unchanged". No ad-hoc numbers. -->
26
+
27
+ ## Not in this PR
28
+
29
+ <!-- Follow-ups you deliberately left out, so reviewers do not ask for them. -->
@@ -0,0 +1,292 @@
1
+ name: Node SDK publish (npm)
2
+
3
+ # Multi-platform prebuilt napi binaries → npmjs.org (unscoped):
4
+ # motedb (main, pure JS loader) + one platform package per target:
5
+ # motedb-darwin-arm64 / -darwin-x64 / -linux-x64-gnu / -linux-arm64-gnu /
6
+ # -win32-x64-msvc
7
+ # Triggers on v* tags (publish) and PRs touching the binding (build-only).
8
+ # 🔑 Publishing needs the NPM_TOKEN repository secret (an npmjs.org automation
9
+ # token with publish rights on the motedb* packages). The publish job fails
10
+ # fast with a clear message when it is missing.
11
+ # musl (Alpine) targets: the Alpine-container build step below is wired up but
12
+ # the two matrix entries stay commented out until a PR run has proven them —
13
+ # `publish` needs every matrix job green, so an unproven target must not be
14
+ # able to block a release. Enable them together with the matching
15
+ # package.json targets/optionalDependencies.
16
+
17
+ on:
18
+ push:
19
+ tags: ["v*"]
20
+ pull_request:
21
+ paths:
22
+ - "bindings/node/**"
23
+ - ".github/workflows/node-publish.yml"
24
+ workflow_dispatch:
25
+
26
+ concurrency:
27
+ group: node-publish-${{ github.ref }}
28
+ cancel-in-progress: true
29
+
30
+ permissions:
31
+ contents: write
32
+ id-token: write
33
+ packages: write
34
+
35
+ jobs:
36
+ build:
37
+ strategy:
38
+ fail-fast: false
39
+ matrix:
40
+ include:
41
+ - os: macos-latest # arm64
42
+ target: aarch64-apple-darwin
43
+ # x64-macOS via CROSS-COMPILE on the arm64 runner — macos-13
44
+ # (Intel) runners are retiring and queue for an hour+; rust
45
+ # cross-compiles x86_64-apple-darwin natively from arm64.
46
+ - os: macos-latest # arm64 → cross x64
47
+ target: x86_64-apple-darwin
48
+ - os: ubuntu-latest # x64 gnu
49
+ target: x86_64-unknown-linux-gnu
50
+ - os: ubuntu-24.04-arm
51
+ target: aarch64-unknown-linux-gnu
52
+ # musl: GitHub runners are glibc, so these build in the napi-rs
53
+ # Alpine image (same recipe as the napi-rs project template; the
54
+ # image carries the aarch64-linux-musl cross toolchain). Commented
55
+ # out until proven by a PR run — see the header note.
56
+ # - os: ubuntu-latest
57
+ # target: x86_64-unknown-linux-musl
58
+ # docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
59
+ # - os: ubuntu-latest
60
+ # target: aarch64-unknown-linux-musl
61
+ # docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
62
+ - os: windows-latest
63
+ target: x86_64-pc-windows-msvc
64
+ runs-on: ${{ matrix.os }}
65
+ steps:
66
+ - uses: actions/checkout@v4
67
+
68
+ - uses: actions/setup-node@v4
69
+ with:
70
+ node-version: 22
71
+
72
+ - uses: dtolnay/rust-toolchain@stable
73
+ if: ${{ !matrix.docker }}
74
+ with:
75
+ targets: ${{ matrix.target }}
76
+
77
+ - uses: Swatinem/rust-cache@v2
78
+ if: ${{ !matrix.docker }}
79
+ with:
80
+ workspaces: bindings/node
81
+ key: ${{ matrix.target }}
82
+
83
+ - name: Install napi CLI
84
+ if: ${{ !matrix.docker }}
85
+ working-directory: bindings/node
86
+ run: npm install --no-save @napi-rs/cli@3.10.8
87
+
88
+ - name: Build (napi layout)
89
+ if: ${{ !matrix.docker }}
90
+ working-directory: bindings/node
91
+ shell: bash
92
+ run: |
93
+ set -e
94
+ ARGS=(--release --platform --target ${{ matrix.target }} --js false --dts false)
95
+ npx napi build "${ARGS[@]}"
96
+
97
+ - name: Build (napi layout, musl in Alpine container)
98
+ if: ${{ matrix.docker }}
99
+ uses: addnab/docker-run-action@v3
100
+ with:
101
+ image: ${{ matrix.docker }}
102
+ options: -v ${{ github.workspace }}:/build -w /build/bindings/node -e CARGO_TERM_COLOR=always
103
+ run: |
104
+ set -e
105
+ # 容器自带 Node 18, 而 @napi-rs/cli 的依赖树 (@inquirer/core) 已要求
106
+ # Node≥20 (styleText) 且 --no-save 无锁文件每次拉最新 — 曾于 2026-10-20
107
+ # 上游漂移打破构建。装固定版本的官方 musl Node, 消除漂移。
108
+ NODE_ARCH=$(uname -m); [ "$NODE_ARCH" = "x86_64" ] && NODE_ARCH=x64
109
+ NODE_VER=v22.14.0
110
+ wget -qO- "https://nodejs.org/dist/$NODE_VER/node-$NODE_VER-linux-$NODE_ARCH-musl.tar.xz" \
111
+ | tar xJ -C /usr/local --strip-components=1
112
+ node -v | grep -Eq '^v2[2-9]' || { echo "node upgrade failed: $(node -v)"; exit 1; }
113
+ rustup target add ${{ matrix.target }}
114
+ if [ "${{ matrix.target }}" = "aarch64-unknown-linux-musl" ]; then
115
+ # zstd-sys compiles C: point cc + the linker at the image's cross toolchain.
116
+ export CC_aarch64_unknown_linux_musl=aarch64-linux-musl-gcc
117
+ export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-musl-gcc
118
+ fi
119
+ npm install --no-save @napi-rs/cli@3.10.8
120
+ npx napi build --release --platform --target ${{ matrix.target }} --js false --dts false
121
+ if [ "${{ matrix.target }}" = "x86_64-unknown-linux-musl" ]; then
122
+ node smoke_ci.js
123
+ fi
124
+
125
+ - name: Smoke (JS loader)
126
+ if: matrix.target == 'aarch64-apple-darwin' || matrix.target == 'x86_64-unknown-linux-gnu'
127
+ working-directory: bindings/node
128
+ shell: bash
129
+ # smoke_ci.js is committed (also reused by scripts/release_smoke.sh);
130
+ # it requires './index.js' FILE-relative, so run it from the package dir.
131
+ run: node smoke_ci.js
132
+
133
+ - name: Upload binding artifact
134
+ uses: actions/upload-artifact@v4
135
+ with:
136
+ name: bindings-${{ matrix.target }}
137
+ path: bindings/node/*.node
138
+ if-no-files-found: error
139
+
140
+ package:
141
+ needs: build
142
+ runs-on: ubuntu-latest
143
+ steps:
144
+ - uses: actions/checkout@v4
145
+ - uses: actions/setup-node@v4
146
+ with:
147
+ node-version: 22
148
+ - name: Install napi CLI
149
+ working-directory: bindings/node
150
+ run: npm install --no-save @napi-rs/cli@3.10.8
151
+ - name: Create npm dirs
152
+ working-directory: bindings/node
153
+ run: npx napi create-npm-dirs
154
+ - uses: actions/download-artifact@v4
155
+ with:
156
+ path: bindings/node/artifacts
157
+ - name: Place binaries into npm dirs
158
+ working-directory: bindings/node
159
+ shell: bash
160
+ # 🔑 Deterministic placement (napi artifacts misbehaves with
161
+ # cross-compiled targets): match each downloaded .node against the
162
+ # platform package's "main" field, copy, then verify completeness.
163
+ run: |
164
+ set -e
165
+ for d in artifacts/bindings-*; do
166
+ node_file=$(ls "$d"/*.node 2>/dev/null | head -1 || true)
167
+ [ -n "$node_file" ] || { echo "no .node in $d"; ls -la "$d"; exit 1; }
168
+ base=$(basename "$node_file")
169
+ placed=0
170
+ for pkg in npm/*/; do
171
+ main=$(jq -r .main "${pkg}package.json")
172
+ if [ "$main" = "$base" ]; then
173
+ cp "$node_file" "$pkg"
174
+ echo "placed $base -> $pkg"
175
+ placed=1
176
+ fi
177
+ done
178
+ [ "$placed" = 1 ] || { echo "no package wants $base"; exit 1; }
179
+ done
180
+ missing=0
181
+ for pkg in npm/*/; do
182
+ main=$(jq -r .main "${pkg}package.json")
183
+ [ -f "$pkg/$main" ] || { echo "MISSING $pkg/$main"; missing=1; }
184
+ done
185
+ [ "$missing" = 0 ] || exit 1
186
+ ls -R npm | head -40
187
+ - name: Dry-run publish (structure validation only)
188
+ if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
189
+ working-directory: bindings/node
190
+ shell: bash
191
+ run: |
192
+ set -e
193
+ # pre-publish performs REAL npm publishes, so staging (PRs) only
194
+ # validates each platform package with npm publish --dry-run.
195
+ for d in npm/*/; do
196
+ (cd "$d" && npm publish --dry-run --access public) || exit 1
197
+ done
198
+ npm pack --dry-run
199
+
200
+ publish:
201
+ needs: [build, package]
202
+ # workflow_dispatch 允许在 npm 反垃圾拦截后从 main 手动慢速重发 (无需新标签)
203
+ if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch'
204
+ runs-on: ubuntu-latest
205
+ steps:
206
+ - uses: actions/checkout@v4
207
+ - uses: actions/setup-node@v4
208
+ with:
209
+ node-version: 22
210
+ registry-url: https://registry.npmjs.org
211
+ - name: Install napi CLI
212
+ working-directory: bindings/node
213
+ run: npm install --no-save @napi-rs/cli@3.10.8
214
+ - name: Create npm dirs
215
+ working-directory: bindings/node
216
+ run: npx napi create-npm-dirs
217
+ - uses: actions/download-artifact@v4
218
+ with:
219
+ path: bindings/node/artifacts
220
+ - name: Place binaries into npm dirs
221
+ working-directory: bindings/node
222
+ shell: bash
223
+ run: |
224
+ set -e
225
+ for d in artifacts/bindings-*; do
226
+ node_file=$(ls "$d"/*.node 2>/dev/null | head -1 || true)
227
+ [ -n "$node_file" ] || { echo "no .node in $d"; ls -la "$d"; exit 1; }
228
+ base=$(basename "$node_file")
229
+ placed=0
230
+ for pkg in npm/*/; do
231
+ main=$(jq -r .main "${pkg}package.json")
232
+ if [ "$main" = "$base" ]; then
233
+ cp "$node_file" "$pkg"
234
+ echo "placed $base -> $pkg"
235
+ placed=1
236
+ fi
237
+ done
238
+ [ "$placed" = 1 ] || { echo "no package wants $base"; exit 1; }
239
+ done
240
+ missing=0
241
+ for pkg in npm/*/; do
242
+ main=$(jq -r .main "${pkg}package.json")
243
+ [ -f "$pkg/$main" ] || { echo "MISSING $pkg/$main"; missing=1; }
244
+ done
245
+ [ "$missing" = 0 ] || exit 1
246
+ - name: Check NPM_TOKEN is configured
247
+ env:
248
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
249
+ run: |
250
+ if [ -z "$NPM_TOKEN" ]; then
251
+ echo "::error::NPM_TOKEN repository secret is not set — cannot publish to npmjs.org. Create an automation token at https://www.npmjs.com/settings/~/tokens and add it under Settings → Secrets → Actions."
252
+ exit 1
253
+ fi
254
+ - name: Publish platform packages + root
255
+ # 🔑 Plain `npm publish` per package (platform packages first, then the
256
+ # root loader whose optionalDependencies point at them). Auth comes
257
+ # from setup-node's .npmrc + NODE_AUTH_TOKEN. `napi pre-publish` is
258
+ # deliberately NOT used: it assumes a GitHub release flow we don't run.
259
+ # Idempotent + burst-safe: skips packages already on the registry
260
+ # (EPUBLISHCONFLICT would otherwise abort the loop on re-runs) and
261
+ # paces publishes ~3 min apart with retries — npm's anti-spam
262
+ # heuristics reject rapid-fire new-package creation from new accounts.
263
+ working-directory: bindings/node
264
+ env:
265
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
266
+ run: |
267
+ set -e
268
+ pub() {
269
+ local d="$1" name ver try
270
+ name=$(jq -r .name "$d/package.json")
271
+ ver=$(jq -r .version "$d/package.json")
272
+ # Compare the PINNED version, not mere existence: after a version
273
+ # bump the old package is on npm but this version is not, and
274
+ # skipping would leave root's optionalDependencies pointing at a
275
+ # version that never ships (E404 for every consumer).
276
+ if npm view "$name@$ver" version >/dev/null 2>&1; then
277
+ echo " $name@$ver already on npm — skip"; return 0
278
+ fi
279
+ for try in 1 2 3; do
280
+ echo "::group::publish $name (attempt $try)"
281
+ if (cd "$d" && npm publish --access public); then
282
+ echo "::endgroup::"; echo " published $name"; return 0
283
+ fi
284
+ echo "::endgroup::"
285
+ [ "$try" = 3 ] && break
286
+ echo " retry in 180s (npm anti-spam/rate heuristics)"; sleep 180
287
+ done
288
+ echo "::error::gave up publishing $name after 3 attempts"
289
+ return 1
290
+ }
291
+ for d in npm/*/; do pub "$d" || exit 1; sleep 90; done
292
+ pub . || exit 1
@@ -0,0 +1,160 @@
1
+ name: Release smoke (published packages)
2
+
3
+ # Post-publish gate. On every v* tag: wait until the three registries show
4
+ # the version, then `pip install` / `npm install` / `cargo add` it into
5
+ # throwaway environments on each platform and run the README examples
6
+ # (scripts/release_smoke.sh). A failure opens (or bumps) a tracking issue so
7
+ # a broken release is never silent. Runnable by hand for any version.
8
+ #
9
+ # This job installs the PUBLISHED artifacts — it does not build anything from
10
+ # the tree, so it only passes once publish.yml / python-wheels.yml /
11
+ # node-publish.yml have all landed for the same tag.
12
+
13
+ on:
14
+ push:
15
+ tags: ["v*"]
16
+ workflow_dispatch:
17
+ inputs:
18
+ version:
19
+ description: "Version to smoke (e.g. 0.15.0). Empty = the tag, else Cargo.toml."
20
+ required: false
21
+ default: ""
22
+ langs:
23
+ description: "Comma-separated subset of python,node,rust"
24
+ required: false
25
+ default: "python,node,rust"
26
+
27
+ permissions:
28
+ contents: read
29
+ issues: write
30
+
31
+ env:
32
+ # Registries lag their publish workflows by minutes; poll up to 30 min.
33
+ SMOKE_WAIT: "1800"
34
+
35
+ jobs:
36
+ resolve:
37
+ runs-on: ubuntu-latest
38
+ outputs:
39
+ version: ${{ steps.v.outputs.version }}
40
+ langs: ${{ steps.v.outputs.langs }}
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+ - id: v
44
+ shell: bash
45
+ run: |
46
+ v="${{ github.event.inputs.version }}"
47
+ if [ -z "$v" ]; then
48
+ if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
49
+ v="${GITHUB_REF_NAME#v}"
50
+ else
51
+ v="$(grep -m1 '^version = ' Cargo.toml | cut -d'"' -f2)"
52
+ fi
53
+ fi
54
+ l="${{ github.event.inputs.langs }}"
55
+ [ -n "$l" ] || l="python,node,rust"
56
+ echo "version=$v" >> "$GITHUB_OUTPUT"
57
+ echo "langs=$l" >> "$GITHUB_OUTPUT"
58
+ echo "smoking v$v ($l)"
59
+
60
+ python:
61
+ needs: resolve
62
+ if: contains(needs.resolve.outputs.langs, 'python')
63
+ strategy:
64
+ fail-fast: false
65
+ matrix:
66
+ os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest]
67
+ runs-on: ${{ matrix.os }}
68
+ steps:
69
+ - uses: actions/checkout@v4
70
+ - uses: actions/setup-python@v5
71
+ with:
72
+ python-version: "3.12"
73
+ - shell: bash
74
+ run: scripts/release_smoke.sh -v "${{ needs.resolve.outputs.version }}" -l python --wait "$SMOKE_WAIT"
75
+
76
+ node:
77
+ needs: resolve
78
+ if: contains(needs.resolve.outputs.langs, 'node')
79
+ strategy:
80
+ fail-fast: false
81
+ matrix:
82
+ os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest]
83
+ runs-on: ${{ matrix.os }}
84
+ steps:
85
+ - uses: actions/checkout@v4
86
+ - uses: actions/setup-node@v4
87
+ with:
88
+ node-version: 22
89
+ - shell: bash
90
+ run: scripts/release_smoke.sh -v "${{ needs.resolve.outputs.version }}" -l node --wait "$SMOKE_WAIT"
91
+
92
+ node-alpine:
93
+ # musl: the only place the motedb-linux-x64-musl platform package and the
94
+ # loader's libc detection get exercised end to end. Non-blocking until the
95
+ # musl platform packages are actually published (node-publish.yml has
96
+ # their matrix entries commented out pending a PR run) — until then this
97
+ # job is expected to fail at the loader and must not open an issue.
98
+ needs: resolve
99
+ if: contains(needs.resolve.outputs.langs, 'node')
100
+ continue-on-error: true
101
+ runs-on: ubuntu-latest
102
+ container: node:22-alpine
103
+ steps:
104
+ - run: apk add --no-cache bash curl git
105
+ - uses: actions/checkout@v4
106
+ - shell: bash
107
+ run: scripts/release_smoke.sh -v "${{ needs.resolve.outputs.version }}" -l node --wait "$SMOKE_WAIT"
108
+
109
+ rust:
110
+ needs: resolve
111
+ if: contains(needs.resolve.outputs.langs, 'rust')
112
+ runs-on: ubuntu-latest
113
+ steps:
114
+ - uses: actions/checkout@v4
115
+ - uses: dtolnay/rust-toolchain@stable
116
+ - shell: bash
117
+ run: scripts/release_smoke.sh -v "${{ needs.resolve.outputs.version }}" -l rust --wait "$SMOKE_WAIT"
118
+
119
+ report:
120
+ needs: [resolve, python, node, node-alpine, rust]
121
+ if: ${{ always() && contains(needs.*.result, 'failure') }}
122
+ runs-on: ubuntu-latest
123
+ steps:
124
+ - uses: actions/github-script@v7
125
+ env:
126
+ VERSION: ${{ needs.resolve.outputs.version }}
127
+ RESULTS: ${{ toJSON(needs) }}
128
+ with:
129
+ script: |
130
+ const version = process.env.VERSION;
131
+ const results = JSON.parse(process.env.RESULTS);
132
+ const { owner, repo } = context.repo;
133
+ const runUrl = `${context.serverUrl}/${owner}/${repo}/actions/runs/${context.runId}`;
134
+ const title = `Release smoke failed for v${version}`;
135
+ const table = Object.entries(results)
136
+ .filter(([name]) => name !== 'resolve')
137
+ .map(([name, r]) => `| ${name} | ${r.result} |`)
138
+ .join('\n');
139
+ const body = [
140
+ `The install-and-run smoke for the **published** v${version} packages failed.`,
141
+ '',
142
+ `Run: ${runUrl}`,
143
+ '',
144
+ '| job | result |', '|---|---|', table,
145
+ '',
146
+ 'Reproduce locally: `scripts/release_smoke.sh -v ' + version + '` (see docs/18-install-troubleshooting.md).',
147
+ 'Until this is green, users may be unable to install this version — fix forward with a patch release rather than re-tagging.',
148
+ ].join('\n');
149
+ const open = await github.paginate(github.rest.issues.listForRepo, {
150
+ owner, repo, state: 'open', per_page: 100,
151
+ });
152
+ const existing = open.find((i) => i.title === title && !i.pull_request);
153
+ if (existing) {
154
+ await github.rest.issues.createComment({
155
+ owner, repo, issue_number: existing.number,
156
+ body: `Failed again: ${runUrl}\n\n| job | result |\n|---|---|\n${table}`,
157
+ });
158
+ } else {
159
+ await github.rest.issues.create({ owner, repo, title, body });
160
+ }