@smthrs/engine-store 0.0.0-stage → 1.0.0-rc.3
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/CHANGELOG.md +247 -0
- package/LICENSE +21 -0
- package/README.md +146 -2
- package/dist/cjs/ArtifactGc.d.ts +235 -0
- package/dist/cjs/ArtifactGc.d.ts.map +1 -0
- package/dist/cjs/ArtifactGc.js +183 -0
- package/dist/cjs/ArtifactGc.js.map +7 -0
- package/dist/cjs/ArtifactSync.d.ts +164 -0
- package/dist/cjs/ArtifactSync.d.ts.map +1 -0
- package/dist/cjs/ArtifactSync.js +144 -0
- package/dist/cjs/ArtifactSync.js.map +7 -0
- package/dist/cjs/CacheSync.d.ts +112 -0
- package/dist/cjs/CacheSync.d.ts.map +1 -0
- package/dist/cjs/CacheSync.js +64 -0
- package/dist/cjs/CacheSync.js.map +7 -0
- package/dist/cjs/DeferredClockFold.d.ts +354 -0
- package/dist/cjs/DeferredClockFold.d.ts.map +1 -0
- package/dist/cjs/DeferredClockFold.js +335 -0
- package/dist/cjs/DeferredClockFold.js.map +7 -0
- package/dist/cjs/DisasterRecovery.d.ts +431 -0
- package/dist/cjs/DisasterRecovery.d.ts.map +1 -0
- package/dist/cjs/DisasterRecovery.js +453 -0
- package/dist/cjs/DisasterRecovery.js.map +7 -0
- package/dist/cjs/DurableEngineState.d.ts +776 -0
- package/dist/cjs/DurableEngineState.d.ts.map +1 -0
- package/dist/cjs/DurableEngineState.js +1536 -0
- package/dist/cjs/DurableEngineState.js.map +7 -0
- package/dist/cjs/EngineStore.d.ts +158 -0
- package/dist/cjs/EngineStore.d.ts.map +1 -0
- package/dist/cjs/EngineStore.js +398 -0
- package/dist/cjs/EngineStore.js.map +7 -0
- package/dist/cjs/EngineStoreMetrics.d.ts +276 -0
- package/dist/cjs/EngineStoreMetrics.d.ts.map +1 -0
- package/dist/cjs/EngineStoreMetrics.js +135 -0
- package/dist/cjs/EngineStoreMetrics.js.map +7 -0
- package/dist/cjs/Errors.d.ts +22 -0
- package/dist/cjs/Errors.d.ts.map +1 -0
- package/dist/cjs/Errors.js +39 -0
- package/dist/cjs/Errors.js.map +7 -0
- package/dist/cjs/EventTypes.d.ts +27 -0
- package/dist/cjs/EventTypes.d.ts.map +1 -0
- package/dist/cjs/EventTypes.js +37 -0
- package/dist/cjs/EventTypes.js.map +7 -0
- package/dist/cjs/ExecutionFacts.d.ts +59 -0
- package/dist/cjs/ExecutionFacts.d.ts.map +1 -0
- package/dist/cjs/ExecutionFacts.js +123 -0
- package/dist/cjs/ExecutionFacts.js.map +7 -0
- package/dist/cjs/ExecutionSnapshot.d.ts +117 -0
- package/dist/cjs/ExecutionSnapshot.d.ts.map +1 -0
- package/dist/cjs/ExecutionSnapshot.js +111 -0
- package/dist/cjs/ExecutionSnapshot.js.map +7 -0
- package/dist/cjs/Inconsistency.d.ts +154 -0
- package/dist/cjs/Inconsistency.d.ts.map +1 -0
- package/dist/cjs/Inconsistency.js +135 -0
- package/dist/cjs/Inconsistency.js.map +7 -0
- package/dist/cjs/Migrations.d.ts +56 -0
- package/dist/cjs/Migrations.d.ts.map +1 -0
- package/dist/cjs/Migrations.js +78 -0
- package/dist/cjs/Migrations.js.map +7 -0
- package/dist/cjs/OwnerIdentity.d.ts +91 -0
- package/dist/cjs/OwnerIdentity.d.ts.map +1 -0
- package/dist/cjs/OwnerIdentity.js +65 -0
- package/dist/cjs/OwnerIdentity.js.map +7 -0
- package/dist/cjs/PlanInputStore.d.ts +110 -0
- package/dist/cjs/PlanInputStore.d.ts.map +1 -0
- package/dist/cjs/PlanInputStore.js +224 -0
- package/dist/cjs/PlanInputStore.js.map +7 -0
- package/dist/cjs/PlanMergeStore.d.ts +113 -0
- package/dist/cjs/PlanMergeStore.d.ts.map +1 -0
- package/dist/cjs/PlanMergeStore.js +255 -0
- package/dist/cjs/PlanMergeStore.js.map +7 -0
- package/dist/cjs/PlanScheduler.d.ts +363 -0
- package/dist/cjs/PlanScheduler.d.ts.map +1 -0
- package/dist/cjs/PlanScheduler.js +1090 -0
- package/dist/cjs/PlanScheduler.js.map +7 -0
- package/dist/cjs/Reconciliation.d.ts +175 -0
- package/dist/cjs/Reconciliation.d.ts.map +1 -0
- package/dist/cjs/Reconciliation.js +119 -0
- package/dist/cjs/Reconciliation.js.map +7 -0
- package/dist/cjs/ReplayOnly.d.ts +91 -0
- package/dist/cjs/ReplayOnly.d.ts.map +1 -0
- package/dist/cjs/ReplayOnly.js +52 -0
- package/dist/cjs/ReplayOnly.js.map +7 -0
- package/dist/cjs/Retention.d.ts +113 -0
- package/dist/cjs/Retention.d.ts.map +1 -0
- package/dist/cjs/Retention.js +99 -0
- package/dist/cjs/Retention.js.map +7 -0
- package/dist/cjs/RunCatalogRead.d.ts +17 -0
- package/dist/cjs/RunCatalogRead.d.ts.map +1 -0
- package/dist/cjs/RunCatalogRead.js +33 -0
- package/dist/cjs/RunCatalogRead.js.map +7 -0
- package/dist/cjs/RunChangeFeed.d.ts +75 -0
- package/dist/cjs/RunChangeFeed.d.ts.map +1 -0
- package/dist/cjs/RunChangeFeed.js +96 -0
- package/dist/cjs/RunChangeFeed.js.map +7 -0
- package/dist/cjs/RunState.d.ts +116 -0
- package/dist/cjs/RunState.d.ts.map +1 -0
- package/dist/cjs/RunState.js +76 -0
- package/dist/cjs/RunState.js.map +7 -0
- package/dist/cjs/Selection.d.ts +495 -0
- package/dist/cjs/Selection.d.ts.map +1 -0
- package/dist/cjs/Selection.js +288 -0
- package/dist/cjs/Selection.js.map +7 -0
- package/dist/cjs/SelectionStore.d.ts +141 -0
- package/dist/cjs/SelectionStore.d.ts.map +1 -0
- package/dist/cjs/SelectionStore.js +229 -0
- package/dist/cjs/SelectionStore.js.map +7 -0
- package/dist/cjs/StepBoundary.d.ts +501 -0
- package/dist/cjs/StepBoundary.d.ts.map +1 -0
- package/dist/cjs/StepBoundary.js +619 -0
- package/dist/cjs/StepBoundary.js.map +7 -0
- package/dist/cjs/StepCacheFold.d.ts +148 -0
- package/dist/cjs/StepCacheFold.d.ts.map +1 -0
- package/dist/cjs/StepCacheFold.js +131 -0
- package/dist/cjs/StepCacheFold.js.map +7 -0
- package/dist/cjs/StepSandbox.d.ts +78 -0
- package/dist/cjs/StepSandbox.d.ts.map +1 -0
- package/dist/cjs/StepSandbox.js +75 -0
- package/dist/cjs/StepSandbox.js.map +7 -0
- package/dist/cjs/WakeBus.d.ts +116 -0
- package/dist/cjs/WakeBus.d.ts.map +1 -0
- package/dist/cjs/WakeBus.js +89 -0
- package/dist/cjs/WakeBus.js.map +7 -0
- package/dist/cjs/WorkspaceSandbox.d.ts +619 -0
- package/dist/cjs/WorkspaceSandbox.d.ts.map +1 -0
- package/dist/cjs/WorkspaceSandbox.js +711 -0
- package/dist/cjs/WorkspaceSandbox.js.map +7 -0
- package/dist/cjs/index.d.ts +157 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +95 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/ActionPersistence.d.ts +276 -0
- package/dist/cjs/internal/ActionPersistence.d.ts.map +1 -0
- package/dist/cjs/internal/ActionPersistence.js +1395 -0
- package/dist/cjs/internal/ActionPersistence.js.map +7 -0
- package/dist/cjs/internal/ArtifactRoots.d.ts +38 -0
- package/dist/cjs/internal/ArtifactRoots.d.ts.map +1 -0
- package/dist/cjs/internal/ArtifactRoots.js +89 -0
- package/dist/cjs/internal/ArtifactRoots.js.map +7 -0
- package/dist/cjs/internal/AttemptAdmission.d.ts +53 -0
- package/dist/cjs/internal/AttemptAdmission.d.ts.map +1 -0
- package/dist/cjs/internal/AttemptAdmission.js +52 -0
- package/dist/cjs/internal/AttemptAdmission.js.map +7 -0
- package/dist/cjs/internal/AttemptLifecycle.d.ts +245 -0
- package/dist/cjs/internal/AttemptLifecycle.d.ts.map +1 -0
- package/dist/cjs/internal/AttemptLifecycle.js +112 -0
- package/dist/cjs/internal/AttemptLifecycle.js.map +7 -0
- package/dist/cjs/internal/AttemptProbe.d.ts +53 -0
- package/dist/cjs/internal/AttemptProbe.d.ts.map +1 -0
- package/dist/cjs/internal/AttemptProbe.js +66 -0
- package/dist/cjs/internal/AttemptProbe.js.map +7 -0
- package/dist/cjs/internal/CacheAdmission.d.ts +79 -0
- package/dist/cjs/internal/CacheAdmission.d.ts.map +1 -0
- package/dist/cjs/internal/CacheAdmission.js +71 -0
- package/dist/cjs/internal/CacheAdmission.js.map +7 -0
- package/dist/cjs/internal/CacheAgeHistory.d.ts +27 -0
- package/dist/cjs/internal/CacheAgeHistory.d.ts.map +1 -0
- package/dist/cjs/internal/CacheAgeHistory.js +61 -0
- package/dist/cjs/internal/CacheAgeHistory.js.map +7 -0
- package/dist/cjs/internal/CacheAgeVerdicts.d.ts +15 -0
- package/dist/cjs/internal/CacheAgeVerdicts.d.ts.map +1 -0
- package/dist/cjs/internal/CacheAgeVerdicts.js +73 -0
- package/dist/cjs/internal/CacheAgeVerdicts.js.map +7 -0
- package/dist/cjs/internal/CacheOutputPolicy.d.ts +24 -0
- package/dist/cjs/internal/CacheOutputPolicy.d.ts.map +1 -0
- package/dist/cjs/internal/CacheOutputPolicy.js +75 -0
- package/dist/cjs/internal/CacheOutputPolicy.js.map +7 -0
- package/dist/cjs/internal/CachePublication.d.ts +97 -0
- package/dist/cjs/internal/CachePublication.d.ts.map +1 -0
- package/dist/cjs/internal/CachePublication.js +80 -0
- package/dist/cjs/internal/CachePublication.js.map +7 -0
- package/dist/cjs/internal/CallFacts.d.ts +15 -0
- package/dist/cjs/internal/CallFacts.d.ts.map +1 -0
- package/dist/cjs/internal/CallFacts.js +97 -0
- package/dist/cjs/internal/CallFacts.js.map +7 -0
- package/dist/cjs/internal/CopiedRecord.d.ts +61 -0
- package/dist/cjs/internal/CopiedRecord.d.ts.map +1 -0
- package/dist/cjs/internal/CopiedRecord.js +134 -0
- package/dist/cjs/internal/CopiedRecord.js.map +7 -0
- package/dist/cjs/internal/DeferredPersistence.d.ts +108 -0
- package/dist/cjs/internal/DeferredPersistence.d.ts.map +1 -0
- package/dist/cjs/internal/DeferredPersistence.js +270 -0
- package/dist/cjs/internal/DeferredPersistence.js.map +7 -0
- package/dist/cjs/internal/EffectRecords.d.ts +92 -0
- package/dist/cjs/internal/EffectRecords.d.ts.map +1 -0
- package/dist/cjs/internal/EffectRecords.js +63 -0
- package/dist/cjs/internal/EffectRecords.js.map +7 -0
- package/dist/cjs/internal/EngineJj.d.ts +30 -0
- package/dist/cjs/internal/EngineJj.d.ts.map +1 -0
- package/dist/cjs/internal/EngineJj.js +42 -0
- package/dist/cjs/internal/EngineJj.js.map +7 -0
- package/dist/cjs/internal/EngineStateSchema.d.ts +68 -0
- package/dist/cjs/internal/EngineStateSchema.d.ts.map +1 -0
- package/dist/cjs/internal/EngineStateSchema.js +58 -0
- package/dist/cjs/internal/EngineStateSchema.js.map +7 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.d.ts +162 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.d.ts.map +1 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.js +199 -0
- package/dist/cjs/internal/ExecutionSnapshotRead.js.map +7 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts +39 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.js +105 -0
- package/dist/cjs/internal/ExecutionSnapshotRelations.js.map +7 -0
- package/dist/cjs/internal/ExitEncoding.d.ts +180 -0
- package/dist/cjs/internal/ExitEncoding.d.ts.map +1 -0
- package/dist/cjs/internal/ExitEncoding.js +236 -0
- package/dist/cjs/internal/ExitEncoding.js.map +7 -0
- package/dist/cjs/internal/FileBoundarySnapshot.d.ts +14 -0
- package/dist/cjs/internal/FileBoundarySnapshot.d.ts.map +1 -0
- package/dist/cjs/internal/FileBoundarySnapshot.js +51 -0
- package/dist/cjs/internal/FileBoundarySnapshot.js.map +7 -0
- package/dist/cjs/internal/FileEnumeration.d.ts +127 -0
- package/dist/cjs/internal/FileEnumeration.d.ts.map +1 -0
- package/dist/cjs/internal/FileEnumeration.js +194 -0
- package/dist/cjs/internal/FileEnumeration.js.map +7 -0
- package/dist/cjs/internal/HostReflection.d.ts +80 -0
- package/dist/cjs/internal/HostReflection.d.ts.map +1 -0
- package/dist/cjs/internal/HostReflection.js +43 -0
- package/dist/cjs/internal/HostReflection.js.map +7 -0
- package/dist/cjs/internal/JournalRecords.d.ts +325 -0
- package/dist/cjs/internal/JournalRecords.d.ts.map +1 -0
- package/dist/cjs/internal/JournalRecords.js +122 -0
- package/dist/cjs/internal/JournalRecords.js.map +7 -0
- package/dist/cjs/internal/NodeJournal.d.ts +157 -0
- package/dist/cjs/internal/NodeJournal.d.ts.map +1 -0
- package/dist/cjs/internal/NodeJournal.js +192 -0
- package/dist/cjs/internal/NodeJournal.js.map +7 -0
- package/dist/cjs/internal/Ordering.d.ts +14 -0
- package/dist/cjs/internal/Ordering.d.ts.map +1 -0
- package/dist/cjs/internal/Ordering.js +25 -0
- package/dist/cjs/internal/Ordering.js.map +7 -0
- package/dist/cjs/internal/PlanInputs.d.ts +14 -0
- package/dist/cjs/internal/PlanInputs.d.ts.map +1 -0
- package/dist/cjs/internal/PlanInputs.js +78 -0
- package/dist/cjs/internal/PlanInputs.js.map +7 -0
- package/dist/cjs/internal/PlanMerges.d.ts +178 -0
- package/dist/cjs/internal/PlanMerges.d.ts.map +1 -0
- package/dist/cjs/internal/PlanMerges.js +125 -0
- package/dist/cjs/internal/PlanMerges.js.map +7 -0
- package/dist/cjs/internal/ProvenanceSlot.d.ts +30 -0
- package/dist/cjs/internal/ProvenanceSlot.d.ts.map +1 -0
- package/dist/cjs/internal/ProvenanceSlot.js +53 -0
- package/dist/cjs/internal/ProvenanceSlot.js.map +7 -0
- package/dist/cjs/internal/ResultEnvelope.d.ts +88 -0
- package/dist/cjs/internal/ResultEnvelope.d.ts.map +1 -0
- package/dist/cjs/internal/ResultEnvelope.js +90 -0
- package/dist/cjs/internal/ResultEnvelope.js.map +7 -0
- package/dist/cjs/internal/RetentionOps.d.ts +414 -0
- package/dist/cjs/internal/RetentionOps.d.ts.map +1 -0
- package/dist/cjs/internal/RetentionOps.js +354 -0
- package/dist/cjs/internal/RetentionOps.js.map +7 -0
- package/dist/cjs/internal/RunCatalogOps.d.ts +118 -0
- package/dist/cjs/internal/RunCatalogOps.d.ts.map +1 -0
- package/dist/cjs/internal/RunCatalogOps.js +85 -0
- package/dist/cjs/internal/RunCatalogOps.js.map +7 -0
- package/dist/cjs/internal/RunCoordinator.d.ts +78 -0
- package/dist/cjs/internal/RunCoordinator.d.ts.map +1 -0
- package/dist/cjs/internal/RunCoordinator.js +123 -0
- package/dist/cjs/internal/RunCoordinator.js.map +7 -0
- package/dist/cjs/internal/RunDriver.d.ts +192 -0
- package/dist/cjs/internal/RunDriver.d.ts.map +1 -0
- package/dist/cjs/internal/RunDriver.js +1584 -0
- package/dist/cjs/internal/RunDriver.js.map +7 -0
- package/dist/cjs/internal/RunLifecycle.d.ts +22 -0
- package/dist/cjs/internal/RunLifecycle.d.ts.map +1 -0
- package/dist/cjs/internal/RunLifecycle.js +63 -0
- package/dist/cjs/internal/RunLifecycle.js.map +7 -0
- package/dist/cjs/internal/RunListing.d.ts +78 -0
- package/dist/cjs/internal/RunListing.d.ts.map +1 -0
- package/dist/cjs/internal/RunListing.js +171 -0
- package/dist/cjs/internal/RunListing.js.map +7 -0
- package/dist/cjs/internal/RunListingError.d.ts +35 -0
- package/dist/cjs/internal/RunListingError.d.ts.map +1 -0
- package/dist/cjs/internal/RunListingError.js +47 -0
- package/dist/cjs/internal/RunListingError.js.map +7 -0
- package/dist/cjs/internal/RuntimeGraph.d.ts +73 -0
- package/dist/cjs/internal/RuntimeGraph.d.ts.map +1 -0
- package/dist/cjs/internal/RuntimeGraph.js +180 -0
- package/dist/cjs/internal/RuntimeGraph.js.map +7 -0
- package/dist/cjs/internal/SandboxedExecution.d.ts +80 -0
- package/dist/cjs/internal/SandboxedExecution.d.ts.map +1 -0
- package/dist/cjs/internal/SandboxedExecution.js +104 -0
- package/dist/cjs/internal/SandboxedExecution.js.map +7 -0
- package/dist/cjs/internal/StateTransaction.d.ts +44 -0
- package/dist/cjs/internal/StateTransaction.d.ts.map +1 -0
- package/dist/cjs/internal/StateTransaction.js +52 -0
- package/dist/cjs/internal/StateTransaction.js.map +7 -0
- package/dist/cjs/internal/StepFacts.d.ts +14 -0
- package/dist/cjs/internal/StepFacts.d.ts.map +1 -0
- package/dist/cjs/internal/StepFacts.js +58 -0
- package/dist/cjs/internal/StepFacts.js.map +7 -0
- package/dist/cjs/internal/TypedEvents.d.ts +14 -0
- package/dist/cjs/internal/TypedEvents.d.ts.map +1 -0
- package/dist/cjs/internal/TypedEvents.js +37 -0
- package/dist/cjs/internal/TypedEvents.js.map +7 -0
- package/dist/cjs/migrations/0001_initial.d.ts +17 -0
- package/dist/cjs/migrations/0001_initial.d.ts.map +1 -0
- package/dist/cjs/migrations/0001_initial.js +61 -0
- package/dist/cjs/migrations/0001_initial.js.map +7 -0
- package/dist/cjs/migrations/0002_selection_store.d.ts +15 -0
- package/dist/cjs/migrations/0002_selection_store.d.ts.map +1 -0
- package/dist/cjs/migrations/0002_selection_store.js +56 -0
- package/dist/cjs/migrations/0002_selection_store.js.map +7 -0
- package/dist/cjs/migrations/0003_plan_inputs.d.ts +13 -0
- package/dist/cjs/migrations/0003_plan_inputs.d.ts.map +1 -0
- package/dist/cjs/migrations/0003_plan_inputs.js +90 -0
- package/dist/cjs/migrations/0003_plan_inputs.js.map +7 -0
- package/dist/cjs/migrations/0004_plan_environment.d.ts +14 -0
- package/dist/cjs/migrations/0004_plan_environment.d.ts.map +1 -0
- package/dist/cjs/migrations/0004_plan_environment.js +56 -0
- package/dist/cjs/migrations/0004_plan_environment.js.map +7 -0
- package/dist/cjs/migrations/0005_plan_merges.d.ts +14 -0
- package/dist/cjs/migrations/0005_plan_merges.d.ts.map +1 -0
- package/dist/cjs/migrations/0005_plan_merges.js +82 -0
- package/dist/cjs/migrations/0005_plan_merges.js.map +7 -0
- package/dist/cjs/migrations/0006_execution_listing.d.ts +15 -0
- package/dist/cjs/migrations/0006_execution_listing.d.ts.map +1 -0
- package/dist/cjs/migrations/0006_execution_listing.js +101 -0
- package/dist/cjs/migrations/0006_execution_listing.js.map +7 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.d.ts +15 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.d.ts.map +1 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.js +40 -0
- package/dist/cjs/migrations/0007_run_parent_sequence.js.map +7 -0
- package/dist/cjs/migrations/0008_deferred_consumption.d.ts +16 -0
- package/dist/cjs/migrations/0008_deferred_consumption.d.ts.map +1 -0
- package/dist/cjs/migrations/0008_deferred_consumption.js +45 -0
- package/dist/cjs/migrations/0008_deferred_consumption.js.map +7 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts +24 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.js +141 -0
- package/dist/cjs/migrations/0009_deferred_clock_facts.js.map +7 -0
- package/dist/cjs/migrations/0010_pending_cancellation.d.ts +15 -0
- package/dist/cjs/migrations/0010_pending_cancellation.d.ts.map +1 -0
- package/dist/cjs/migrations/0010_pending_cancellation.js +41 -0
- package/dist/cjs/migrations/0010_pending_cancellation.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/test/TestStores.d.ts +89 -0
- package/dist/cjs/test/TestStores.d.ts.map +1 -0
- package/dist/cjs/test/TestStores.js +98 -0
- package/dist/cjs/test/TestStores.js.map +7 -0
- package/dist/esm/ArtifactGc.d.ts +235 -0
- package/dist/esm/ArtifactGc.d.ts.map +1 -0
- package/dist/esm/ArtifactGc.js +268 -0
- package/dist/esm/ArtifactGc.js.map +1 -0
- package/dist/esm/ArtifactSync.d.ts +164 -0
- package/dist/esm/ArtifactSync.d.ts.map +1 -0
- package/dist/esm/ArtifactSync.js +176 -0
- package/dist/esm/ArtifactSync.js.map +1 -0
- package/dist/esm/CacheSync.d.ts +112 -0
- package/dist/esm/CacheSync.d.ts.map +1 -0
- package/dist/esm/CacheSync.js +94 -0
- package/dist/esm/CacheSync.js.map +1 -0
- package/dist/esm/DeferredClockFold.d.ts +354 -0
- package/dist/esm/DeferredClockFold.d.ts.map +1 -0
- package/dist/esm/DeferredClockFold.js +472 -0
- package/dist/esm/DeferredClockFold.js.map +1 -0
- package/dist/esm/DisasterRecovery.d.ts +431 -0
- package/dist/esm/DisasterRecovery.d.ts.map +1 -0
- package/dist/esm/DisasterRecovery.js +523 -0
- package/dist/esm/DisasterRecovery.js.map +1 -0
- package/dist/esm/DurableEngineState.d.ts +776 -0
- package/dist/esm/DurableEngineState.d.ts.map +1 -0
- package/dist/esm/DurableEngineState.js +1648 -0
- package/dist/esm/DurableEngineState.js.map +1 -0
- package/dist/esm/EngineStore.d.ts +158 -0
- package/dist/esm/EngineStore.d.ts.map +1 -0
- package/dist/esm/EngineStore.js +403 -0
- package/dist/esm/EngineStore.js.map +1 -0
- package/dist/esm/EngineStoreMetrics.d.ts +276 -0
- package/dist/esm/EngineStoreMetrics.d.ts.map +1 -0
- package/dist/esm/EngineStoreMetrics.js +260 -0
- package/dist/esm/EngineStoreMetrics.js.map +1 -0
- package/dist/esm/Errors.d.ts +22 -0
- package/dist/esm/Errors.d.ts.map +1 -0
- package/dist/esm/Errors.js +22 -0
- package/dist/esm/Errors.js.map +1 -0
- package/dist/esm/EventTypes.d.ts +27 -0
- package/dist/esm/EventTypes.d.ts.map +1 -0
- package/dist/esm/EventTypes.js +27 -0
- package/dist/esm/EventTypes.js.map +1 -0
- package/dist/esm/ExecutionFacts.d.ts +59 -0
- package/dist/esm/ExecutionFacts.d.ts.map +1 -0
- package/dist/esm/ExecutionFacts.js +96 -0
- package/dist/esm/ExecutionFacts.js.map +1 -0
- package/dist/esm/ExecutionSnapshot.d.ts +117 -0
- package/dist/esm/ExecutionSnapshot.d.ts.map +1 -0
- package/dist/esm/ExecutionSnapshot.js +95 -0
- package/dist/esm/ExecutionSnapshot.js.map +1 -0
- package/dist/esm/Inconsistency.d.ts +154 -0
- package/dist/esm/Inconsistency.d.ts.map +1 -0
- package/dist/esm/Inconsistency.js +133 -0
- package/dist/esm/Inconsistency.js.map +1 -0
- package/dist/esm/Migrations.d.ts +56 -0
- package/dist/esm/Migrations.d.ts.map +1 -0
- package/dist/esm/Migrations.js +91 -0
- package/dist/esm/Migrations.js.map +1 -0
- package/dist/esm/OwnerIdentity.d.ts +91 -0
- package/dist/esm/OwnerIdentity.d.ts.map +1 -0
- package/dist/esm/OwnerIdentity.js +99 -0
- package/dist/esm/OwnerIdentity.js.map +1 -0
- package/dist/esm/PlanInputStore.d.ts +110 -0
- package/dist/esm/PlanInputStore.d.ts.map +1 -0
- package/dist/esm/PlanInputStore.js +207 -0
- package/dist/esm/PlanInputStore.js.map +1 -0
- package/dist/esm/PlanMergeStore.d.ts +113 -0
- package/dist/esm/PlanMergeStore.d.ts.map +1 -0
- package/dist/esm/PlanMergeStore.js +244 -0
- package/dist/esm/PlanMergeStore.js.map +1 -0
- package/dist/esm/PlanScheduler.d.ts +363 -0
- package/dist/esm/PlanScheduler.d.ts.map +1 -0
- package/dist/esm/PlanScheduler.js +1321 -0
- package/dist/esm/PlanScheduler.js.map +1 -0
- package/dist/esm/Reconciliation.d.ts +175 -0
- package/dist/esm/Reconciliation.d.ts.map +1 -0
- package/dist/esm/Reconciliation.js +175 -0
- package/dist/esm/Reconciliation.js.map +1 -0
- package/dist/esm/ReplayOnly.d.ts +91 -0
- package/dist/esm/ReplayOnly.d.ts.map +1 -0
- package/dist/esm/ReplayOnly.js +59 -0
- package/dist/esm/ReplayOnly.js.map +1 -0
- package/dist/esm/Retention.d.ts +113 -0
- package/dist/esm/Retention.d.ts.map +1 -0
- package/dist/esm/Retention.js +139 -0
- package/dist/esm/Retention.js.map +1 -0
- package/dist/esm/RunCatalogRead.d.ts +17 -0
- package/dist/esm/RunCatalogRead.d.ts.map +1 -0
- package/dist/esm/RunCatalogRead.js +17 -0
- package/dist/esm/RunCatalogRead.js.map +1 -0
- package/dist/esm/RunChangeFeed.d.ts +75 -0
- package/dist/esm/RunChangeFeed.d.ts.map +1 -0
- package/dist/esm/RunChangeFeed.js +81 -0
- package/dist/esm/RunChangeFeed.js.map +1 -0
- package/dist/esm/RunState.d.ts +116 -0
- package/dist/esm/RunState.d.ts.map +1 -0
- package/dist/esm/RunState.js +109 -0
- package/dist/esm/RunState.js.map +1 -0
- package/dist/esm/Selection.d.ts +495 -0
- package/dist/esm/Selection.d.ts.map +1 -0
- package/dist/esm/Selection.js +482 -0
- package/dist/esm/Selection.js.map +1 -0
- package/dist/esm/SelectionStore.d.ts +141 -0
- package/dist/esm/SelectionStore.d.ts.map +1 -0
- package/dist/esm/SelectionStore.js +215 -0
- package/dist/esm/SelectionStore.js.map +1 -0
- package/dist/esm/StepBoundary.d.ts +501 -0
- package/dist/esm/StepBoundary.d.ts.map +1 -0
- package/dist/esm/StepBoundary.js +919 -0
- package/dist/esm/StepBoundary.js.map +1 -0
- package/dist/esm/StepCacheFold.d.ts +148 -0
- package/dist/esm/StepCacheFold.d.ts.map +1 -0
- package/dist/esm/StepCacheFold.js +201 -0
- package/dist/esm/StepCacheFold.js.map +1 -0
- package/dist/esm/StepSandbox.d.ts +78 -0
- package/dist/esm/StepSandbox.d.ts.map +1 -0
- package/dist/esm/StepSandbox.js +70 -0
- package/dist/esm/StepSandbox.js.map +1 -0
- package/dist/esm/WakeBus.d.ts +116 -0
- package/dist/esm/WakeBus.d.ts.map +1 -0
- package/dist/esm/WakeBus.js +121 -0
- package/dist/esm/WakeBus.js.map +1 -0
- package/dist/esm/WorkspaceSandbox.d.ts +619 -0
- package/dist/esm/WorkspaceSandbox.d.ts.map +1 -0
- package/dist/esm/WorkspaceSandbox.js +985 -0
- package/dist/esm/WorkspaceSandbox.js.map +1 -0
- package/dist/esm/index.d.ts +157 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +157 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/ActionPersistence.d.ts +276 -0
- package/dist/esm/internal/ActionPersistence.d.ts.map +1 -0
- package/dist/esm/internal/ActionPersistence.js +2306 -0
- package/dist/esm/internal/ActionPersistence.js.map +1 -0
- package/dist/esm/internal/ArtifactRoots.d.ts +38 -0
- package/dist/esm/internal/ArtifactRoots.d.ts.map +1 -0
- package/dist/esm/internal/ArtifactRoots.js +76 -0
- package/dist/esm/internal/ArtifactRoots.js.map +1 -0
- package/dist/esm/internal/AttemptAdmission.d.ts +53 -0
- package/dist/esm/internal/AttemptAdmission.d.ts.map +1 -0
- package/dist/esm/internal/AttemptAdmission.js +52 -0
- package/dist/esm/internal/AttemptAdmission.js.map +1 -0
- package/dist/esm/internal/AttemptLifecycle.d.ts +245 -0
- package/dist/esm/internal/AttemptLifecycle.d.ts.map +1 -0
- package/dist/esm/internal/AttemptLifecycle.js +104 -0
- package/dist/esm/internal/AttemptLifecycle.js.map +1 -0
- package/dist/esm/internal/AttemptProbe.d.ts +53 -0
- package/dist/esm/internal/AttemptProbe.d.ts.map +1 -0
- package/dist/esm/internal/AttemptProbe.js +83 -0
- package/dist/esm/internal/AttemptProbe.js.map +1 -0
- package/dist/esm/internal/CacheAdmission.d.ts +79 -0
- package/dist/esm/internal/CacheAdmission.d.ts.map +1 -0
- package/dist/esm/internal/CacheAdmission.js +72 -0
- package/dist/esm/internal/CacheAdmission.js.map +1 -0
- package/dist/esm/internal/CacheAgeHistory.d.ts +27 -0
- package/dist/esm/internal/CacheAgeHistory.d.ts.map +1 -0
- package/dist/esm/internal/CacheAgeHistory.js +49 -0
- package/dist/esm/internal/CacheAgeHistory.js.map +1 -0
- package/dist/esm/internal/CacheAgeVerdicts.d.ts +15 -0
- package/dist/esm/internal/CacheAgeVerdicts.d.ts.map +1 -0
- package/dist/esm/internal/CacheAgeVerdicts.js +54 -0
- package/dist/esm/internal/CacheAgeVerdicts.js.map +1 -0
- package/dist/esm/internal/CacheOutputPolicy.d.ts +24 -0
- package/dist/esm/internal/CacheOutputPolicy.d.ts.map +1 -0
- package/dist/esm/internal/CacheOutputPolicy.js +73 -0
- package/dist/esm/internal/CacheOutputPolicy.js.map +1 -0
- package/dist/esm/internal/CachePublication.d.ts +97 -0
- package/dist/esm/internal/CachePublication.d.ts.map +1 -0
- package/dist/esm/internal/CachePublication.js +116 -0
- package/dist/esm/internal/CachePublication.js.map +1 -0
- package/dist/esm/internal/CallFacts.d.ts +15 -0
- package/dist/esm/internal/CallFacts.d.ts.map +1 -0
- package/dist/esm/internal/CallFacts.js +83 -0
- package/dist/esm/internal/CallFacts.js.map +1 -0
- package/dist/esm/internal/CopiedRecord.d.ts +61 -0
- package/dist/esm/internal/CopiedRecord.d.ts.map +1 -0
- package/dist/esm/internal/CopiedRecord.js +165 -0
- package/dist/esm/internal/CopiedRecord.js.map +1 -0
- package/dist/esm/internal/DeferredPersistence.d.ts +108 -0
- package/dist/esm/internal/DeferredPersistence.d.ts.map +1 -0
- package/dist/esm/internal/DeferredPersistence.js +240 -0
- package/dist/esm/internal/DeferredPersistence.js.map +1 -0
- package/dist/esm/internal/EffectRecords.d.ts +92 -0
- package/dist/esm/internal/EffectRecords.d.ts.map +1 -0
- package/dist/esm/internal/EffectRecords.js +94 -0
- package/dist/esm/internal/EffectRecords.js.map +1 -0
- package/dist/esm/internal/EngineJj.d.ts +30 -0
- package/dist/esm/internal/EngineJj.d.ts.map +1 -0
- package/dist/esm/internal/EngineJj.js +29 -0
- package/dist/esm/internal/EngineJj.js.map +1 -0
- package/dist/esm/internal/EngineStateSchema.d.ts +68 -0
- package/dist/esm/internal/EngineStateSchema.d.ts.map +1 -0
- package/dist/esm/internal/EngineStateSchema.js +53 -0
- package/dist/esm/internal/EngineStateSchema.js.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRead.d.ts +162 -0
- package/dist/esm/internal/ExecutionSnapshotRead.d.ts.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRead.js +218 -0
- package/dist/esm/internal/ExecutionSnapshotRead.js.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.d.ts +39 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.d.ts.map +1 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.js +81 -0
- package/dist/esm/internal/ExecutionSnapshotRelations.js.map +1 -0
- package/dist/esm/internal/ExitEncoding.d.ts +180 -0
- package/dist/esm/internal/ExitEncoding.d.ts.map +1 -0
- package/dist/esm/internal/ExitEncoding.js +361 -0
- package/dist/esm/internal/ExitEncoding.js.map +1 -0
- package/dist/esm/internal/FileBoundarySnapshot.d.ts +14 -0
- package/dist/esm/internal/FileBoundarySnapshot.d.ts.map +1 -0
- package/dist/esm/internal/FileBoundarySnapshot.js +29 -0
- package/dist/esm/internal/FileBoundarySnapshot.js.map +1 -0
- package/dist/esm/internal/FileEnumeration.d.ts +127 -0
- package/dist/esm/internal/FileEnumeration.d.ts.map +1 -0
- package/dist/esm/internal/FileEnumeration.js +236 -0
- package/dist/esm/internal/FileEnumeration.js.map +1 -0
- package/dist/esm/internal/HostReflection.d.ts +80 -0
- package/dist/esm/internal/HostReflection.d.ts.map +1 -0
- package/dist/esm/internal/HostReflection.js +98 -0
- package/dist/esm/internal/HostReflection.js.map +1 -0
- package/dist/esm/internal/JournalRecords.d.ts +325 -0
- package/dist/esm/internal/JournalRecords.d.ts.map +1 -0
- package/dist/esm/internal/JournalRecords.js +306 -0
- package/dist/esm/internal/JournalRecords.js.map +1 -0
- package/dist/esm/internal/NodeJournal.d.ts +157 -0
- package/dist/esm/internal/NodeJournal.d.ts.map +1 -0
- package/dist/esm/internal/NodeJournal.js +298 -0
- package/dist/esm/internal/NodeJournal.js.map +1 -0
- package/dist/esm/internal/Ordering.d.ts +14 -0
- package/dist/esm/internal/Ordering.d.ts.map +1 -0
- package/dist/esm/internal/Ordering.js +14 -0
- package/dist/esm/internal/Ordering.js.map +1 -0
- package/dist/esm/internal/PlanInputs.d.ts +14 -0
- package/dist/esm/internal/PlanInputs.d.ts.map +1 -0
- package/dist/esm/internal/PlanInputs.js +57 -0
- package/dist/esm/internal/PlanInputs.js.map +1 -0
- package/dist/esm/internal/PlanMerges.d.ts +178 -0
- package/dist/esm/internal/PlanMerges.d.ts.map +1 -0
- package/dist/esm/internal/PlanMerges.js +113 -0
- package/dist/esm/internal/PlanMerges.js.map +1 -0
- package/dist/esm/internal/ProvenanceSlot.d.ts +30 -0
- package/dist/esm/internal/ProvenanceSlot.d.ts.map +1 -0
- package/dist/esm/internal/ProvenanceSlot.js +39 -0
- package/dist/esm/internal/ProvenanceSlot.js.map +1 -0
- package/dist/esm/internal/ResultEnvelope.d.ts +88 -0
- package/dist/esm/internal/ResultEnvelope.d.ts.map +1 -0
- package/dist/esm/internal/ResultEnvelope.js +83 -0
- package/dist/esm/internal/ResultEnvelope.js.map +1 -0
- package/dist/esm/internal/RetentionOps.d.ts +414 -0
- package/dist/esm/internal/RetentionOps.d.ts.map +1 -0
- package/dist/esm/internal/RetentionOps.js +576 -0
- package/dist/esm/internal/RetentionOps.js.map +1 -0
- package/dist/esm/internal/RunCatalogOps.d.ts +118 -0
- package/dist/esm/internal/RunCatalogOps.d.ts.map +1 -0
- package/dist/esm/internal/RunCatalogOps.js +120 -0
- package/dist/esm/internal/RunCatalogOps.js.map +1 -0
- package/dist/esm/internal/RunCoordinator.d.ts +78 -0
- package/dist/esm/internal/RunCoordinator.d.ts.map +1 -0
- package/dist/esm/internal/RunCoordinator.js +115 -0
- package/dist/esm/internal/RunCoordinator.js.map +1 -0
- package/dist/esm/internal/RunDriver.d.ts +192 -0
- package/dist/esm/internal/RunDriver.d.ts.map +1 -0
- package/dist/esm/internal/RunDriver.js +2334 -0
- package/dist/esm/internal/RunDriver.js.map +1 -0
- package/dist/esm/internal/RunLifecycle.d.ts +22 -0
- package/dist/esm/internal/RunLifecycle.d.ts.map +1 -0
- package/dist/esm/internal/RunLifecycle.js +49 -0
- package/dist/esm/internal/RunLifecycle.js.map +1 -0
- package/dist/esm/internal/RunListing.d.ts +78 -0
- package/dist/esm/internal/RunListing.d.ts.map +1 -0
- package/dist/esm/internal/RunListing.js +146 -0
- package/dist/esm/internal/RunListing.js.map +1 -0
- package/dist/esm/internal/RunListingError.d.ts +35 -0
- package/dist/esm/internal/RunListingError.d.ts.map +1 -0
- package/dist/esm/internal/RunListingError.js +27 -0
- package/dist/esm/internal/RunListingError.js.map +1 -0
- package/dist/esm/internal/RuntimeGraph.d.ts +73 -0
- package/dist/esm/internal/RuntimeGraph.d.ts.map +1 -0
- package/dist/esm/internal/RuntimeGraph.js +182 -0
- package/dist/esm/internal/RuntimeGraph.js.map +1 -0
- package/dist/esm/internal/SandboxedExecution.d.ts +80 -0
- package/dist/esm/internal/SandboxedExecution.d.ts.map +1 -0
- package/dist/esm/internal/SandboxedExecution.js +107 -0
- package/dist/esm/internal/SandboxedExecution.js.map +1 -0
- package/dist/esm/internal/StateTransaction.d.ts +44 -0
- package/dist/esm/internal/StateTransaction.d.ts.map +1 -0
- package/dist/esm/internal/StateTransaction.js +54 -0
- package/dist/esm/internal/StateTransaction.js.map +1 -0
- package/dist/esm/internal/StepFacts.d.ts +14 -0
- package/dist/esm/internal/StepFacts.d.ts.map +1 -0
- package/dist/esm/internal/StepFacts.js +35 -0
- package/dist/esm/internal/StepFacts.js.map +1 -0
- package/dist/esm/internal/TypedEvents.d.ts +14 -0
- package/dist/esm/internal/TypedEvents.d.ts.map +1 -0
- package/dist/esm/internal/TypedEvents.js +14 -0
- package/dist/esm/internal/TypedEvents.js.map +1 -0
- package/dist/esm/migrations/0001_initial.d.ts +17 -0
- package/dist/esm/migrations/0001_initial.d.ts.map +1 -0
- package/dist/esm/migrations/0001_initial.js +41 -0
- package/dist/esm/migrations/0001_initial.js.map +1 -0
- package/dist/esm/migrations/0002_selection_store.d.ts +15 -0
- package/dist/esm/migrations/0002_selection_store.d.ts.map +1 -0
- package/dist/esm/migrations/0002_selection_store.js +34 -0
- package/dist/esm/migrations/0002_selection_store.js.map +1 -0
- package/dist/esm/migrations/0003_plan_inputs.d.ts +13 -0
- package/dist/esm/migrations/0003_plan_inputs.d.ts.map +1 -0
- package/dist/esm/migrations/0003_plan_inputs.js +70 -0
- package/dist/esm/migrations/0003_plan_inputs.js.map +1 -0
- package/dist/esm/migrations/0004_plan_environment.d.ts +14 -0
- package/dist/esm/migrations/0004_plan_environment.d.ts.map +1 -0
- package/dist/esm/migrations/0004_plan_environment.js +33 -0
- package/dist/esm/migrations/0004_plan_environment.js.map +1 -0
- package/dist/esm/migrations/0005_plan_merges.d.ts +14 -0
- package/dist/esm/migrations/0005_plan_merges.d.ts.map +1 -0
- package/dist/esm/migrations/0005_plan_merges.js +59 -0
- package/dist/esm/migrations/0005_plan_merges.js.map +1 -0
- package/dist/esm/migrations/0006_execution_listing.d.ts +15 -0
- package/dist/esm/migrations/0006_execution_listing.d.ts.map +1 -0
- package/dist/esm/migrations/0006_execution_listing.js +81 -0
- package/dist/esm/migrations/0006_execution_listing.js.map +1 -0
- package/dist/esm/migrations/0007_run_parent_sequence.d.ts +15 -0
- package/dist/esm/migrations/0007_run_parent_sequence.d.ts.map +1 -0
- package/dist/esm/migrations/0007_run_parent_sequence.js +18 -0
- package/dist/esm/migrations/0007_run_parent_sequence.js.map +1 -0
- package/dist/esm/migrations/0008_deferred_consumption.d.ts +16 -0
- package/dist/esm/migrations/0008_deferred_consumption.d.ts.map +1 -0
- package/dist/esm/migrations/0008_deferred_consumption.js +24 -0
- package/dist/esm/migrations/0008_deferred_consumption.js.map +1 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.d.ts +24 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.d.ts.map +1 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.js +127 -0
- package/dist/esm/migrations/0009_deferred_clock_facts.js.map +1 -0
- package/dist/esm/migrations/0010_pending_cancellation.d.ts +15 -0
- package/dist/esm/migrations/0010_pending_cancellation.d.ts.map +1 -0
- package/dist/esm/migrations/0010_pending_cancellation.js +19 -0
- package/dist/esm/migrations/0010_pending_cancellation.js.map +1 -0
- package/dist/esm/test/TestStores.d.ts +89 -0
- package/dist/esm/test/TestStores.d.ts.map +1 -0
- package/dist/esm/test/TestStores.js +103 -0
- package/dist/esm/test/TestStores.js.map +1 -0
- package/docs/README.md +113 -0
- package/docs/api.md +1494 -0
- package/docs/concepts/attempts-and-replay.md +149 -0
- package/docs/concepts/cache-admission.md +265 -0
- package/docs/concepts/call-facts.md +86 -0
- package/docs/concepts/durable-waits.md +175 -0
- package/docs/concepts/execution-facts.md +90 -0
- package/docs/concepts/ownership-and-fencing.md +128 -0
- package/docs/concepts/step-boundaries.md +148 -0
- package/docs/concepts/workspace-transactions.md +199 -0
- package/docs/event-types.md +14 -0
- package/docs/guides/back-up-and-restore.md +164 -0
- package/docs/guides/collect-unreferenced-artifacts.md +128 -0
- package/docs/guides/compose-a-durable-engine.md +146 -0
- package/docs/guides/coordinate-two-processes.md +120 -0
- package/docs/guides/defer-work-with-selection.md +171 -0
- package/docs/guides/delete-old-run-history.md +154 -0
- package/docs/guides/drive-a-plan.md +314 -0
- package/docs/guides/observe-engine-metrics.md +98 -0
- package/docs/guides/observe-executions.md +187 -0
- package/docs/guides/reclaim-runs-from-a-dead-host.md +133 -0
- package/docs/guides/share-a-cache-across-machines.md +134 -0
- package/docs/guides/testing.md +123 -0
- package/docs/installation.md +102 -0
- package/docs/quickstart.md +215 -0
- package/docs/troubleshooting.md +347 -0
- package/package.json +438 -3
- package/src/ArtifactGc.ts +408 -0
- package/src/ArtifactSync.ts +278 -0
- package/src/CacheSync.ts +131 -0
- package/src/DeferredClockFold.ts +586 -0
- package/src/DisasterRecovery.ts +888 -0
- package/src/DurableEngineState.ts +2656 -0
- package/src/EngineStore.ts +656 -0
- package/src/EngineStoreMetrics.ts +331 -0
- package/src/Errors.ts +28 -0
- package/src/EventTypes.ts +27 -0
- package/src/ExecutionFacts.ts +125 -0
- package/src/ExecutionSnapshot.ts +186 -0
- package/src/Inconsistency.ts +253 -0
- package/src/Migrations.ts +95 -0
- package/src/OwnerIdentity.ts +125 -0
- package/src/PlanInputStore.ts +292 -0
- package/src/PlanMergeStore.ts +330 -0
- package/src/PlanScheduler.ts +1806 -0
- package/src/Reconciliation.ts +224 -0
- package/src/ReplayOnly.ts +95 -0
- package/src/Retention.ts +214 -0
- package/src/RunCatalogRead.ts +27 -0
- package/src/RunChangeFeed.ts +125 -0
- package/src/RunState.ts +137 -0
- package/src/Selection.ts +683 -0
- package/src/SelectionStore.ts +353 -0
- package/src/StepBoundary.ts +1165 -0
- package/src/StepCacheFold.ts +244 -0
- package/src/StepSandbox.ts +110 -0
- package/src/WakeBus.ts +167 -0
- package/src/WorkspaceSandbox.ts +1604 -0
- package/src/index.ts +185 -0
- package/src/internal/ActionPersistence.ts +2687 -0
- package/src/internal/ArtifactRoots.ts +92 -0
- package/src/internal/AttemptAdmission.ts +76 -0
- package/src/internal/AttemptLifecycle.ts +163 -0
- package/src/internal/AttemptProbe.ts +90 -0
- package/src/internal/CacheAdmission.ts +133 -0
- package/src/internal/CacheAgeHistory.ts +58 -0
- package/src/internal/CacheAgeVerdicts.ts +61 -0
- package/src/internal/CacheOutputPolicy.ts +82 -0
- package/src/internal/CachePublication.ts +153 -0
- package/src/internal/CallFacts.ts +87 -0
- package/src/internal/CopiedRecord.ts +201 -0
- package/src/internal/DeferredPersistence.ts +459 -0
- package/src/internal/EffectRecords.ts +136 -0
- package/src/internal/EngineJj.ts +30 -0
- package/src/internal/EngineStateSchema.ts +92 -0
- package/src/internal/ExecutionSnapshotRead.ts +298 -0
- package/src/internal/ExecutionSnapshotRelations.ts +121 -0
- package/src/internal/ExitEncoding.ts +453 -0
- package/src/internal/FileBoundarySnapshot.ts +39 -0
- package/src/internal/FileEnumeration.ts +334 -0
- package/src/internal/HostReflection.ts +128 -0
- package/src/internal/JournalRecords.ts +396 -0
- package/src/internal/NodeJournal.ts +340 -0
- package/src/internal/Ordering.ts +14 -0
- package/src/internal/PlanInputs.ts +62 -0
- package/src/internal/PlanMerges.ts +123 -0
- package/src/internal/ProvenanceSlot.ts +52 -0
- package/src/internal/ResultEnvelope.ts +118 -0
- package/src/internal/RetentionOps.ts +865 -0
- package/src/internal/RunCatalogOps.ts +174 -0
- package/src/internal/RunCoordinator.ts +215 -0
- package/src/internal/RunDriver.ts +3152 -0
- package/src/internal/RunLifecycle.ts +53 -0
- package/src/internal/RunListing.ts +210 -0
- package/src/internal/RunListingError.ts +37 -0
- package/src/internal/RuntimeGraph.ts +253 -0
- package/src/internal/SandboxedExecution.ts +165 -0
- package/src/internal/StateTransaction.ts +71 -0
- package/src/internal/StepFacts.ts +36 -0
- package/src/internal/TypedEvents.ts +29 -0
- package/src/migrations/0001_initial.ts +51 -0
- package/src/migrations/0002_selection_store.ts +38 -0
- package/src/migrations/0003_plan_inputs.ts +75 -0
- package/src/migrations/0004_plan_environment.ts +34 -0
- package/src/migrations/0005_plan_merges.ts +60 -0
- package/src/migrations/0006_execution_listing.ts +86 -0
- package/src/migrations/0007_run_parent_sequence.ts +19 -0
- package/src/migrations/0008_deferred_consumption.ts +27 -0
- package/src/migrations/0009_deferred_clock_facts.ts +163 -0
- package/src/migrations/0010_pending_cancellation.ts +20 -0
- package/src/test/TestStores.ts +145 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Quickstart"
|
|
3
|
+
description: "Compose a durable engine over one SQLite file, run a flow, then run it again from a fresh engine and watch the sealed step replay instead of executing."
|
|
4
|
+
sidebar:
|
|
5
|
+
order: 2
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
This quickstart builds the production composition over one SQLite file, runs a
|
|
9
|
+
flow through it, and then builds a second engine over the same file. The second
|
|
10
|
+
run replays the recorded attempt instead of executing the step again, which is
|
|
11
|
+
the whole point of the package.
|
|
12
|
+
|
|
13
|
+
## Prerequisites
|
|
14
|
+
|
|
15
|
+
- Node.js 26.4.0 or later.
|
|
16
|
+
- A package with the dependencies installed. Not on npm yet; see [Installation](https://github.com/smithersai/smithers/blob/main/packages/smithers/flows/flow/docs/installation.md#use-the-libraries).
|
|
17
|
+
|
|
18
|
+
## Declare a sealed action and a flow
|
|
19
|
+
|
|
20
|
+
Create `quickstart.ts`. The action is `sealed`, which is what makes its result
|
|
21
|
+
addressable and therefore replayable:
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import { Action, Flow, Interpreter } from "@smthrs/flow"
|
|
25
|
+
import * as Schema from "effect/Schema"
|
|
26
|
+
|
|
27
|
+
export const Measure = Action.make("quickstart/Measure", {
|
|
28
|
+
payload: {},
|
|
29
|
+
success: Schema.String,
|
|
30
|
+
tier: "sealed",
|
|
31
|
+
idempotencyKey: "quickstart/measure/v1"
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
export const Analyse = Flow.make("quickstart/Analyse", {
|
|
35
|
+
payload: {},
|
|
36
|
+
success: Schema.String,
|
|
37
|
+
body: (payload) => Measure.call(payload)
|
|
38
|
+
})
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Open the database and install the schema
|
|
42
|
+
|
|
43
|
+
`Migrations.layer` installs the composed schema for every storage package the
|
|
44
|
+
engine uses. It sits under the stores, so no store is exposed before its tables
|
|
45
|
+
exist:
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
import { DurableWriter } from "@smthrs/database"
|
|
49
|
+
import * as NodeDatabase from "@smthrs/database/node/NodeDatabase"
|
|
50
|
+
import { Migrations } from "@smthrs/engine-store"
|
|
51
|
+
import * as Layer from "effect/Layer"
|
|
52
|
+
|
|
53
|
+
const database = (filename: string) =>
|
|
54
|
+
Layer.provideMerge(
|
|
55
|
+
Migrations.layer,
|
|
56
|
+
Layer.provideMerge(DurableWriter.layer(), NodeDatabase.layer({ filename }))
|
|
57
|
+
)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Build the storage context
|
|
61
|
+
|
|
62
|
+
The engine needs the journal, the three run and cache stores, the durable
|
|
63
|
+
engine state, an owner identity, a workspace root, and an artifact store:
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
import * as ArtifactStore from "@smthrs/artifacts/ArtifactStore"
|
|
67
|
+
import { DurableEngineState, OwnerIdentity } from "@smthrs/engine-store"
|
|
68
|
+
import { SqlJournal } from "@smthrs/journal"
|
|
69
|
+
import * as Workspace from "@smthrs/kernel/Workspace"
|
|
70
|
+
import { AttemptStore, RunStore } from "@smthrs/run-store"
|
|
71
|
+
import { CacheStore } from "@smthrs/step-cache"
|
|
72
|
+
|
|
73
|
+
const stores = (filename: string, root: string) =>
|
|
74
|
+
Layer.mergeAll(
|
|
75
|
+
SqlJournal.layer({ capacity: 1024, overflow: "reject" }),
|
|
76
|
+
RunStore.layer,
|
|
77
|
+
AttemptStore.layer,
|
|
78
|
+
CacheStore.layer,
|
|
79
|
+
DurableEngineState.layer,
|
|
80
|
+
OwnerIdentity.layer,
|
|
81
|
+
Workspace.layer(root),
|
|
82
|
+
ArtifactStore.layerFileSystem({ directory: `${root}/.flows/objects` })
|
|
83
|
+
).pipe(Layer.provideMerge(database(filename)))
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Build the engine
|
|
87
|
+
|
|
88
|
+
`StepBoundary.layer` measures the declared read and write sets of each step.
|
|
89
|
+
`WorkspaceSandbox.layerFileSystem()` runs each sealed body in an isolated
|
|
90
|
+
workspace, which is what lets the boundary honestly claim it observed the whole
|
|
91
|
+
tree. `Jj` records compensable snapshots; this flow uses a sealed action, so a
|
|
92
|
+
stub keeps the wiring honest without requiring a `jj` binary:
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
import * as NodeCrypto from "@effect/platform-node/NodeCrypto"
|
|
96
|
+
import * as NodePath from "@effect/platform-node/NodePath"
|
|
97
|
+
import { EngineStore, StepBoundary, WorkspaceSandbox } from "@smthrs/engine-store"
|
|
98
|
+
import { Jj } from "@smthrs/kernel"
|
|
99
|
+
import * as AtomicFileSystem from "@smthrs/platform-node/AtomicFileSystem"
|
|
100
|
+
import { Ownership } from "@smthrs/run-store"
|
|
101
|
+
import * as Effect from "effect/Effect"
|
|
102
|
+
|
|
103
|
+
const stubJj = Layer.succeed(
|
|
104
|
+
Jj.Jj,
|
|
105
|
+
Jj.make({
|
|
106
|
+
snapshot: () =>
|
|
107
|
+
Effect.succeed({ changeId: "quickstart-snapshot" as never, commitId: "quickstart-commit" as never }),
|
|
108
|
+
restore: () => Effect.void,
|
|
109
|
+
diff: () => Effect.succeed(""),
|
|
110
|
+
workspaceAdd: () => Effect.void,
|
|
111
|
+
workspaceForget: () => Effect.void,
|
|
112
|
+
status: () => Effect.succeed("")
|
|
113
|
+
})
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
const engine = (filename: string, root: string, hostId: string) =>
|
|
117
|
+
EngineStore.layer({
|
|
118
|
+
owner: { hostId },
|
|
119
|
+
journalSource: `${hostId}-engine`,
|
|
120
|
+
isAlive: Ownership.sameHostPidProbe
|
|
121
|
+
}).pipe(
|
|
122
|
+
Layer.provideMerge(
|
|
123
|
+
Layer.mergeAll(StepBoundary.layer, WorkspaceSandbox.layerFileSystem(), stubJj)
|
|
124
|
+
),
|
|
125
|
+
Layer.provideMerge(stores(filename, root)),
|
|
126
|
+
Layer.provideMerge(Layer.mergeAll(NodeCrypto.layer, AtomicFileSystem.layer, NodePath.layer))
|
|
127
|
+
)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
`AtomicFileSystem.layer` is Node's filesystem carrying the packaged
|
|
131
|
+
descriptor-relative helper. The workspace sandbox refuses to build over a plain
|
|
132
|
+
`NodeFileSystem.layer`: its copy-back must never follow a symlink swapped into
|
|
133
|
+
the workspace while it writes.
|
|
134
|
+
`NodePath.layer` supplies the host's path syntax. The boundary and the sandbox
|
|
135
|
+
resolve the workspace root with it, so a Windows drive root confines correctly.
|
|
136
|
+
|
|
137
|
+
`isAlive` is the liveness arbitration this engine applies before stealing a run
|
|
138
|
+
from a stale owner. `Ownership.sameHostPidProbe` asks this machine's process
|
|
139
|
+
table, so a second process over the same file cannot take a run out of a live
|
|
140
|
+
one. Omit it and the lease alone decides. See
|
|
141
|
+
[Reclaim runs from a dead host](./guides/reclaim-runs-from-a-dead-host.md).
|
|
142
|
+
|
|
143
|
+
## Run it twice
|
|
144
|
+
|
|
145
|
+
The implementation is attached per composition, so the same declaration can be
|
|
146
|
+
driven by two independently built engines over one file. Count the executions
|
|
147
|
+
to see the replay:
|
|
148
|
+
|
|
149
|
+
```ts
|
|
150
|
+
export const main = (filename: string, root: string): Effect.Effect<{
|
|
151
|
+
readonly first: string
|
|
152
|
+
readonly second: string
|
|
153
|
+
readonly executions: number
|
|
154
|
+
}> =>
|
|
155
|
+
Effect.gen(function*() {
|
|
156
|
+
let executions = 0
|
|
157
|
+
|
|
158
|
+
const implementation = Measure.toLayer(() =>
|
|
159
|
+
Effect.sync(() => {
|
|
160
|
+
executions += 1
|
|
161
|
+
return "42"
|
|
162
|
+
})
|
|
163
|
+
)
|
|
164
|
+
|
|
165
|
+
const flow = Layer.mergeAll(implementation, Interpreter.layer(Analyse)).pipe(
|
|
166
|
+
Layer.provideMerge(Action.layerImplementations)
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
const first = yield* Effect.scoped(
|
|
170
|
+
Analyse.execute({}, { executionId: "analyse-1" }).pipe(
|
|
171
|
+
Effect.provide(flow.pipe(Layer.provideMerge(engine(filename, root, "worker-a"))))
|
|
172
|
+
)
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
// A second engine over the same file: a different process, in effect.
|
|
176
|
+
const second = yield* Effect.scoped(
|
|
177
|
+
Analyse.execute({}, { executionId: "analyse-1" }).pipe(
|
|
178
|
+
Effect.provide(flow.pipe(Layer.provideMerge(engine(filename, root, "worker-b"))))
|
|
179
|
+
)
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
return { first, second, executions }
|
|
183
|
+
}).pipe(Effect.orDie)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Run it against a real file and print the result:
|
|
187
|
+
|
|
188
|
+
```ts
|
|
189
|
+
console.log(await Effect.runPromise(main("./.quickstart/.flows/engine.db", "./.quickstart")))
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
```text
|
|
193
|
+
{ first: '42', second: '42', executions: 1 }
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## What just happened
|
|
197
|
+
|
|
198
|
+
The first run claimed `analyse-1`, opened an attempt row for the sealed step,
|
|
199
|
+
ran the body inside a workspace transaction, settled the step boundary, and
|
|
200
|
+
recorded the result under a content-addressed step key. The journal holds every
|
|
201
|
+
one of those decisions.
|
|
202
|
+
|
|
203
|
+
The second engine, a different owner over the same database, found the
|
|
204
|
+
succeeded attempt row for the same key and replayed it. The body never ran, so
|
|
205
|
+
`executions` stays at 1. Delete the file and the count becomes 2, which is the
|
|
206
|
+
falsifiable version of the claim.
|
|
207
|
+
|
|
208
|
+
## Next steps
|
|
209
|
+
|
|
210
|
+
- [Compose a durable engine](./guides/compose-a-durable-engine.md): every
|
|
211
|
+
required and optional service, and what each one changes.
|
|
212
|
+
- [Attempts and replay](./concepts/attempts-and-replay.md): why a succeeded
|
|
213
|
+
row replays, why a failed row rethrows, and what admission refuses.
|
|
214
|
+
- [Cache admission](./concepts/cache-admission.md): what makes a result
|
|
215
|
+
reusable by a different run rather than only by this one.
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Troubleshooting"
|
|
3
|
+
description: "The typed failures @smthrs/engine-store reports, what causes each one, and what to change: admission, boundaries, workspaces, caches, artifacts, retention, and recovery."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Every failure this package reports is typed, and every `code` literal exported
|
|
7
|
+
through `Errors` is part of the public API: switch on `code` or on `_tag`, and
|
|
8
|
+
the strings will not change without a major version. Find the tag below and
|
|
9
|
+
read the matching section. The full schemas are in the
|
|
10
|
+
[API reference](./api.md).
|
|
11
|
+
|
|
12
|
+
## AttemptAdmissionRejected
|
|
13
|
+
|
|
14
|
+
**What happened.** The attempt was not admitted, so its body never ran. The
|
|
15
|
+
`outcome` field names which check refused it: a superseded fence, a live
|
|
16
|
+
same-key attempt, or an already-settled row.
|
|
17
|
+
|
|
18
|
+
**What to change.** Usually nothing. Because the body did not execute, this
|
|
19
|
+
failure is always safe to surface without compensation, and it marks only
|
|
20
|
+
genuinely mid-flight rows: a persisted `failed` row rethrows its domain failure
|
|
21
|
+
rather than being re-admitted. If you see it under a single engine with no
|
|
22
|
+
concurrency, look for two fibers reaching the same step key at once. See
|
|
23
|
+
[Attempts and replay](./concepts/attempts-and-replay.md).
|
|
24
|
+
|
|
25
|
+
## AttemptSuspended
|
|
26
|
+
|
|
27
|
+
**What happened.** The attempt stopped without settling. It is durably parked,
|
|
28
|
+
not failed.
|
|
29
|
+
|
|
30
|
+
**What to change.** Nothing at the call site. The distinction matters to the
|
|
31
|
+
driver: a suspended attempt keeps its row and its attempt number, so resuming
|
|
32
|
+
continues the same attempt rather than burning a new one against the retry
|
|
33
|
+
budget. If the run never resumes, check that the process registers the flow;
|
|
34
|
+
a wake for an unregistered flow logs a once-per-run warning and leaves the row
|
|
35
|
+
parked for a process that does register it.
|
|
36
|
+
|
|
37
|
+
## AttemptEvidenceQuarantined
|
|
38
|
+
|
|
39
|
+
**What happened.** A succeeded attempt row's recorded boundary evidence no
|
|
40
|
+
longer hashes to its recorded digest, under the strict `Inconsistency` verdict.
|
|
41
|
+
The failure carries `keyDigest`, `attempt`, `path`, `recordedDigest`, and
|
|
42
|
+
`measuredDigest`. The driver handles this failure by parking the run in the `quarantine` waiting
|
|
43
|
+
state. Execution callers keep waiting under their `suspendedRetryPolicy` and
|
|
44
|
+
report `SuspendedResumeGaveUp` if that budget expires; polling and fresh
|
|
45
|
+
execution calls cannot authorize recovery.
|
|
46
|
+
|
|
47
|
+
**What to change.** Investigate the disk. A succeeded attempt row records that
|
|
48
|
+
this run's side effects already ran, so the evidence cannot simply be evicted
|
|
49
|
+
and re-executed without breaking exactly-once for an irreversible action. The
|
|
50
|
+
next explicit resume returns the durable outcome without re-materializing the
|
|
51
|
+
poisoned evidence and without re-executing.
|
|
52
|
+
|
|
53
|
+
## CacheCorruptionDetected
|
|
54
|
+
|
|
55
|
+
**What happened.** A shared cache row's bytes no longer hash to their recorded
|
|
56
|
+
digest. Unlike a succeeded attempt row, a cache row is evictable.
|
|
57
|
+
|
|
58
|
+
**What to change.** Nothing for correctness: the entry is dropped and the next
|
|
59
|
+
dispatch re-executes and re-captures cleanly. It is reported rather than
|
|
60
|
+
swallowed so a failing disk stays visible, so treat repeated occurrences as a
|
|
61
|
+
hardware signal.
|
|
62
|
+
|
|
63
|
+
## CacheConflictDetected
|
|
64
|
+
|
|
65
|
+
**What happened.** Two different runs recorded results under the same step key.
|
|
66
|
+
The key is a digest of the declaration, so a conflict means the declaration does
|
|
67
|
+
not fully describe what the step depends on: same key, different answer.
|
|
68
|
+
`recordedRunId` names the run that got there first.
|
|
69
|
+
|
|
70
|
+
**What to change.** Find the undeclared input. It is usually a file outside the
|
|
71
|
+
declared read set, an environment variable, a clock, or a network call. Widen
|
|
72
|
+
the declaration, or make the step honest about its nondeterminism by declaring
|
|
73
|
+
it. `Inconsistency.layerTolerant(owner)` preserves the first-recorded row and
|
|
74
|
+
continues, if you need to keep running while you investigate.
|
|
75
|
+
|
|
76
|
+
## UndeclaredWrite
|
|
77
|
+
|
|
78
|
+
**What happened.** A hard-mode step wrote outside its declared write set. The
|
|
79
|
+
error carries the `paths` and the `diffIdentity`. Hard mode treats the
|
|
80
|
+
declaration as a contract, so the step's evidence is never journaled and never
|
|
81
|
+
becomes a cache entry.
|
|
82
|
+
|
|
83
|
+
**What to change.** Add the paths to `writeSet`, or switch the declaration to
|
|
84
|
+
`boundaryMode: "expected"`, where the same observation is recorded as a
|
|
85
|
+
deviation and routed to `Reconciliation`.
|
|
86
|
+
|
|
87
|
+
## MissingDeclaredOutput
|
|
88
|
+
|
|
89
|
+
**What happened.** A step finished without producing a path its `writeSet`
|
|
90
|
+
declared, and did not declare that path in `removes`.
|
|
91
|
+
|
|
92
|
+
**What to change.** Either produce the file or declare the deletion. The absence
|
|
93
|
+
itself is the defect: recording it as valid evidence caches the claim "this file
|
|
94
|
+
should not exist", which `replayOutputs` then acts on by deleting the path on a
|
|
95
|
+
workspace that never ran the step. Declaring the path in `removes` is the only
|
|
96
|
+
thing that makes an absence legitimate.
|
|
97
|
+
|
|
98
|
+
## SurvivingDeclaredRemoval
|
|
99
|
+
|
|
100
|
+
**What happened.** A hard-mode step left a declared removal in place. `removes`
|
|
101
|
+
promises a path is absent afterwards, and a path that survived, possibly
|
|
102
|
+
rewritten, is a post-state the declaration disclaimed.
|
|
103
|
+
|
|
104
|
+
**What to change.** Remove the file, or drop it from `removes`. Settling it as
|
|
105
|
+
evidence would cache the surviving bytes under a removal and hand them to every
|
|
106
|
+
replay.
|
|
107
|
+
|
|
108
|
+
## UnsupportedBoundary
|
|
109
|
+
|
|
110
|
+
**What happened.** The host could not honour the boundary at all: a filesystem
|
|
111
|
+
that cannot be measured, a path that cannot be read, or a transient I/O failure.
|
|
112
|
+
It is the catch-all host refusal, and it carries the original failure whole in
|
|
113
|
+
`cause`.
|
|
114
|
+
|
|
115
|
+
**What to change.** Read `cause`. If you see it from `StepSandbox.open`, the
|
|
116
|
+
composition provided `StepSandbox.layerNoop`, which fails closed on purpose for
|
|
117
|
+
a host that cannot sandbox, such as a browser.
|
|
118
|
+
|
|
119
|
+
If the message reads `cache replay needs a confined host filesystem`, the
|
|
120
|
+
boundary's `FileSystem` carries neither `@smthrs/platform-node`'s
|
|
121
|
+
`AtomicFileSystem` executor nor an isolation attestation, so cache replay
|
|
122
|
+
refuses and the step re-executes. Provide `AtomicFileSystem.layer` instead of
|
|
123
|
+
a bare `NodeFileSystem.layer`. A replay refused with a `PlatformError` cause
|
|
124
|
+
naming a symlink loop means a replayed path runs through a symlink; replay
|
|
125
|
+
never follows one, so remove the link or accept the re-execution.
|
|
126
|
+
|
|
127
|
+
## BoundaryCorruption
|
|
128
|
+
|
|
129
|
+
**What happened.** Recorded boundary evidence's bytes no longer match their
|
|
130
|
+
recorded digest. This is an integrity violation of the store's strongest
|
|
131
|
+
invariant, deliberately distinct from a transient host failure so that a failing
|
|
132
|
+
disk corrupting many blobs does not journal identically to a one-off EIO.
|
|
133
|
+
|
|
134
|
+
**What to change.** Investigate the disk, and consider restoring from a verified
|
|
135
|
+
backup. See [Back up and restore the store](./guides/back-up-and-restore.md).
|
|
136
|
+
|
|
137
|
+
## MissingArtifact
|
|
138
|
+
|
|
139
|
+
**What happened.** Recorded evidence references an artifact this host's store
|
|
140
|
+
does not hold. It carries the `path` and the `digest`.
|
|
141
|
+
|
|
142
|
+
**What to change.** Usually nothing: this is the normal first answer for a row
|
|
143
|
+
recorded on a machine whose artifacts this one has never seen. The dispatch
|
|
144
|
+
hydrates from the shared tier and retries the replay exactly once before falling
|
|
145
|
+
through to a real execution. If you see it under a purely local composition and
|
|
146
|
+
the step then re-executes every time, either the artifact store was cleared or
|
|
147
|
+
`ArtifactGc` collected a blob a live root still referenced; check the grace
|
|
148
|
+
bound.
|
|
149
|
+
|
|
150
|
+
## MaterializationConflict
|
|
151
|
+
|
|
152
|
+
**What happened.** Copy-back would overwrite host state that changed since the
|
|
153
|
+
transaction's base snapshot was taken. Every `FileChange.beforeDigest` is
|
|
154
|
+
compared against the live host before a byte lands, so the whole bundle is
|
|
155
|
+
refused rather than half applied.
|
|
156
|
+
|
|
157
|
+
**What to change.** Usually nothing: the engine retries the attempt from a fresh
|
|
158
|
+
base a bounded number of times. If it persists, two lanes are writing the same
|
|
159
|
+
paths concurrently; narrow the declarations, or use the plan scheduler's
|
|
160
|
+
`delay-rebase` or `stop-merge` strategy. Use
|
|
161
|
+
`WorkspaceSandbox.isMaterializationConflict(error)` to classify one, because a
|
|
162
|
+
persisted failure retains the schema tag but not the class prototype.
|
|
163
|
+
|
|
164
|
+
## WorkspaceError
|
|
165
|
+
|
|
166
|
+
**What happened.** A body could not execute inside an isolated workspace, or its
|
|
167
|
+
result could not be moved through one. The `code` says which:
|
|
168
|
+
|
|
169
|
+
| Code | Meaning |
|
|
170
|
+
| ------------------------ | ------------------------------------------------------------------------------------------------------- |
|
|
171
|
+
| `invalid_path` | A path was absolute, outside the workspace, or contained `..`. |
|
|
172
|
+
| `not_found` | A path the transaction needed was absent. |
|
|
173
|
+
| `host_unavailable` | The host filesystem or artifact store refused, or the host cannot make descriptor-relative requests. |
|
|
174
|
+
| `path_escapes_workspace` | A change's path crosses a symlink or a hard-linked file, or the workspace root was replaced mid-commit. |
|
|
175
|
+
| `commit_lock_timeout` | Another writer held `.smithers-workspace-lock` for the whole 2-minute acquisition deadline. |
|
|
176
|
+
|
|
177
|
+
**What to change.** For `path_escapes_workspace`, replace the symlink with the
|
|
178
|
+
real file or directory, or have the body write the referent path: copy-back
|
|
179
|
+
never follows a link, even one that stays inside the root. For
|
|
180
|
+
`host_unavailable`, read `cause`, which carries the refusing failure whole. A
|
|
181
|
+
cause saying the host "does not provide descriptor-relative, no-follow
|
|
182
|
+
filesystem isolation" means the sandbox was composed over a path-based
|
|
183
|
+
filesystem such as `NodeFileSystem.layer`; compose it over
|
|
184
|
+
`@smthrs/platform-node`'s `AtomicFileSystem.layer` instead.
|
|
185
|
+
|
|
186
|
+
For `commit_lock_timeout`, another commit on the same root is still running
|
|
187
|
+
and heartbeating its lock. Retry once it finishes; do not delete the lock by
|
|
188
|
+
hand. A lock whose owner was killed, and a lock directory left by an rc.1
|
|
189
|
+
build, is reclaimed on its own once its mtime is 60 seconds old.
|
|
190
|
+
|
|
191
|
+
## UndeclaredRead
|
|
192
|
+
|
|
193
|
+
**What happened.** A hermetic body attempted to read a path outside its declared
|
|
194
|
+
read set. It carries the `paths` and the `diffIdentity`.
|
|
195
|
+
|
|
196
|
+
**What to change.** Add the paths to `readSet`. The filesystem sandbox seeds the
|
|
197
|
+
transaction with exactly the declared read set, so an undeclared file is not
|
|
198
|
+
there at all.
|
|
199
|
+
|
|
200
|
+
## ArtifactPublicationFailed
|
|
201
|
+
|
|
202
|
+
**What happened.** A referenced artifact could not be made durable in the shared
|
|
203
|
+
tier, so the cache entry that references it was not published. It carries the
|
|
204
|
+
`digests` and the refusing `cause`.
|
|
205
|
+
|
|
206
|
+
**What to change.** Fix the shared tier. Failing here is the point: publishing
|
|
207
|
+
the entry anyway is exactly the state the REAPI ordering constraint exists to
|
|
208
|
+
prevent. The local row is unaffected, and the refusal is journaled as
|
|
209
|
+
`cache-provenance` with `action: "unpublished"`.
|
|
210
|
+
|
|
211
|
+
## RunParentCycleError and FlowCycleDetected
|
|
212
|
+
|
|
213
|
+
**What happened.** Recording a parent edge would close a cycle in the run DAG.
|
|
214
|
+
`path` lists execution ids from the child back to itself. The transaction that
|
|
215
|
+
inserted the edge is rolled back, so a rejected edge leaves no durable trace.
|
|
216
|
+
The driver maps this to `FlowCycleDetected`.
|
|
217
|
+
|
|
218
|
+
**What to change.** Break the spawn cycle in the flow. Of two concurrent writers
|
|
219
|
+
whose edges jointly close a cycle, exactly one fails, so seeing it under
|
|
220
|
+
concurrency does not mean both spawns were wrong.
|
|
221
|
+
|
|
222
|
+
## IrreversibleRetryRequiresIdempotencyKey
|
|
223
|
+
|
|
224
|
+
**What happened.** An irreversible action was retried without an idempotency
|
|
225
|
+
key. Retrying an effect that already reached the world needs a key that lets
|
|
226
|
+
the world deduplicate it.
|
|
227
|
+
|
|
228
|
+
**What to change.** Declare `idempotencyKey` on the action.
|
|
229
|
+
|
|
230
|
+
## SchedulerError
|
|
231
|
+
|
|
232
|
+
**What happened.** The plan scheduler itself refused. A node's own failure is
|
|
233
|
+
not one of these: the run continues and the report says `failed`.
|
|
234
|
+
|
|
235
|
+
| Code | Meaning |
|
|
236
|
+
| ---------------------- | ------------------------------------------------------------------------- |
|
|
237
|
+
| `invalid_plan` | Plan content, graph annotations, or approval digests failed verification. |
|
|
238
|
+
| `boundary_unavailable` | The boundary could not be measured for a dispatch. |
|
|
239
|
+
| `key_uncomputable` | The dispatch key could not be derived. |
|
|
240
|
+
| `elaboration_failed` | Appending an elaborated subgraph refused. |
|
|
241
|
+
| `store_failed` | The plan store or journal refused. |
|
|
242
|
+
|
|
243
|
+
**What to change.** For `boundary_unavailable`, check the `StepBoundary` layer
|
|
244
|
+
and the host filesystem. For `store_failed`, check that the plan store's
|
|
245
|
+
migrations ran: the plan set is last in `Migrations.sets`, so a composition that
|
|
246
|
+
installed only part of the ladder is missing exactly that table.
|
|
247
|
+
|
|
248
|
+
## RetentionError
|
|
249
|
+
|
|
250
|
+
**What happened.** A retention pass could not complete.
|
|
251
|
+
|
|
252
|
+
- `scan_failed`: the candidate set could not be computed. Nothing was deleted.
|
|
253
|
+
- `delete_failed`: the candidate set held but a delete refused. The transaction
|
|
254
|
+
rolled back, so nothing was deleted then either.
|
|
255
|
+
|
|
256
|
+
**What to change.** Re-run once the cause is fixed. Retention is idempotent and
|
|
257
|
+
converges. Run with `dryRun: true` first to see the candidate set.
|
|
258
|
+
|
|
259
|
+
## RunCatalogError
|
|
260
|
+
|
|
261
|
+
**What happened.** The workspace's run set could not be read.
|
|
262
|
+
|
|
263
|
+
- `invalid_options`: the limit was not a non-negative safe integer.
|
|
264
|
+
- `list_failed`: the read refused.
|
|
265
|
+
|
|
266
|
+
**What to change.** For `list_failed`, the caller keeps whatever view it had and
|
|
267
|
+
the next read converges, so no state is lost. Check the database connection.
|
|
268
|
+
|
|
269
|
+
## SelectionStoreError
|
|
270
|
+
|
|
271
|
+
**What happened.** The suspected-edge store refused.
|
|
272
|
+
|
|
273
|
+
- `invalid_input`: an edge or observation did not decode.
|
|
274
|
+
- `decode_failed`: a stored row is corrupt.
|
|
275
|
+
- `persistence_failed`: the write refused.
|
|
276
|
+
|
|
277
|
+
**What to change.** For `decode_failed`, delete and re-record the affected
|
|
278
|
+
edges: beliefs are advisory, so losing one costs a guess and nothing else.
|
|
279
|
+
|
|
280
|
+
## ArtifactGcError
|
|
281
|
+
|
|
282
|
+
**What happened.** A collection could not complete.
|
|
283
|
+
|
|
284
|
+
- `invalid_options`: an option was outside its admissible range.
|
|
285
|
+
- `mark_failed`: a root could not be scanned, or its boundary evidence could not
|
|
286
|
+
be decoded by this build. Nothing was deleted.
|
|
287
|
+
- `sweep_failed`: the inventory or a deletion refused.
|
|
288
|
+
|
|
289
|
+
**What to change.** `mark_failed` on undecodable evidence is deliberate: reading
|
|
290
|
+
such a row as "references no artifacts" is how a live blob gets collected.
|
|
291
|
+
Upgrade to a build that understands the evidence rather than forcing the sweep.
|
|
292
|
+
|
|
293
|
+
## DisasterRecoveryError
|
|
294
|
+
|
|
295
|
+
**What happened.** A backup, verification, restore, or fence refused. The error
|
|
296
|
+
carries the `method` and one of ten codes; the table is in
|
|
297
|
+
[Back up and restore the store](./guides/back-up-and-restore.md).
|
|
298
|
+
|
|
299
|
+
**What to change.** Two are worth calling out. `snapshot_incomplete` means the
|
|
300
|
+
snapshot references artifact digests the capture could not take, which almost
|
|
301
|
+
always means `objectsDirectory` was omitted for a composition that has a
|
|
302
|
+
filesystem artifact tier. `schema_mismatch` means the restored file's applied
|
|
303
|
+
migrations omit or rename a historical entry recorded in the manifest. Forward
|
|
304
|
+
additions within installed lower blocks are compatible; check historical IDs
|
|
305
|
+
and names before fencing again.
|
|
306
|
+
|
|
307
|
+
## The composition does not compile
|
|
308
|
+
|
|
309
|
+
**What happened.** A required service is missing. A composition failure is an
|
|
310
|
+
unmet `Requirements` type, by design, so there is no run-time composition error
|
|
311
|
+
to handle.
|
|
312
|
+
|
|
313
|
+
**What to change.** Read the unmet requirement in the type error and provide it.
|
|
314
|
+
The full list is in
|
|
315
|
+
[Compose a durable engine](./guides/compose-a-durable-engine.md).
|
|
316
|
+
|
|
317
|
+
## A cache hit never happens
|
|
318
|
+
|
|
319
|
+
**What happened.** Steps re-execute even though the key is stable.
|
|
320
|
+
|
|
321
|
+
**What to change.** Work down the admission list. A record is admitted only when
|
|
322
|
+
the action is `sealed`, the boundary is `hard`, no deviation occurred, and the
|
|
323
|
+
evidence carries `wholeTreeWritesVerified: true`. Under the production
|
|
324
|
+
composition that last flag comes from `WorkspaceSandbox.layerFileSystem()`, so a
|
|
325
|
+
composition with `StepBoundary.layer` and no sandbox produces run-local results
|
|
326
|
+
however everything else is wired. If admission is fine, read the
|
|
327
|
+
`flows_engine_step_cache_decisions` counter: `StaleReadSet` means a declared
|
|
328
|
+
read moved, `UnverifiableEvidence` means the recorded evidence cannot justify
|
|
329
|
+
reuse. See [Cache admission](./concepts/cache-admission.md).
|
|
330
|
+
|
|
331
|
+
## A run stays parked forever
|
|
332
|
+
|
|
333
|
+
**What happened.** The run has a waiting row and nothing wakes it.
|
|
334
|
+
|
|
335
|
+
**What to change.** Confirm the process registers the flow: a wake for an
|
|
336
|
+
unregistered flow logs a once-per-run structured warning naming the run id and
|
|
337
|
+
the flow, and leaves the row parked deliberately, so a process that does
|
|
338
|
+
register the flow can still reclaim it. Then check the waiting reason with
|
|
339
|
+
`DurableEngineState.waiting(runId)`: `timer` with a past `wakeAt` points at
|
|
340
|
+
clock redispatch, `quarantine` points at corrupt evidence, and `released` means
|
|
341
|
+
a shutdown interrupted it and the sweep will re-drive it.
|
|
342
|
+
|
|
343
|
+
A SchedulerError may carry `cleanupErrors` if sibling attempt settlement failed
|
|
344
|
+
after the primary scheduler failure. Preserve and investigate both: a failed
|
|
345
|
+
cleanup transaction leaves its attempt for recovery and never publishes a
|
|
346
|
+
successful cache entry. The original `code`, `message`, and `cause` remain the
|
|
347
|
+
primary diagnostic.
|