create-feltdb 0.11.2 → 0.11.4
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.
- package/dist/package-versions.js +1 -1
- package/dist/server-source/crates/feltdb/src/lib.rs +31 -30
- package/dist/server-source/crates/feltdb/src/semantic_decision.rs +1917 -0
- package/dist/server-source/crates/feltdb/tests/semantic_decision.rs +1165 -0
- package/dist/server-source/crates/feltdb-server/src/main.rs +232 -95
- package/dist/server-source/crates/feltdb-wasm/src/lib.rs +73 -8
- package/package.json +1 -1
package/dist/package-versions.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// One release train keeps generated applications installable. The repository
|
|
2
2
|
// validation script checks these values against every workspace manifest.
|
|
3
|
-
export const FELTDB_PACKAGE_VERSION = '0.11.
|
|
3
|
+
export const FELTDB_PACKAGE_VERSION = '0.11.4';
|
|
4
4
|
export const feltdbPackageRange = `^${FELTDB_PACKAGE_VERSION}`;
|
|
@@ -108,6 +108,7 @@ pub mod replica_membership;
|
|
|
108
108
|
pub mod replication_manager;
|
|
109
109
|
pub mod replication_protocol;
|
|
110
110
|
mod routing;
|
|
111
|
+
pub mod semantic_decision;
|
|
111
112
|
pub mod sharding;
|
|
112
113
|
pub mod state_conflict_contract;
|
|
113
114
|
pub mod state_contract;
|
|
@@ -223,6 +224,22 @@ pub use routing::{
|
|
|
223
224
|
CapabilityRouter, ExecutionClaim, ExecutionClaimer, ExecutionResultPublisher, PeerStateVersion,
|
|
224
225
|
RouteDecision,
|
|
225
226
|
};
|
|
227
|
+
pub use semantic_decision::{
|
|
228
|
+
authorize_context, decide_record, decision_cache_key, deterministic_request_key,
|
|
229
|
+
execute_decision_batch, execute_decision_transport, execute_inline_decision_transport, jev,
|
|
230
|
+
run_choice_diagnostics, run_decision_benchmark, validate_decision_definition,
|
|
231
|
+
validate_decision_result, BinaryDecisionResult, ChoiceDecisionResult, ChoiceDiagnosticsReport,
|
|
232
|
+
ChoiceExpansionObservation, ChoicePermutationObservation, DecisionAuthorizationConfig,
|
|
233
|
+
DecisionAuthorizationDecision, DecisionAuthorizationGate, DecisionBatch, DecisionBatchDecision,
|
|
234
|
+
DecisionBatchEvaluation, DecisionBenchmarkCase, DecisionBenchmarkReport, DecisionContextPacket,
|
|
235
|
+
DecisionDefinition, DecisionError, DecisionEvaluation, DecisionEvidence, DecisionEvidenceField,
|
|
236
|
+
DecisionExecutionMethod, DecisionJudgmentRecord, DecisionKind, DecisionOptions,
|
|
237
|
+
DecisionPrincipal, DecisionProvenance, DecisionRecordRef, DecisionRequest, DecisionResult,
|
|
238
|
+
DecisionRuntime, DecisionRuntimeCapabilities, DecisionRuntimeMetadata, DecisionStateReference,
|
|
239
|
+
DecisionStatus, DecisionTransportAuthorization, DecisionTransportExecutionRequest,
|
|
240
|
+
DecisionTransportExecutionResponse, DecisionTransportRuntime, DeterministicDecisionRuntime,
|
|
241
|
+
ScoreDecisionResult, WeightedOption, DEFAULT_DECISION_COLLECTION,
|
|
242
|
+
};
|
|
226
243
|
pub use sharding::{
|
|
227
244
|
HotspotAlert, RebalanceOperation, ShardDistributionSummary, ShardId, ShardKey, ShardManager,
|
|
228
245
|
ShardMetrics, ShardRange, ShardingStrategy,
|
|
@@ -1998,8 +2015,7 @@ impl FeltDb {
|
|
|
1998
2015
|
let databases = OPEN_DATABASES.get_or_init(|| Mutex::new(HashMap::new()));
|
|
1999
2016
|
let mut databases = databases.lock().expect("open database registry poisoned");
|
|
2000
2017
|
if let Some(open) = databases.get(&path) {
|
|
2001
|
-
if let (Some(inner), Some(ownership)) =
|
|
2002
|
-
(open.inner.upgrade(), open.ownership.upgrade())
|
|
2018
|
+
if let (Some(inner), Some(ownership)) = (open.inner.upgrade(), open.ownership.upgrade())
|
|
2003
2019
|
{
|
|
2004
2020
|
return Ok(Self {
|
|
2005
2021
|
inner,
|
|
@@ -3342,12 +3358,7 @@ impl FeltDb {
|
|
|
3342
3358
|
append_event_locked(&mut inner, &row)?;
|
|
3343
3359
|
let base_revision = inner.authority_revision;
|
|
3344
3360
|
inner.authority_revision += 1;
|
|
3345
|
-
remember_operation_attribution(
|
|
3346
|
-
&mut inner,
|
|
3347
|
-
&row,
|
|
3348
|
-
base_revision,
|
|
3349
|
-
base_revision + 1,
|
|
3350
|
-
);
|
|
3361
|
+
remember_operation_attribution(&mut inner, &row, base_revision, base_revision + 1);
|
|
3351
3362
|
inner.put_row(row);
|
|
3352
3363
|
if let Some(revision) = planned {
|
|
3353
3364
|
persist_revision_locked(&mut inner, revision)?;
|
|
@@ -3428,12 +3439,7 @@ impl FeltDb {
|
|
|
3428
3439
|
append_event_locked(&mut inner, &row)?;
|
|
3429
3440
|
let base_revision = inner.authority_revision;
|
|
3430
3441
|
inner.authority_revision += 1;
|
|
3431
|
-
remember_operation_attribution(
|
|
3432
|
-
&mut inner,
|
|
3433
|
-
&row,
|
|
3434
|
-
base_revision,
|
|
3435
|
-
base_revision + 1,
|
|
3436
|
-
);
|
|
3442
|
+
remember_operation_attribution(&mut inner, &row, base_revision, base_revision + 1);
|
|
3437
3443
|
inner.put_row(row);
|
|
3438
3444
|
if let Some(revision) = planned {
|
|
3439
3445
|
persist_revision_locked(&mut inner, revision)?;
|
|
@@ -5109,15 +5115,12 @@ fn replay_log(inner: &mut Inner) -> Result<()> {
|
|
|
5109
5115
|
inner.change_log.observed_versions = header.observed_versions;
|
|
5110
5116
|
for attribution in header.transaction_history {
|
|
5111
5117
|
let attribution = normalize_transaction_attribution(attribution);
|
|
5112
|
-
inner.authority_revision =
|
|
5113
|
-
.authority_revision
|
|
5114
|
-
|
|
5115
|
-
|
|
5116
|
-
.
|
|
5117
|
-
|
|
5118
|
-
attribution.transaction_id.clone(),
|
|
5119
|
-
(attribution.base_revision, attribution.commit_revision),
|
|
5120
|
-
);
|
|
5118
|
+
inner.authority_revision =
|
|
5119
|
+
inner.authority_revision.max(attribution.commit_revision);
|
|
5120
|
+
inner.transaction_revisions.insert(
|
|
5121
|
+
attribution.transaction_id.clone(),
|
|
5122
|
+
(attribution.base_revision, attribution.commit_revision),
|
|
5123
|
+
);
|
|
5121
5124
|
inner
|
|
5122
5125
|
.applied_transactions
|
|
5123
5126
|
.insert(attribution.transaction_id.clone());
|
|
@@ -5232,12 +5235,7 @@ fn replay_log(inner: &mut Inner) -> Result<()> {
|
|
|
5232
5235
|
let base_revision = inner.authority_revision;
|
|
5233
5236
|
inner.authority_revision += 1;
|
|
5234
5237
|
if !snapshot_log {
|
|
5235
|
-
remember_operation_attribution(
|
|
5236
|
-
inner,
|
|
5237
|
-
&row,
|
|
5238
|
-
base_revision,
|
|
5239
|
-
base_revision + 1,
|
|
5240
|
-
);
|
|
5238
|
+
remember_operation_attribution(inner, &row, base_revision, base_revision + 1);
|
|
5241
5239
|
}
|
|
5242
5240
|
}
|
|
5243
5241
|
if let Some(id) = row
|
|
@@ -5577,7 +5575,10 @@ mod tests {
|
|
|
5577
5575
|
assert_eq!(held, TRANSACTION_ATTRIBUTION_WINDOW);
|
|
5578
5576
|
let recent = db.recent_transactions(3).expect("attributions");
|
|
5579
5577
|
assert_eq!(
|
|
5580
|
-
recent
|
|
5578
|
+
recent
|
|
5579
|
+
.iter()
|
|
5580
|
+
.map(|value| value.transaction_id.clone())
|
|
5581
|
+
.collect::<Vec<_>>(),
|
|
5581
5582
|
vec![
|
|
5582
5583
|
format!("tx_{}", commits - 1),
|
|
5583
5584
|
format!("tx_{}", commits - 2),
|