@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,566 +0,0 @@
1
- /// Persistence Reality (Gate 7)
2
- ///
3
- /// Tests actual durable implementations against crash scenarios.
4
- /// What happens when:
5
- /// process writes → crash → restart → recover
6
- ///
7
- /// Critical test: Same data after arbitrary crash/recovery cycles.
8
- use std::collections::HashMap;
9
-
10
- /// Point at which to inject a crash during persistence
11
- #[derive(Clone, Debug, Eq, PartialEq)]
12
- pub enum PersistenceCrashPoint {
13
- /// Crash before any write begins
14
- BeforeWrite,
15
- /// Crash after operation enters buffer, before fsync
16
- AfterBufferBeforeFsync,
17
- /// Crash after fsync call starts, before completion
18
- DuringFsync,
19
- /// Crash after fsync completes, before returning
20
- AfterFsyncBeforeReturn,
21
- /// Crash after write fully returns
22
- AfterWriteReturns,
23
- }
24
-
25
- /// Write-ahead log entry (simplified)
26
- #[derive(Clone, Debug, Eq, PartialEq)]
27
- pub struct WALEntry {
28
- pub lsn: u64, // Log sequence number
29
- pub operation_id: String,
30
- pub data: Vec<u8>,
31
- pub checksum: u32,
32
- }
33
-
34
- impl WALEntry {
35
- pub fn new(lsn: u64, operation_id: String, data: Vec<u8>) -> Self {
36
- let checksum = Self::compute_checksum(&data);
37
- Self {
38
- lsn,
39
- operation_id,
40
- data,
41
- checksum,
42
- }
43
- }
44
-
45
- fn compute_checksum(data: &[u8]) -> u32 {
46
- let mut sum: u32 = 0;
47
- for byte in data {
48
- sum = sum.wrapping_add(*byte as u32);
49
- }
50
- sum
51
- }
52
-
53
- fn verify_checksum(&self) -> bool {
54
- Self::compute_checksum(&self.data) == self.checksum
55
- }
56
-
57
- /// Simulate torn write: truncate data randomly
58
- fn truncate_randomly(&mut self, max_bytes: usize) {
59
- if self.data.len() > max_bytes {
60
- self.data.truncate(max_bytes);
61
- }
62
- }
63
- }
64
-
65
- /// Simulates a durable write-ahead log with crash points
66
- pub struct DurablePersistenceLayer {
67
- /// In-memory buffer (not yet durable)
68
- write_buffer: Vec<u8>,
69
- /// Committed entries (durable)
70
- committed_log: Vec<WALEntry>,
71
- /// Next LSN
72
- next_lsn: u64,
73
- /// Tracks fsync state
74
- fsynced_lsn: u64,
75
- }
76
-
77
- impl DurablePersistenceLayer {
78
- pub fn new() -> Self {
79
- Self {
80
- write_buffer: Vec::new(),
81
- committed_log: Vec::new(),
82
- next_lsn: 1,
83
- fsynced_lsn: 0,
84
- }
85
- }
86
-
87
- /// Write an operation with potential crash
88
- pub fn write_with_crash(
89
- &mut self,
90
- operation_id: String,
91
- data: Vec<u8>,
92
- crash_point: PersistenceCrashPoint,
93
- ) -> WriteResult {
94
- match crash_point {
95
- PersistenceCrashPoint::BeforeWrite => {
96
- // Crash before anything is written
97
- WriteResult::Crashed {
98
- written_to_buffer: false,
99
- fsynced: false,
100
- lsn: None,
101
- }
102
- }
103
- PersistenceCrashPoint::AfterBufferBeforeFsync => {
104
- // Buffer write succeeds, but crash before fsync
105
- self.write_buffer.extend_from_slice(&data);
106
- WriteResult::Crashed {
107
- written_to_buffer: true,
108
- fsynced: false,
109
- lsn: Some(self.next_lsn),
110
- }
111
- }
112
- PersistenceCrashPoint::DuringFsync => {
113
- // Partial fsync (some data written, some not)
114
- self.write_buffer.extend_from_slice(&data);
115
- let mut entry = WALEntry::new(self.next_lsn, operation_id, data);
116
-
117
- // Simulate torn write: truncate at random point
118
- entry.truncate_randomly(entry.data.len() / 2);
119
-
120
- // Partially committed (corrupted)
121
- self.committed_log.push(entry);
122
-
123
- WriteResult::Crashed {
124
- written_to_buffer: true,
125
- fsynced: false,
126
- lsn: Some(self.next_lsn),
127
- }
128
- }
129
- PersistenceCrashPoint::AfterFsyncBeforeReturn => {
130
- // Fsync succeeds but crash before returning
131
- self.write_buffer.extend_from_slice(&data);
132
- let entry = WALEntry::new(self.next_lsn, operation_id, data);
133
- self.committed_log.push(entry.clone());
134
- self.fsynced_lsn = self.next_lsn;
135
-
136
- WriteResult::Crashed {
137
- written_to_buffer: true,
138
- fsynced: true,
139
- lsn: Some(self.next_lsn),
140
- }
141
- }
142
- PersistenceCrashPoint::AfterWriteReturns => {
143
- // Full write succeeds
144
- self.write_buffer.extend_from_slice(&data);
145
- let entry = WALEntry::new(self.next_lsn, operation_id, data);
146
- self.committed_log.push(entry);
147
- self.fsynced_lsn = self.next_lsn;
148
-
149
- let lsn = self.next_lsn;
150
- self.next_lsn += 1;
151
-
152
- WriteResult::Success { lsn }
153
- }
154
- }
155
- }
156
-
157
- /// Recover from crash, returning what was durable
158
- pub fn recover(&self) -> RecoveryResult {
159
- let mut recovered_operations = Vec::new();
160
- let mut corrupted_entries = Vec::new();
161
-
162
- for entry in &self.committed_log {
163
- if entry.verify_checksum() {
164
- recovered_operations.push(entry.operation_id.clone());
165
- } else {
166
- corrupted_entries.push(entry.lsn);
167
- }
168
- }
169
-
170
- RecoveryResult {
171
- recovered_operations,
172
- corrupted_entries,
173
- recovered_lsn: self.fsynced_lsn,
174
- total_entries: self.committed_log.len(),
175
- }
176
- }
177
-
178
- /// Simulate disk corruption: flip random bytes
179
- pub fn corrupt_tail(&mut self, num_entries_affected: usize) {
180
- let start = self
181
- .committed_log
182
- .len()
183
- .saturating_sub(num_entries_affected);
184
- for entry in &mut self.committed_log[start..] {
185
- if !entry.data.is_empty() {
186
- entry.data[0] ^= 0xFF; // Flip all bits in first byte
187
- }
188
- }
189
- }
190
-
191
- /// Simulate truncation at arbitrary point
192
- pub fn truncate_at_byte(&mut self, byte_offset: usize) {
193
- let mut total_bytes = 0;
194
- let mut entries_to_keep = 0;
195
-
196
- for entry in &self.committed_log {
197
- if total_bytes + entry.data.len() > byte_offset {
198
- break;
199
- }
200
- total_bytes += entry.data.len();
201
- entries_to_keep += 1;
202
- }
203
-
204
- // Truncate and corrupt last entry if partial
205
- if entries_to_keep < self.committed_log.len() && entries_to_keep > 0 {
206
- let last_entry = &mut self.committed_log[entries_to_keep - 1];
207
- let bytes_into_entry = byte_offset - total_bytes;
208
- if bytes_into_entry < last_entry.data.len() {
209
- last_entry.data.truncate(bytes_into_entry);
210
- }
211
- }
212
-
213
- self.committed_log.truncate(entries_to_keep);
214
- }
215
-
216
- pub fn get_log(&self) -> &[WALEntry] {
217
- &self.committed_log
218
- }
219
-
220
- pub fn fsynced_lsn(&self) -> u64 {
221
- self.fsynced_lsn
222
- }
223
- }
224
-
225
- impl Default for DurablePersistenceLayer {
226
- fn default() -> Self {
227
- Self::new()
228
- }
229
- }
230
-
231
- /// Result of a write operation
232
- #[derive(Clone, Debug, Eq, PartialEq)]
233
- pub enum WriteResult {
234
- Success {
235
- lsn: u64,
236
- },
237
- Crashed {
238
- written_to_buffer: bool,
239
- fsynced: bool,
240
- lsn: Option<u64>,
241
- },
242
- }
243
-
244
- /// Result of recovery from crash
245
- #[derive(Clone, Debug)]
246
- pub struct RecoveryResult {
247
- pub recovered_operations: Vec<String>,
248
- pub corrupted_entries: Vec<u64>,
249
- pub recovered_lsn: u64,
250
- pub total_entries: usize,
251
- }
252
-
253
- /// Persistence contract verifier
254
- pub struct PersistenceContractVerifier {
255
- scenarios: Vec<PersistenceScenario>,
256
- }
257
-
258
- #[derive(Clone, Debug)]
259
- struct PersistenceScenario {
260
- name: String,
261
- written_operations: Vec<String>,
262
- recovered_operations: Vec<String>,
263
- corrupted_count: usize,
264
- }
265
-
266
- impl PersistenceContractVerifier {
267
- pub fn new() -> Self {
268
- Self {
269
- scenarios: Vec::new(),
270
- }
271
- }
272
-
273
- /// Record a crash/recovery scenario
274
- pub fn record_scenario(
275
- &mut self,
276
- name: String,
277
- written: Vec<String>,
278
- recovered: Vec<String>,
279
- corrupted: usize,
280
- ) {
281
- self.scenarios.push(PersistenceScenario {
282
- name,
283
- written_operations: written,
284
- recovered_operations: recovered,
285
- corrupted_count: corrupted,
286
- });
287
- }
288
-
289
- /// Verify: if all operations were fsynced, they must all recover
290
- pub fn verify_fsync_durability(&self) -> FsyncDurabilityResult {
291
- for scenario in &self.scenarios {
292
- if scenario.corrupted_count == 0 {
293
- // No corruption = all written should be recovered
294
- if scenario.written_operations.len() != scenario.recovered_operations.len() {
295
- return FsyncDurabilityResult::Violated {
296
- scenario: scenario.name.clone(),
297
- written: scenario.written_operations.len(),
298
- recovered: scenario.recovered_operations.len(),
299
- };
300
- }
301
-
302
- // Check all written are in recovered
303
- for op in &scenario.written_operations {
304
- if !scenario.recovered_operations.contains(op) {
305
- return FsyncDurabilityResult::Violated {
306
- scenario: scenario.name.clone(),
307
- written: scenario.written_operations.len(),
308
- recovered: scenario.recovered_operations.len(),
309
- };
310
- }
311
- }
312
- }
313
- }
314
-
315
- FsyncDurabilityResult::Satisfied {
316
- scenarios_checked: self.scenarios.len(),
317
- }
318
- }
319
-
320
- /// Verify: corrupted entries don't silently return garbage
321
- pub fn verify_corruption_detection(&self) -> CorruptionDetectionResult {
322
- let mut corrupted_undetected = 0;
323
-
324
- for scenario in &self.scenarios {
325
- if scenario.corrupted_count > 0 {
326
- // If corruption occurred, it should be detected or entry dropped
327
- // (not silently included in recovered)
328
- let expected_max = scenario
329
- .written_operations
330
- .len()
331
- .saturating_sub(scenario.corrupted_count);
332
- if scenario.recovered_operations.len() > expected_max {
333
- corrupted_undetected += 1;
334
- }
335
- }
336
- }
337
-
338
- if corrupted_undetected == 0 {
339
- CorruptionDetectionResult::Satisfied {
340
- scenarios_checked: self.scenarios.len(),
341
- }
342
- } else {
343
- CorruptionDetectionResult::Violated {
344
- undetected_corruptions: corrupted_undetected,
345
- }
346
- }
347
- }
348
-
349
- pub fn get_scenarios(&self) -> &[PersistenceScenario] {
350
- &self.scenarios
351
- }
352
- }
353
-
354
- impl Default for PersistenceContractVerifier {
355
- fn default() -> Self {
356
- Self::new()
357
- }
358
- }
359
-
360
- /// Result of fsync durability verification
361
- #[derive(Clone, Debug, Eq, PartialEq)]
362
- pub enum FsyncDurabilityResult {
363
- Satisfied {
364
- scenarios_checked: usize,
365
- },
366
- Violated {
367
- scenario: String,
368
- written: usize,
369
- recovered: usize,
370
- },
371
- }
372
-
373
- /// Result of corruption detection verification
374
- #[derive(Clone, Debug, Eq, PartialEq)]
375
- pub enum CorruptionDetectionResult {
376
- Satisfied { scenarios_checked: usize },
377
- Violated { undetected_corruptions: usize },
378
- }
379
-
380
- #[cfg(test)]
381
- mod tests {
382
- use super::*;
383
-
384
- #[test]
385
- fn test_wal_creation() {
386
- let wal = DurablePersistenceLayer::new();
387
- assert_eq!(wal.fsynced_lsn(), 0);
388
- }
389
-
390
- #[test]
391
- fn test_write_with_crash_before_write() {
392
- let mut wal = DurablePersistenceLayer::new();
393
- let result = wal.write_with_crash(
394
- "op1".to_string(),
395
- vec![1, 2, 3],
396
- PersistenceCrashPoint::BeforeWrite,
397
- );
398
-
399
- assert!(matches!(result, WriteResult::Crashed { .. }));
400
- assert_eq!(wal.get_log().len(), 0);
401
- }
402
-
403
- #[test]
404
- fn test_write_with_crash_after_fsync() {
405
- let mut wal = DurablePersistenceLayer::new();
406
- let result = wal.write_with_crash(
407
- "op1".to_string(),
408
- vec![1, 2, 3],
409
- PersistenceCrashPoint::AfterFsyncBeforeReturn,
410
- );
411
-
412
- assert!(matches!(result, WriteResult::Crashed { fsynced: true, .. }));
413
- assert_eq!(wal.get_log().len(), 1);
414
- }
415
-
416
- #[test]
417
- fn test_write_success() {
418
- let mut wal = DurablePersistenceLayer::new();
419
- let result = wal.write_with_crash(
420
- "op1".to_string(),
421
- vec![1, 2, 3],
422
- PersistenceCrashPoint::AfterWriteReturns,
423
- );
424
-
425
- assert!(matches!(result, WriteResult::Success { lsn: 1 }));
426
- assert_eq!(wal.get_log().len(), 1);
427
- assert_eq!(wal.fsynced_lsn(), 1);
428
- }
429
-
430
- #[test]
431
- fn test_recovery_with_no_corruption() {
432
- let mut wal = DurablePersistenceLayer::new();
433
- wal.write_with_crash(
434
- "op1".to_string(),
435
- vec![1, 2, 3],
436
- PersistenceCrashPoint::AfterWriteReturns,
437
- );
438
- wal.write_with_crash(
439
- "op2".to_string(),
440
- vec![4, 5, 6],
441
- PersistenceCrashPoint::AfterWriteReturns,
442
- );
443
-
444
- let recovery = wal.recover();
445
- assert_eq!(recovery.recovered_operations.len(), 2);
446
- assert_eq!(recovery.corrupted_entries.len(), 0);
447
- }
448
-
449
- #[test]
450
- fn test_recovery_detects_corruption() {
451
- let mut wal = DurablePersistenceLayer::new();
452
- wal.write_with_crash(
453
- "op1".to_string(),
454
- vec![1, 2, 3],
455
- PersistenceCrashPoint::AfterWriteReturns,
456
- );
457
-
458
- // Corrupt the entry
459
- wal.corrupt_tail(1);
460
-
461
- let recovery = wal.recover();
462
- assert!(recovery.corrupted_entries.len() > 0);
463
- }
464
-
465
- #[test]
466
- fn test_truncate_at_byte() {
467
- let mut wal = DurablePersistenceLayer::new();
468
- wal.write_with_crash(
469
- "op1".to_string(),
470
- vec![1, 2, 3, 4, 5],
471
- PersistenceCrashPoint::AfterWriteReturns,
472
- );
473
- wal.write_with_crash(
474
- "op2".to_string(),
475
- vec![6, 7, 8, 9, 10],
476
- PersistenceCrashPoint::AfterWriteReturns,
477
- );
478
-
479
- // Truncate after 7 bytes (partway through second entry)
480
- wal.truncate_at_byte(7);
481
-
482
- let recovery = wal.recover();
483
- // Should have partial or truncated data
484
- assert!(recovery.total_entries <= 2);
485
- }
486
-
487
- #[test]
488
- fn test_fsync_durability_contract() {
489
- let mut verifier = PersistenceContractVerifier::new();
490
-
491
- verifier.record_scenario(
492
- "full_fsync".to_string(),
493
- vec!["op1".to_string(), "op2".to_string()],
494
- vec!["op1".to_string(), "op2".to_string()],
495
- 0,
496
- );
497
-
498
- let result = verifier.verify_fsync_durability();
499
- assert!(matches!(result, FsyncDurabilityResult::Satisfied { .. }));
500
- }
501
-
502
- #[test]
503
- fn test_fsync_durability_violation() {
504
- let mut verifier = PersistenceContractVerifier::new();
505
-
506
- verifier.record_scenario(
507
- "lost_data".to_string(),
508
- vec!["op1".to_string(), "op2".to_string(), "op3".to_string()],
509
- vec!["op1".to_string()],
510
- 0,
511
- );
512
-
513
- let result = verifier.verify_fsync_durability();
514
- assert!(matches!(result, FsyncDurabilityResult::Violated { .. }));
515
- }
516
-
517
- #[test]
518
- fn test_corruption_detection() {
519
- let mut verifier = PersistenceContractVerifier::new();
520
-
521
- // Corruption detected (not silently included)
522
- verifier.record_scenario(
523
- "detected_corruption".to_string(),
524
- vec!["op1".to_string(), "op2".to_string()],
525
- vec!["op1".to_string()], // op2 detected as corrupted and dropped
526
- 1,
527
- );
528
-
529
- let result = verifier.verify_corruption_detection();
530
- assert!(matches!(
531
- result,
532
- CorruptionDetectionResult::Satisfied { .. }
533
- ));
534
- }
535
-
536
- #[test]
537
- fn test_multiple_crash_points() {
538
- let crash_points = vec![
539
- PersistenceCrashPoint::BeforeWrite,
540
- PersistenceCrashPoint::AfterBufferBeforeFsync,
541
- PersistenceCrashPoint::DuringFsync,
542
- PersistenceCrashPoint::AfterFsyncBeforeReturn,
543
- PersistenceCrashPoint::AfterWriteReturns,
544
- ];
545
-
546
- for crash_point in crash_points {
547
- let mut wal = DurablePersistenceLayer::new();
548
- let result = wal.write_with_crash("op1".to_string(), vec![1, 2, 3], crash_point);
549
-
550
- // Verify recovery is deterministic regardless of crash point
551
- let _recovery = wal.recover();
552
- // Should not panic
553
- assert!(true);
554
- }
555
- }
556
-
557
- #[test]
558
- fn test_wal_entry_checksum() {
559
- let entry = WALEntry::new(1, "op1".to_string(), vec![1, 2, 3]);
560
- assert!(entry.verify_checksum());
561
-
562
- let mut corrupted = entry.clone();
563
- corrupted.data[0] ^= 0xFF;
564
- assert!(!corrupted.verify_checksum());
565
- }
566
- }