@feltdb/core 0.13.0 → 0.16.0

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 (300) hide show
  1. package/dist/agent-runtime.d.ts +64 -2
  2. package/dist/agent-runtime.d.ts.map +1 -1
  3. package/dist/agent-runtime.js +121 -11
  4. package/dist/agent-state.d.ts +68 -0
  5. package/dist/agent-state.d.ts.map +1 -1
  6. package/dist/agent-state.js +210 -12
  7. package/dist/agent.d.ts +10 -1
  8. package/dist/agent.d.ts.map +1 -1
  9. package/dist/agent.js +10 -1
  10. package/dist/build-identity.json +12 -4
  11. package/dist/cli/commands.js +214 -10
  12. package/dist/cli/publish-engine.js +116 -16
  13. package/dist/collection.d.ts +3 -1
  14. package/dist/collection.d.ts.map +1 -1
  15. package/dist/collection.js +33 -8
  16. package/dist/create/build-identity.json +12 -4
  17. package/dist/create/cli.js +1 -1
  18. package/dist/create/create.js +4 -6
  19. package/dist/create/managed-account.js +93 -35
  20. package/dist/create/package-versions.js +1 -1
  21. package/dist/create/server-source/Cargo.lock +8 -511
  22. package/dist/create/server-source/Cargo.toml +2 -13
  23. package/dist/create/server-source/crates/feltdb-client/Cargo.toml +1 -1
  24. package/dist/create/server-source/crates/feltdb-server/Cargo.toml +1 -1
  25. package/dist/create/server-source/crates/feltdb-server/README.md +6 -1
  26. package/dist/create/server-source/crates/feltdb-server/src/app_state.rs +9 -1
  27. package/dist/create/server-source/crates/feltdb-server/src/auth.rs +85 -25
  28. package/dist/create/server-source/crates/feltdb-server/src/backup.rs +4 -0
  29. package/dist/create/server-source/crates/feltdb-server/src/console_accounts.rs +1009 -0
  30. package/dist/create/server-source/crates/feltdb-server/src/control_authorization.rs +441 -0
  31. package/dist/create/server-source/crates/feltdb-server/src/identity.rs +68 -6
  32. package/dist/create/server-source/crates/feltdb-server/src/key_management.rs +355 -23
  33. package/dist/create/server-source/crates/feltdb-server/src/lib.rs +3 -0
  34. package/dist/create/server-source/crates/feltdb-server/src/main.rs +1134 -96
  35. package/dist/create/server-source/crates/feltdb-server/src/redaction.rs +208 -0
  36. package/dist/create/server-source/crates/feltdb-server/src/tenancy.rs +198 -19
  37. package/dist/create/server-source/crates/feltdb-server/tests/transaction_precondition_contract.rs +403 -0
  38. package/dist/create/server-source/crates/feltdb-wasm/Cargo.toml +1 -1
  39. package/dist/db.d.ts +75 -10
  40. package/dist/db.d.ts.map +1 -1
  41. package/dist/db.js +168 -29
  42. package/dist/deployment.d.ts +19 -0
  43. package/dist/deployment.d.ts.map +1 -1
  44. package/dist/deployment.js +38 -2
  45. package/dist/embedded-query.d.ts.map +1 -1
  46. package/dist/embedded-query.js +5 -4
  47. package/dist/embedded-transaction.d.ts +8 -4
  48. package/dist/embedded-transaction.d.ts.map +1 -1
  49. package/dist/embedded-transaction.js +55 -19
  50. package/dist/error-codes.d.ts +36 -2
  51. package/dist/error-codes.d.ts.map +1 -1
  52. package/dist/error-codes.js +50 -3
  53. package/dist/feltdb.d.ts +7 -0
  54. package/dist/feltdb.d.ts.map +1 -1
  55. package/dist/file-db.d.ts +27 -0
  56. package/dist/file-db.d.ts.map +1 -1
  57. package/dist/file-db.js +145 -7
  58. package/dist/http-client.d.ts +11 -3
  59. package/dist/http-client.d.ts.map +1 -1
  60. package/dist/http-client.js +27 -14
  61. package/dist/http-db.d.ts +43 -1
  62. package/dist/http-db.d.ts.map +1 -1
  63. package/dist/http-db.js +287 -59
  64. package/dist/index.js +1 -1
  65. package/dist/local-state-lock.d.ts +34 -0
  66. package/dist/local-state-lock.d.ts.map +1 -0
  67. package/dist/local-state-lock.js +225 -0
  68. package/dist/managed-recovery.d.ts +6 -0
  69. package/dist/managed-recovery.d.ts.map +1 -1
  70. package/dist/managed-recovery.js +9 -0
  71. package/dist/reactive-graph.d.ts +0 -3
  72. package/dist/reactive-graph.d.ts.map +1 -1
  73. package/dist/reactive-graph.js +11 -1
  74. package/dist/runtime-registry.d.ts +7 -2
  75. package/dist/runtime-registry.d.ts.map +1 -1
  76. package/dist/runtime-registry.js +2 -2
  77. package/dist/studio/components/index.js +1 -1
  78. package/dist/studio/{components-BSGmHfif.js → components-CJmzntBi.js} +2 -1
  79. package/dist/studio/index.js +1 -1
  80. package/dist/studio-app/assets/{feltdb_wasm-3hDngl1h.js → feltdb_wasm-DtybUY0q.js} +1 -1
  81. package/dist/studio-app/assets/feltdb_wasm_bg-DsgIUwaB.wasm +0 -0
  82. package/dist/studio-app/assets/index-C4OffsZl.js +37 -0
  83. package/dist/studio-app/index.html +1 -1
  84. package/dist/transaction.d.ts +27 -11
  85. package/dist/transaction.d.ts.map +1 -1
  86. package/dist/transaction.js +20 -14
  87. package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
  88. package/dist/wasm/package.json +1 -1
  89. package/dist/workload.d.ts +86 -6
  90. package/dist/workload.d.ts.map +1 -1
  91. package/dist/workload.js +51 -3
  92. package/dist/workspace/workspace-connection.d.ts.map +1 -1
  93. package/dist/workspace/workspace-connection.js +14 -3
  94. package/package.json +1 -1
  95. package/dist/create/server-source/crates/feltdb/Cargo.lock +0 -175
  96. package/dist/create/server-source/crates/feltdb/Cargo.toml +0 -102
  97. package/dist/create/server-source/crates/feltdb/LICENSE +0 -21
  98. package/dist/create/server-source/crates/feltdb/README.md +0 -75
  99. package/dist/create/server-source/crates/feltdb/benches/baselines/gate-13-redux.json +0 -370
  100. package/dist/create/server-source/crates/feltdb/benches/gate13_baseline.rs +0 -589
  101. package/dist/create/server-source/crates/feltdb/benches/gate13_phase_7_1_release_economics.rs +0 -247
  102. package/dist/create/server-source/crates/feltdb/benches/gate_13_redux.rs +0 -440
  103. package/dist/create/server-source/crates/feltdb/benches/gate_13_regression_runner.rs +0 -275
  104. package/dist/create/server-source/crates/feltdb/benches/gate_14a_concurrent_writer_scaling.rs +0 -381
  105. package/dist/create/server-source/crates/feltdb/benches/gate_14a_production_admission_revalidation.rs +0 -467
  106. package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc2_admission_contract.rs +0 -489
  107. package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc_root_cause.rs +0 -281
  108. package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync1_queued_prototype.rs +0 -606
  109. package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync_economics.rs +0 -531
  110. package/dist/create/server-source/crates/feltdb/benches/gate_14b_causal_backlog_scaling.rs +0 -462
  111. package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_contract_test.rs +0 -505
  112. package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_scaling.rs +0 -484
  113. package/dist/create/server-source/crates/feltdb/benches/gate_14d_combined_dimension_scaling.rs +0 -758
  114. package/dist/create/server-source/crates/feltdb/benches/phase_7_1_2_optimization_benchmark.rs +0 -421
  115. package/dist/create/server-source/crates/feltdb/benches/phase_7_1_3_crossover_analysis.rs +0 -329
  116. package/dist/create/server-source/crates/feltdb/src/acceptance_tests.rs +0 -1705
  117. package/dist/create/server-source/crates/feltdb/src/acquisition.rs +0 -286
  118. package/dist/create/server-source/crates/feltdb/src/admission.rs +0 -185
  119. package/dist/create/server-source/crates/feltdb/src/admission_contract_tests.rs +0 -507
  120. package/dist/create/server-source/crates/feltdb/src/adversarial_transport.rs +0 -539
  121. package/dist/create/server-source/crates/feltdb/src/agent_state.rs +0 -320
  122. package/dist/create/server-source/crates/feltdb/src/agent_transition_contract.rs +0 -1545
  123. package/dist/create/server-source/crates/feltdb/src/analytics.rs +0 -521
  124. package/dist/create/server-source/crates/feltdb/src/application.rs +0 -2674
  125. package/dist/create/server-source/crates/feltdb/src/application_runtime.rs +0 -1070
  126. package/dist/create/server-source/crates/feltdb/src/authority.rs +0 -479
  127. package/dist/create/server-source/crates/feltdb/src/authority_failover.rs +0 -847
  128. package/dist/create/server-source/crates/feltdb/src/authorization.rs +0 -1030
  129. package/dist/create/server-source/crates/feltdb/src/authorization_security_tests.rs +0 -1122
  130. package/dist/create/server-source/crates/feltdb/src/bin/feltdb-authority-client.rs +0 -32
  131. package/dist/create/server-source/crates/feltdb/src/bin/feltdb-authority.rs +0 -19
  132. package/dist/create/server-source/crates/feltdb/src/bin/feltdb_node.rs +0 -1474
  133. package/dist/create/server-source/crates/feltdb/src/capabilities/mod.rs +0 -8
  134. package/dist/create/server-source/crates/feltdb/src/capabilities/search.rs +0 -418
  135. package/dist/create/server-source/crates/feltdb/src/capabilities/vector.rs +0 -482
  136. package/dist/create/server-source/crates/feltdb/src/capability.rs +0 -903
  137. package/dist/create/server-source/crates/feltdb/src/cardinality_diagnostics.rs +0 -263
  138. package/dist/create/server-source/crates/feltdb/src/cardinality_endpoint.rs +0 -77
  139. package/dist/create/server-source/crates/feltdb/src/causal_backlog_bound.rs +0 -496
  140. package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier.rs +0 -2574
  141. package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier_phase_7_1.rs +0 -212
  142. package/dist/create/server-source/crates/feltdb/src/concurrency_fuzzing.rs +0 -422
  143. package/dist/create/server-source/crates/feltdb/src/consistency_contract.rs +0 -445
  144. package/dist/create/server-source/crates/feltdb/src/content_distribution.rs +0 -465
  145. package/dist/create/server-source/crates/feltdb/src/convergence.rs +0 -634
  146. package/dist/create/server-source/crates/feltdb/src/crash_atomic_boundary.rs +0 -427
  147. package/dist/create/server-source/crates/feltdb/src/crash_injection.rs +0 -376
  148. package/dist/create/server-source/crates/feltdb/src/crash_recovery_tests.rs +0 -365
  149. package/dist/create/server-source/crates/feltdb/src/cron.rs +0 -294
  150. package/dist/create/server-source/crates/feltdb/src/dedup_bound_investigation.rs +0 -483
  151. package/dist/create/server-source/crates/feltdb/src/distributed_indexing.rs +0 -477
  152. package/dist/create/server-source/crates/feltdb/src/distributed_tests.rs +0 -1003
  153. package/dist/create/server-source/crates/feltdb/src/distributed_transactions.rs +0 -1334
  154. package/dist/create/server-source/crates/feltdb/src/durability_guarantees.rs +0 -368
  155. package/dist/create/server-source/crates/feltdb/src/durable_dedup_set.rs +0 -231
  156. package/dist/create/server-source/crates/feltdb/src/durable_operation_identity.rs +0 -482
  157. package/dist/create/server-source/crates/feltdb/src/durable_operation_log.rs +0 -203
  158. package/dist/create/server-source/crates/feltdb/src/durable_sync.rs +0 -317
  159. package/dist/create/server-source/crates/feltdb/src/equality_index.rs +0 -595
  160. package/dist/create/server-source/crates/feltdb/src/execution.rs +0 -426
  161. package/dist/create/server-source/crates/feltdb/src/in_process_transport.rs +0 -214
  162. package/dist/create/server-source/crates/feltdb/src/indexing.rs +0 -776
  163. package/dist/create/server-source/crates/feltdb/src/lib.rs +0 -7274
  164. package/dist/create/server-source/crates/feltdb/src/managed_cas_tests.rs +0 -234
  165. package/dist/create/server-source/crates/feltdb/src/materialization.rs +0 -184
  166. package/dist/create/server-source/crates/feltdb/src/metrics.rs +0 -266
  167. package/dist/create/server-source/crates/feltdb/src/multi_node_convergence.rs +0 -310
  168. package/dist/create/server-source/crates/feltdb/src/multi_operation_transaction.rs +0 -736
  169. package/dist/create/server-source/crates/feltdb/src/observability.rs +0 -379
  170. package/dist/create/server-source/crates/feltdb/src/operation.rs +0 -290
  171. package/dist/create/server-source/crates/feltdb/src/operation_algebra.rs +0 -439
  172. package/dist/create/server-source/crates/feltdb/src/operation_log.rs +0 -349
  173. package/dist/create/server-source/crates/feltdb/src/p1_application_atomicity.rs +0 -332
  174. package/dist/create/server-source/crates/feltdb/src/p1_atomicity_acceptance.rs +0 -718
  175. package/dist/create/server-source/crates/feltdb/src/partition_reconciliation.rs +0 -487
  176. package/dist/create/server-source/crates/feltdb/src/peer_registry.rs +0 -166
  177. package/dist/create/server-source/crates/feltdb/src/permutation_scheduler.rs +0 -289
  178. package/dist/create/server-source/crates/feltdb/src/persistence_reality.rs +0 -566
  179. package/dist/create/server-source/crates/feltdb/src/phase1b_acceptance.rs +0 -3391
  180. package/dist/create/server-source/crates/feltdb/src/phase1c1_acceptance.rs +0 -203
  181. package/dist/create/server-source/crates/feltdb/src/phase1c2_acceptance.rs +0 -261
  182. package/dist/create/server-source/crates/feltdb/src/phase1c3_acceptance.rs +0 -502
  183. package/dist/create/server-source/crates/feltdb/src/phase1c_atomicity_proof.rs +0 -216
  184. package/dist/create/server-source/crates/feltdb/src/phase5_integration.rs +0 -303
  185. package/dist/create/server-source/crates/feltdb/src/phase5_scenarios.rs +0 -323
  186. package/dist/create/server-source/crates/feltdb/src/phase6_adversarial_scenarios.rs +0 -531
  187. package/dist/create/server-source/crates/feltdb/src/phase6_convergence_validator.rs +0 -406
  188. package/dist/create/server-source/crates/feltdb/src/phase6_persistence.rs +0 -436
  189. package/dist/create/server-source/crates/feltdb/src/phase_1c_real_tcp.rs +0 -387
  190. package/dist/create/server-source/crates/feltdb/src/phase_2a_failures.rs +0 -378
  191. package/dist/create/server-source/crates/feltdb/src/phase_2b_network.rs +0 -359
  192. package/dist/create/server-source/crates/feltdb/src/phase_2c_cascading.rs +0 -372
  193. package/dist/create/server-source/crates/feltdb/src/phase_3_durability.rs +0 -404
  194. package/dist/create/server-source/crates/feltdb/src/phase_4_baseline.rs +0 -376
  195. package/dist/create/server-source/crates/feltdb/src/phase_5_soak.rs +0 -461
  196. package/dist/create/server-source/crates/feltdb/src/policy_evaluation.rs +0 -2125
  197. package/dist/create/server-source/crates/feltdb/src/production_api.rs +0 -418
  198. package/dist/create/server-source/crates/feltdb/src/provenance.rs +0 -207
  199. package/dist/create/server-source/crates/feltdb/src/query_execution_diagnostics.rs +0 -126
  200. package/dist/create/server-source/crates/feltdb/src/query_performance.rs +0 -218
  201. package/dist/create/server-source/crates/feltdb/src/read_basis.rs +0 -257
  202. package/dist/create/server-source/crates/feltdb/src/references.rs +0 -404
  203. package/dist/create/server-source/crates/feltdb/src/replay_fuzzing.rs +0 -401
  204. package/dist/create/server-source/crates/feltdb/src/replica_acknowledgements.rs +0 -501
  205. package/dist/create/server-source/crates/feltdb/src/replica_membership.rs +0 -680
  206. package/dist/create/server-source/crates/feltdb/src/replication_manager.rs +0 -163
  207. package/dist/create/server-source/crates/feltdb/src/replication_protocol.rs +0 -133
  208. package/dist/create/server-source/crates/feltdb/src/routing.rs +0 -409
  209. package/dist/create/server-source/crates/feltdb/src/semantic_decision.rs +0 -2029
  210. package/dist/create/server-source/crates/feltdb/src/semantic_query.rs +0 -599
  211. package/dist/create/server-source/crates/feltdb/src/sharding.rs +0 -549
  212. package/dist/create/server-source/crates/feltdb/src/state_conflict_contract.rs +0 -516
  213. package/dist/create/server-source/crates/feltdb/src/state_contract.rs +0 -5894
  214. package/dist/create/server-source/crates/feltdb/src/state_diff_contract.rs +0 -222
  215. package/dist/create/server-source/crates/feltdb/src/state_facade.rs +0 -320
  216. package/dist/create/server-source/crates/feltdb/src/state_hash.rs +0 -291
  217. package/dist/create/server-source/crates/feltdb/src/state_model.rs +0 -4158
  218. package/dist/create/server-source/crates/feltdb/src/state_transition_store.rs +0 -379
  219. package/dist/create/server-source/crates/feltdb/src/state_trigger.rs +0 -673
  220. package/dist/create/server-source/crates/feltdb/src/storage.rs +0 -273
  221. package/dist/create/server-source/crates/feltdb/src/submission.rs +0 -471
  222. package/dist/create/server-source/crates/feltdb/src/sync.rs +0 -495
  223. package/dist/create/server-source/crates/feltdb/src/sync_contract.rs +0 -822
  224. package/dist/create/server-source/crates/feltdb/src/tcp_transport.rs +0 -433
  225. package/dist/create/server-source/crates/feltdb/src/transaction_api.rs +0 -462
  226. package/dist/create/server-source/crates/feltdb/src/transaction_invariants.rs +0 -965
  227. package/dist/create/server-source/crates/feltdb/src/transaction_preconditions.rs +0 -1120
  228. package/dist/create/server-source/crates/feltdb/src/transactions.rs +0 -643
  229. package/dist/create/server-source/crates/feltdb/src/trigger.rs +0 -390
  230. package/dist/create/server-source/crates/feltdb/src/trigger_contract.rs +0 -749
  231. package/dist/create/server-source/crates/feltdb/src/versioned_object_substrate.rs +0 -708
  232. package/dist/create/server-source/crates/feltdb/src/worker_mesh.rs +0 -1133
  233. package/dist/create/server-source/crates/feltdb/src/workflow.rs +0 -713
  234. package/dist/create/server-source/crates/feltdb/src/workflow_acceptance_tests.rs +0 -510
  235. package/dist/create/server-source/crates/feltdb/src/workflow_integration.rs +0 -354
  236. package/dist/create/server-source/crates/feltdb/src/workflow_runtime.rs +0 -594
  237. package/dist/create/server-source/crates/feltdb/src/workload.rs +0 -2886
  238. package/dist/create/server-source/crates/feltdb/src/workload_diagnostics.rs +0 -456
  239. package/dist/create/server-source/crates/feltdb/tests/agent_state_native.rs +0 -1188
  240. package/dist/create/server-source/crates/feltdb/tests/agent_transition_contract_conformance.rs +0 -2884
  241. package/dist/create/server-source/crates/feltdb/tests/authority_process.rs +0 -297
  242. package/dist/create/server-source/crates/feltdb/tests/authority_transaction_identity.rs +0 -534
  243. package/dist/create/server-source/crates/feltdb/tests/bounded_read_contract.rs +0 -132
  244. package/dist/create/server-source/crates/feltdb/tests/branching_evidence.rs +0 -299
  245. package/dist/create/server-source/crates/feltdb/tests/common/mod.rs +0 -96
  246. package/dist/create/server-source/crates/feltdb/tests/compaction_stall_contract.rs +0 -272
  247. package/dist/create/server-source/crates/feltdb/tests/crash_durability_contract.rs +0 -467
  248. package/dist/create/server-source/crates/feltdb/tests/current_revision_authority_evidence.rs +0 -309
  249. package/dist/create/server-source/crates/feltdb/tests/durable_backup_contract.rs +0 -445
  250. package/dist/create/server-source/crates/feltdb/tests/durable_corruption_contract.rs +0 -518
  251. package/dist/create/server-source/crates/feltdb/tests/durable_format_compatibility.rs +0 -392
  252. package/dist/create/server-source/crates/feltdb/tests/feltdb_state_boundary_tests.rs +0 -850
  253. package/dist/create/server-source/crates/feltdb/tests/fixtures/agent_transition_corpus.json +0 -23340
  254. package/dist/create/server-source/crates/feltdb/tests/fixtures/state_conflict_contract_corpus.json +0 -1916
  255. package/dist/create/server-source/crates/feltdb/tests/fixtures/state_diff_contract_corpus.json +0 -1878
  256. package/dist/create/server-source/crates/feltdb/tests/fixtures/trigger_contract_corpus.json +0 -1862
  257. package/dist/create/server-source/crates/feltdb/tests/generalized_version_control_evidence.rs +0 -123
  258. package/dist/create/server-source/crates/feltdb/tests/generalized_version_control_substrate_completion.rs +0 -299
  259. package/dist/create/server-source/crates/feltdb/tests/local_process_ownership.rs +0 -69
  260. package/dist/create/server-source/crates/feltdb/tests/managed_incident_regression.rs +0 -191
  261. package/dist/create/server-source/crates/feltdb/tests/operational_health_contract.rs +0 -278
  262. package/dist/create/server-source/crates/feltdb/tests/pr34_query_collection.rs +0 -234
  263. package/dist/create/server-source/crates/feltdb/tests/pr35_equality_index.rs +0 -947
  264. package/dist/create/server-source/crates/feltdb/tests/pr7_self_authorization_proof.rs +0 -404
  265. package/dist/create/server-source/crates/feltdb/tests/pr8_vocabulary_assessment.rs +0 -916
  266. package/dist/create/server-source/crates/feltdb/tests/pr9_phase2_boundary_tests.rs +0 -1045
  267. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3a_path_a_tests.rs +0 -347
  268. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_authorized_mutations.rs +0 -361
  269. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_role_based_authorization.rs +0 -330
  270. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_simple_auth_delete.rs +0 -93
  271. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_team_delete_role_authorization.rs +0 -622
  272. package/dist/create/server-source/crates/feltdb/tests/pr9_teams_role_based_access.rs +0 -517
  273. package/dist/create/server-source/crates/feltdb/tests/production_certification.rs +0 -1153
  274. package/dist/create/server-source/crates/feltdb/tests/production_contract.rs +0 -771
  275. package/dist/create/server-source/crates/feltdb/tests/production_readiness_contract.rs +0 -1383
  276. package/dist/create/server-source/crates/feltdb/tests/reconciliation_application.rs +0 -868
  277. package/dist/create/server-source/crates/feltdb/tests/reconciliation_wire_format_evidence.rs +0 -221
  278. package/dist/create/server-source/crates/feltdb/tests/replicated_history_contract.rs +0 -417
  279. package/dist/create/server-source/crates/feltdb/tests/resource_scoped_revisions.rs +0 -338
  280. package/dist/create/server-source/crates/feltdb/tests/revision_identity_contract.rs +0 -1039
  281. package/dist/create/server-source/crates/feltdb/tests/revision_model_decision.rs +0 -739
  282. package/dist/create/server-source/crates/feltdb/tests/revision_retention_boundary_evidence.rs +0 -452
  283. package/dist/create/server-source/crates/feltdb/tests/saas_authorization_integration.rs +0 -81
  284. package/dist/create/server-source/crates/feltdb/tests/saas_invitation_lifecycle.rs +0 -438
  285. package/dist/create/server-source/crates/feltdb/tests/semantic_decision.rs +0 -1165
  286. package/dist/create/server-source/crates/feltdb/tests/semantic_query.rs +0 -767
  287. package/dist/create/server-source/crates/feltdb/tests/semantic_query_contract.rs +0 -363
  288. package/dist/create/server-source/crates/feltdb/tests/state_conflict_contract_conformance.rs +0 -1799
  289. package/dist/create/server-source/crates/feltdb/tests/state_diff_contract_conformance.rs +0 -1316
  290. package/dist/create/server-source/crates/feltdb/tests/state_model_integration.rs +0 -358
  291. package/dist/create/server-source/crates/feltdb/tests/state_persistence_integration.rs +0 -365
  292. package/dist/create/server-source/crates/feltdb/tests/state_ref_authority.rs +0 -918
  293. package/dist/create/server-source/crates/feltdb/tests/state_store_boundary_evidence.rs +0 -299
  294. package/dist/create/server-source/crates/feltdb/tests/storage_independent_versioned_object_substrate.rs +0 -328
  295. package/dist/create/server-source/crates/feltdb/tests/sync_divergence_evidence.rs +0 -255
  296. package/dist/create/server-source/crates/feltdb/tests/three_way_input_boundary_evidence.rs +0 -249
  297. package/dist/create/server-source/crates/feltdb/tests/trigger_contract_conformance.rs +0 -994
  298. package/dist/create/server-source/crates/feltdb/tests/workload_envelope_contract.rs +0 -484
  299. package/dist/studio-app/assets/feltdb_wasm_bg-CFQT4gCy.wasm +0 -0
  300. package/dist/studio-app/assets/index-Dql1hS5m.js +0 -30
@@ -1,379 +0,0 @@
1
- /// Observability Layer
2
- ///
3
- /// Comprehensive monitoring and observability:
4
- /// - Replication lag tracking
5
- /// - Convergence status
6
- /// - Query latency monitoring
7
- /// - Rejected operations tracking
8
- /// - Index health metrics
9
- /// - Recovery state visibility
10
- use serde::{Deserialize, Serialize};
11
- use std::collections::HashMap;
12
- use std::sync::atomic::{AtomicU64, Ordering};
13
- use std::sync::Arc;
14
-
15
- #[derive(Debug, Clone, Serialize, Deserialize)]
16
- pub struct ReplicationLagMetric {
17
- pub source_node: String,
18
- pub target_node: String,
19
- pub lag_ms: u64,
20
- pub pending_operations: u64,
21
- pub last_update: u64,
22
- }
23
-
24
- #[derive(Debug, Clone, Serialize, Deserialize)]
25
- pub struct ConvergenceStatus {
26
- pub node_id: String,
27
- pub status: String,
28
- pub synchronized_peers: Vec<String>,
29
- pub diverged_peers: Vec<String>,
30
- pub convergence_percentage: f64,
31
- pub timestamp: u64,
32
- }
33
-
34
- #[derive(Debug, Clone, Serialize, Deserialize)]
35
- pub struct RejectedOperation {
36
- pub operation_id: String,
37
- pub reason: String,
38
- pub timestamp: u64,
39
- pub node_id: String,
40
- }
41
-
42
- #[derive(Debug, Clone, Serialize, Deserialize)]
43
- pub struct IndexHealth {
44
- pub index_name: String,
45
- pub status: String,
46
- pub entries_count: u64,
47
- pub memory_bytes: u64,
48
- pub last_compaction: u64,
49
- pub fragmentation: f64,
50
- }
51
-
52
- #[derive(Debug, Clone, Serialize, Deserialize)]
53
- pub struct RecoveryState {
54
- pub node_id: String,
55
- pub status: String,
56
- pub operations_replayed: u64,
57
- pub operations_remaining: u64,
58
- pub recovery_start: u64,
59
- pub estimated_completion: u64,
60
- pub progress_percentage: f64,
61
- }
62
-
63
- #[derive(Debug, Clone, Serialize, Deserialize)]
64
- pub struct HealthReport {
65
- pub timestamp: u64,
66
- pub overall_status: String,
67
- pub replication_lag: Vec<ReplicationLagMetric>,
68
- pub convergence: Vec<ConvergenceStatus>,
69
- pub rejected_operations: Vec<RejectedOperation>,
70
- pub index_health: Vec<IndexHealth>,
71
- pub recovery_states: Vec<RecoveryState>,
72
- pub query_latency_p99: u64,
73
- pub operation_throughput: u64,
74
- }
75
-
76
- pub struct ObservabilityManager {
77
- node_id: String,
78
- replication_lags: HashMap<String, ReplicationLagMetric>,
79
- convergence_status: HashMap<String, ConvergenceStatus>,
80
- rejected_operations: Vec<RejectedOperation>,
81
- index_health: HashMap<String, IndexHealth>,
82
- recovery_states: HashMap<String, RecoveryState>,
83
-
84
- query_latency_p99: Arc<AtomicU64>,
85
- operation_throughput: Arc<AtomicU64>,
86
- total_rejected: Arc<AtomicU64>,
87
- }
88
-
89
- impl ObservabilityManager {
90
- pub fn new(node_id: String) -> Self {
91
- ObservabilityManager {
92
- node_id,
93
- replication_lags: HashMap::new(),
94
- convergence_status: HashMap::new(),
95
- rejected_operations: Vec::new(),
96
- index_health: HashMap::new(),
97
- recovery_states: HashMap::new(),
98
- query_latency_p99: Arc::new(AtomicU64::new(0)),
99
- operation_throughput: Arc::new(AtomicU64::new(0)),
100
- total_rejected: Arc::new(AtomicU64::new(0)),
101
- }
102
- }
103
-
104
- pub fn record_replication_lag(
105
- &mut self,
106
- source: String,
107
- target: String,
108
- lag_ms: u64,
109
- pending: u64,
110
- ) {
111
- let now = std::time::SystemTime::now()
112
- .duration_since(std::time::UNIX_EPOCH)
113
- .unwrap_or_default()
114
- .as_secs();
115
-
116
- self.replication_lags.insert(
117
- format!("{}:{}", source.clone(), target.clone()),
118
- ReplicationLagMetric {
119
- source_node: source,
120
- target_node: target,
121
- lag_ms,
122
- pending_operations: pending,
123
- last_update: now,
124
- },
125
- );
126
- }
127
-
128
- pub fn record_convergence_status(
129
- &mut self,
130
- node_id: String,
131
- synchronized_peers: Vec<String>,
132
- diverged_peers: Vec<String>,
133
- ) {
134
- let total = synchronized_peers.len() + diverged_peers.len();
135
- let convergence_percentage = if total > 0 {
136
- (synchronized_peers.len() as f64 / total as f64) * 100.0
137
- } else {
138
- 100.0
139
- };
140
-
141
- let status = if diverged_peers.is_empty() {
142
- "converged"
143
- } else {
144
- "diverged"
145
- };
146
-
147
- self.convergence_status.insert(
148
- node_id.clone(),
149
- ConvergenceStatus {
150
- node_id,
151
- status: status.to_string(),
152
- synchronized_peers,
153
- diverged_peers,
154
- convergence_percentage,
155
- timestamp: std::time::SystemTime::now()
156
- .duration_since(std::time::UNIX_EPOCH)
157
- .unwrap_or_default()
158
- .as_secs(),
159
- },
160
- );
161
- }
162
-
163
- pub fn record_rejected_operation(&mut self, operation_id: String, reason: String) {
164
- self.rejected_operations.push(RejectedOperation {
165
- operation_id,
166
- reason,
167
- timestamp: std::time::SystemTime::now()
168
- .duration_since(std::time::UNIX_EPOCH)
169
- .unwrap_or_default()
170
- .as_secs(),
171
- node_id: self.node_id.clone(),
172
- });
173
-
174
- self.total_rejected.fetch_add(1, Ordering::Relaxed);
175
-
176
- if self.rejected_operations.len() > 10000 {
177
- self.rejected_operations.remove(0);
178
- }
179
- }
180
-
181
- pub fn record_index_health(
182
- &mut self,
183
- index_name: String,
184
- entries: u64,
185
- memory_bytes: u64,
186
- fragmentation: f64,
187
- ) {
188
- self.index_health.insert(
189
- index_name.clone(),
190
- IndexHealth {
191
- index_name,
192
- status: "healthy".to_string(),
193
- entries_count: entries,
194
- memory_bytes,
195
- last_compaction: std::time::SystemTime::now()
196
- .duration_since(std::time::UNIX_EPOCH)
197
- .unwrap_or_default()
198
- .as_secs(),
199
- fragmentation,
200
- },
201
- );
202
- }
203
-
204
- pub fn record_recovery_state(
205
- &mut self,
206
- node_id: String,
207
- replayed: u64,
208
- remaining: u64,
209
- start_time: u64,
210
- ) {
211
- let progress_percentage = if replayed + remaining > 0 {
212
- (replayed as f64 / (replayed + remaining) as f64) * 100.0
213
- } else {
214
- 100.0
215
- };
216
-
217
- let now = std::time::SystemTime::now()
218
- .duration_since(std::time::UNIX_EPOCH)
219
- .unwrap_or_default()
220
- .as_secs();
221
-
222
- let elapsed = now - start_time;
223
- let rate = if elapsed > 0 {
224
- replayed / elapsed.max(1)
225
- } else {
226
- 0
227
- };
228
-
229
- let estimated_completion = if rate > 0 {
230
- now + ((remaining / rate.max(1)) as u64)
231
- } else {
232
- now + 3600
233
- };
234
-
235
- self.recovery_states.insert(
236
- node_id.clone(),
237
- RecoveryState {
238
- node_id,
239
- status: if remaining == 0 {
240
- "complete".to_string()
241
- } else {
242
- "in_progress".to_string()
243
- },
244
- operations_replayed: replayed,
245
- operations_remaining: remaining,
246
- recovery_start: start_time,
247
- estimated_completion,
248
- progress_percentage,
249
- },
250
- );
251
- }
252
-
253
- pub fn record_query_latency(&self, p99_us: u64) {
254
- self.query_latency_p99.store(p99_us, Ordering::Relaxed);
255
- }
256
-
257
- pub fn record_operation_throughput(&self, ops_per_sec: u64) {
258
- self.operation_throughput
259
- .store(ops_per_sec, Ordering::Relaxed);
260
- }
261
-
262
- pub fn get_health_report(&self) -> HealthReport {
263
- let now = std::time::SystemTime::now()
264
- .duration_since(std::time::UNIX_EPOCH)
265
- .unwrap_or_default()
266
- .as_secs();
267
-
268
- let overall_status = if self
269
- .convergence_status
270
- .values()
271
- .all(|c| c.diverged_peers.is_empty())
272
- {
273
- "healthy"
274
- } else {
275
- "degraded"
276
- };
277
-
278
- HealthReport {
279
- timestamp: now,
280
- overall_status: overall_status.to_string(),
281
- replication_lag: self.replication_lags.values().cloned().collect(),
282
- convergence: self.convergence_status.values().cloned().collect(),
283
- rejected_operations: self
284
- .rejected_operations
285
- .iter()
286
- .rev()
287
- .take(100)
288
- .cloned()
289
- .collect(),
290
- index_health: self.index_health.values().cloned().collect(),
291
- recovery_states: self.recovery_states.values().cloned().collect(),
292
- query_latency_p99: self.query_latency_p99.load(Ordering::Relaxed),
293
- operation_throughput: self.operation_throughput.load(Ordering::Relaxed),
294
- }
295
- }
296
-
297
- pub fn export_prometheus_metrics(&self) -> String {
298
- let report = self.get_health_report();
299
- let mut metrics = String::new();
300
-
301
- metrics.push_str(&format!(
302
- "feltdb_query_latency_p99_us {}\n",
303
- report.query_latency_p99
304
- ));
305
- metrics.push_str(&format!(
306
- "feltdb_operation_throughput_ops_per_sec {}\n",
307
- report.operation_throughput
308
- ));
309
- metrics.push_str(&format!(
310
- "feltdb_rejected_operations_total {}\n",
311
- self.total_rejected.load(Ordering::Relaxed)
312
- ));
313
-
314
- for lag in &report.replication_lag {
315
- metrics.push_str(&format!(
316
- "feltdb_replication_lag_ms{{source=\"{}\",target=\"{}\"}} {}\n",
317
- lag.source_node, lag.target_node, lag.lag_ms
318
- ));
319
- }
320
-
321
- metrics
322
- }
323
- }
324
-
325
- impl Default for ObservabilityManager {
326
- fn default() -> Self {
327
- Self::new("node".to_string())
328
- }
329
- }
330
-
331
- #[cfg(test)]
332
- mod tests {
333
- use super::*;
334
-
335
- #[test]
336
- fn test_replication_lag_tracking() {
337
- let mut obs = ObservabilityManager::new("node-1".to_string());
338
- obs.record_replication_lag("node-1".to_string(), "node-2".to_string(), 150, 50);
339
-
340
- let report = obs.get_health_report();
341
- assert_eq!(report.replication_lag.len(), 1);
342
- assert_eq!(report.replication_lag[0].lag_ms, 150);
343
- }
344
-
345
- #[test]
346
- fn test_convergence_tracking() {
347
- let mut obs = ObservabilityManager::new("node-1".to_string());
348
- obs.record_convergence_status(
349
- "node-1".to_string(),
350
- vec!["node-2".to_string(), "node-3".to_string()],
351
- vec![],
352
- );
353
-
354
- let report = obs.get_health_report();
355
- assert_eq!(report.overall_status, "healthy");
356
- assert_eq!(report.convergence[0].convergence_percentage, 100.0);
357
- }
358
-
359
- #[test]
360
- fn test_rejected_operations() {
361
- let mut obs = ObservabilityManager::new("node-1".to_string());
362
- obs.record_rejected_operation("op-1".to_string(), "conflict".to_string());
363
- obs.record_rejected_operation("op-2".to_string(), "timeout".to_string());
364
-
365
- let report = obs.get_health_report();
366
- assert_eq!(report.rejected_operations.len(), 2);
367
- }
368
-
369
- #[test]
370
- fn test_prometheus_export() {
371
- let mut obs = ObservabilityManager::new("node-1".to_string());
372
- obs.record_query_latency(1200);
373
- obs.record_operation_throughput(5000);
374
-
375
- let metrics = obs.export_prometheus_metrics();
376
- assert!(metrics.contains("feltdb_query_latency_p99_us 1200"));
377
- assert!(metrics.contains("feltdb_operation_throughput_ops_per_sec 5000"));
378
- }
379
- }
@@ -1,290 +0,0 @@
1
- use crate::now_ms;
2
- /// Operation log module for durable append-only mutations
3
- use serde::{Deserialize, Serialize};
4
- use serde_json::Value;
5
- use sha2::{Digest, Sha256};
6
-
7
- /// A durable operation that can be appended to the log
8
- #[derive(Debug, Clone, Serialize, Deserialize)]
9
- pub struct Operation {
10
- /// Unique operation ID (monotonically increasing)
11
- pub op_id: u64,
12
- /// Instance ID - unique identifier for the FeltDB instance that created this operation
13
- pub instance_id: String,
14
- /// Sequence number - monotonically increasing sequence per instance
15
- pub sequence: u64,
16
- /// Type of operation (insert, update, delete)
17
- pub op_type: OperationType,
18
- /// The key being operated on (e.g., "users:123")
19
- pub key: String,
20
- /// The value (for insert/update operations)
21
- pub value: Option<Value>,
22
- /// Timestamp in milliseconds since UNIX epoch
23
- pub timestamp_ms: u128,
24
- /// The data type being operated on
25
- pub rust_type: String,
26
- /// Capability/namespace
27
- pub capability: String,
28
- /// Content hash - deterministic hash of the operation's content for deduplication
29
- pub content_hash: String,
30
- /// Vector clock for causal tracking (optional for backward compatibility)
31
- #[serde(default)]
32
- pub vector_clock: Option<std::collections::HashMap<String, u64>>,
33
- /// The historical revision this operation produced on the authority that
34
- /// created it.
35
- ///
36
- /// Carried so a peer can **reconstruct the same revision** rather than mint
37
- /// a local substitute for the resulting state. Without it a replica can
38
- /// only reproduce what is current, and two authorities end up agreeing
39
- /// about what *is* while disagreeing about what *happened*.
40
- ///
41
- /// Additive and outside `content_hash`, exactly like `vector_clock`: an
42
- /// operation from a build that does not send it still verifies, and simply
43
- /// carries no history.
44
- #[serde(default)]
45
- pub revision: Option<RevisionProvenance>,
46
- }
47
-
48
- /// The revision an operation produced, as its originating authority recorded it.
49
- ///
50
- /// Everything a peer needs to rebuild the identical `StateRevision`. The content
51
- /// is not repeated — it is the operation's own value — so this adds a bounded
52
- /// amount to an operation regardless of record size.
53
- #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
54
- pub struct RevisionProvenance {
55
- /// The resource whose history this revision belongs to.
56
- pub resource: String,
57
- /// The revision identity the originating authority committed.
58
- pub id: String,
59
- /// Its parent, as the origin recorded it — **not** whatever is current on
60
- /// the peer. This is what preserves forks.
61
- pub parent_id: Option<String>,
62
- /// Its position in the resource's history, preserved rather than reassigned.
63
- pub sequence: u64,
64
- /// The content identity, so a peer can check that the value it received is
65
- /// the value the revision was computed from.
66
- pub content_id: String,
67
- /// Who committed the historical fact. Never rewritten to the peer.
68
- pub authority: String,
69
- }
70
-
71
- /// Types of mutations that become durable operations
72
- #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
73
- pub enum OperationType {
74
- /// Insert a new record
75
- Insert,
76
- /// Update an existing record
77
- Update,
78
- /// Delete an existing record
79
- Delete,
80
- }
81
-
82
- impl Operation {
83
- /// Create a new insert operation
84
- pub fn insert(
85
- op_id: u64,
86
- instance_id: String,
87
- sequence: u64,
88
- key: String,
89
- value: Value,
90
- rust_type: String,
91
- capability: String,
92
- ) -> Self {
93
- let op = Self {
94
- op_id,
95
- instance_id,
96
- sequence,
97
- op_type: OperationType::Insert,
98
- key,
99
- value: Some(value),
100
- timestamp_ms: now_ms(),
101
- rust_type,
102
- capability,
103
- content_hash: String::new(), // Will be computed below
104
- vector_clock: None,
105
- revision: None,
106
- };
107
- let mut result = op;
108
- result.content_hash = result.compute_content_hash();
109
- result
110
- }
111
-
112
- /// Create a new update operation
113
- pub fn update(
114
- op_id: u64,
115
- instance_id: String,
116
- sequence: u64,
117
- key: String,
118
- value: Value,
119
- rust_type: String,
120
- capability: String,
121
- ) -> Self {
122
- let op = Self {
123
- op_id,
124
- instance_id,
125
- sequence,
126
- op_type: OperationType::Update,
127
- key,
128
- value: Some(value),
129
- timestamp_ms: now_ms(),
130
- rust_type,
131
- capability,
132
- content_hash: String::new(), // Will be computed below
133
- vector_clock: None,
134
- revision: None,
135
- };
136
- let mut result = op;
137
- result.content_hash = result.compute_content_hash();
138
- result
139
- }
140
-
141
- /// Create a new delete operation
142
- pub fn delete(
143
- op_id: u64,
144
- instance_id: String,
145
- sequence: u64,
146
- key: String,
147
- rust_type: String,
148
- capability: String,
149
- ) -> Self {
150
- let op = Self {
151
- op_id,
152
- instance_id,
153
- sequence,
154
- op_type: OperationType::Delete,
155
- key,
156
- value: None,
157
- timestamp_ms: now_ms(),
158
- rust_type,
159
- capability,
160
- content_hash: String::new(), // Will be computed below
161
- vector_clock: None,
162
- revision: None,
163
- };
164
- let mut result = op;
165
- result.content_hash = result.compute_content_hash();
166
- result
167
- }
168
-
169
- /// Compute deterministic content hash for this operation
170
- /// This is used for deduplication across peers
171
- pub fn compute_content_hash(&self) -> String {
172
- let mut hasher = Sha256::new();
173
-
174
- // Hash the operation type
175
- hasher.update(format!("{:?}", self.op_type).as_bytes());
176
-
177
- // Hash the key
178
- hasher.update(self.key.as_bytes());
179
-
180
- // Hash the value if present
181
- if let Some(val) = &self.value {
182
- hasher.update(val.to_string().as_bytes());
183
- }
184
-
185
- // Hash the rust type
186
- hasher.update(self.rust_type.as_bytes());
187
-
188
- // Hash the capability
189
- hasher.update(self.capability.as_bytes());
190
-
191
- let result = hasher.finalize();
192
- format!("{:x}", result)
193
- }
194
-
195
- /// Set the vector clock for this operation
196
- pub fn with_vector_clock(
197
- mut self,
198
- vector_clock: std::collections::HashMap<String, u64>,
199
- ) -> Self {
200
- self.vector_clock = Some(vector_clock);
201
- self
202
- }
203
-
204
- /// Get the vector clock for this operation
205
- pub fn get_vector_clock(&self) -> Option<&std::collections::HashMap<String, u64>> {
206
- self.vector_clock.as_ref()
207
- }
208
- }
209
-
210
- /// Mutation ordering specification for FeltDB
211
- /// This defines the order in which mutation side effects occur
212
- #[derive(Debug, Clone, Copy, PartialEq, Eq)]
213
- pub enum MutationOrder {
214
- /// Conservative: Apply locally first, then persist in background
215
- /// Mutation → Validate → Apply state transition → Emit diff → Persist
216
- /// Good for: Interactive feel, optimistic updates
217
- ApplyFirst,
218
-
219
- /// Durable: Persist first, then apply and emit
220
- /// Mutation → Validate → Persist → Apply state transition → Emit diff
221
- /// Good for: Durability guarantee, no data loss
222
- PersistFirst,
223
- }
224
-
225
- /// The default mutation ordering for FeltDB
226
- /// We choose PersistFirst to ensure durability guarantees
227
- pub const DEFAULT_MUTATION_ORDER: MutationOrder = MutationOrder::PersistFirst;
228
-
229
- #[cfg(test)]
230
- mod tests {
231
- use super::*;
232
-
233
- #[test]
234
- fn operation_insert_creates_insert_op() {
235
- let op = Operation::insert(
236
- 1,
237
- "inst1".to_string(),
238
- 1,
239
- "users:123".to_string(),
240
- serde_json::json!({"name": "Alice"}),
241
- "User".to_string(),
242
- "users".to_string(),
243
- );
244
-
245
- assert_eq!(op.op_id, 1);
246
- assert_eq!(op.instance_id, "inst1");
247
- assert_eq!(op.sequence, 1);
248
- assert_eq!(op.op_type, OperationType::Insert);
249
- assert_eq!(op.key, "users:123");
250
- assert!(op.value.is_some());
251
- }
252
-
253
- #[test]
254
- fn operation_delete_has_no_value() {
255
- let op = Operation::delete(
256
- 2,
257
- "inst1".to_string(),
258
- 2,
259
- "users:456".to_string(),
260
- "User".to_string(),
261
- "users".to_string(),
262
- );
263
-
264
- assert_eq!(op.op_type, OperationType::Delete);
265
- assert!(op.value.is_none());
266
- assert_eq!(op.instance_id, "inst1");
267
- assert_eq!(op.sequence, 2);
268
- }
269
-
270
- #[test]
271
- fn operations_are_serializable() {
272
- let op = Operation::update(
273
- 1,
274
- "inst1".to_string(),
275
- 1,
276
- "users:789".to_string(),
277
- serde_json::json!({"status": "active"}),
278
- "User".to_string(),
279
- "users".to_string(),
280
- );
281
-
282
- let json = serde_json::to_string(&op).expect("serialize");
283
- let deserialized: Operation = serde_json::from_str(&json).expect("deserialize");
284
-
285
- assert_eq!(deserialized.op_id, op.op_id);
286
- assert_eq!(deserialized.op_type, op.op_type);
287
- assert_eq!(deserialized.instance_id, op.instance_id);
288
- assert_eq!(deserialized.sequence, op.sequence);
289
- }
290
- }