From 1008236b27c6c3c2809e5608471a3b8988bacb68 Mon Sep 17 00:00:00 2001
From: Theauxm <43664045+Theauxm@users.noreply.github.com>
Date: Tue, 20 Oct 2026 10:48:21 -0600
Subject: [PATCH 1/6] refactor(machines): move the C# machine projects to
Trax.StateMachine/dotnet
The engine, its persistence and testing packages and their three test
projects leave Trax.Effect for a folder of their own. Everything .NET sits
under dotnet/ so the folder can hold the other languages beside it; the
guards that enumerate each folder's src/ and tests/ also look there.
Names are unchanged in this commit.
---
.github/ci/packages.json | 7 +-
.../docs/design/phase0-codegen-scope.md | 4 +-
...TraxReferencesAreProjectReferencesTests.cs | 3 +-
.../Trax.Api.Tests.StateMachine.E2E.csproj | 4 +-
Trax.Cli/src/Trax.Cli/Trax.Cli.csproj | 2 +-
...TraxReferencesAreProjectReferencesTests.cs | 3 +-
.../Tests/InteractionMatrixTests.cs | 1 +
...TraxReferencesAreProjectReferencesTests.cs | 3 +-
...nd-only-that-entry-receives-its-outcome.md | 4 +-
Trax.Docs/contributing/writing-docs.md | 4 +-
.../turn-off-snapshot-change-notices.md | 2 +-
.../statemachine-api/add-state-machines.md | 8 +-
.../add-trax-state-machine-self-check.md | 4 +-
.../statemachine-api/client-manifest.md | 2 +-
.../declarative-data-model.md | 18 +--
.../statemachine-api/i-snapshot-effect.md | 4 +-
.../statemachine-api/invoked-run.md | 2 +-
.../statemachine-api/ir-format.md | 6 +-
.../statemachine-api/machine-conformance.md | 6 +-
.../statemachine-api/machine-instances.md | 2 +-
.../sdk-reference/statemachine-api/machine.md | 10 +-
.../statemachine-api/migrations.md | 6 +-
.../statemachine-api/persistence-ports.md | 20 +--
.../statemachine-api/result-codes.md | 4 +-
.../sdk-reference/statemachine-api/rules.md | 4 +-
.../statemachine-api/runtime-integrity.md | 6 +-
.../testing/effect-statemachine-testing.md | 4 +-
Trax.Docs/statemachine.md | 4 +-
Trax.Docs/statemachine/authoring.md | 4 +-
Trax.Docs/statemachine/canonical-wire.md | 4 +-
Trax.Docs/statemachine/codegen-pipeline.md | 6 +-
Trax.Docs/statemachine/context-schemas.md | 4 +-
.../statemachine/declarative-authoring.md | 2 +-
Trax.Docs/statemachine/generic-mutations.md | 6 +-
Trax.Docs/statemachine/invoked-runs.md | 10 +-
Trax.Docs/statemachine/invoking-trains.md | 6 +-
.../statemachine/spawning-child-machines.md | 6 +-
.../Tests/TestExcerptsNameTheirPagesTests.cs | 1 +
.../Trax.Docs.Snippets.Tests.csproj | 6 +-
.../Infrastructure/Projects.cs | 12 +-
.../Tests/CodeLinksToDocsResolveTests.cs | 3 +-
.../Tests/PublicApiIsDocumentedTests.cs | 6 +-
.../Tests/SdkReferenceFrontMatterTests.cs | 2 +-
Trax.Effect/Trax.Effect.slnx | 8 -
...TraxReferencesAreProjectReferencesTests.cs | 3 +-
.../Trax.Effect.Tests.Meta.csproj | 6 +-
.../src/Trax.Mediator/Trax.Mediator.csproj | 2 +-
...TraxReferencesAreProjectReferencesTests.cs | 3 +-
.../Trax.Mediator.Tests.Meta.csproj | 2 +-
...ator.Tests.StateMachine.Integration.csproj | 2 +-
.../book/Shopfront/Directory.Build.targets | 4 +-
.../Trax.Samples.Recovery.csproj | 4 +-
.../Trax.Samples.StateMachine.Api.csproj | 2 +-
.../Trax.Samples.StateMachine.csproj | 4 +-
.../templates/Trax.Samples.Templates.csproj | 6 +-
.../templates/content/Directory.Build.targets | 4 +-
.../Utils/ScaffoldFeed.cs | 1 +
...TraxReferencesAreProjectReferencesTests.cs | 3 +-
...TraxReferencesAreProjectReferencesTests.cs | 3 +-
Trax.StateMachine/.gitignore | 151 ++++++++++++++++++
Trax.StateMachine/LICENSE | 21 +++
Trax.StateMachine/SECURITY.md | 15 ++
.../dotnet/.config/dotnet-tools.json | 12 ++
.../dotnet/Directory.Build.props | 57 +++++++
Trax.StateMachine/dotnet/README.md | 73 +++++++++
.../dotnet/Trax.StateMachine.slnx | 12 ++
.../Actor.cs | 0
.../CallerAuthorization.cs | 0
.../ChangeFeedStartupValidator.cs | 0
.../CompatibilitySuppressions.xml | 0
.../DraftClaimHold.cs | 0
.../DraftSweeper.cs | 0
.../EfSnapshotStore.cs | 0
.../EffectClaimStore.cs | 0
.../ISnapshotChangeListener.cs | 0
.../IdempotentEffect.cs | 0
.../InvokeOutbox.cs | 0
.../InvokeOutcomeDelivery.cs | 0
.../InvokeOutcomeReconciler.cs | 0
.../InvokedRun.cs | 0
.../InvokedRunCancellation.cs | 0
.../InvokedRunOutcomes.cs | 0
.../InvokedTrainLauncher.cs | 0
.../InvokesStartupValidator.cs | 0
.../Machine.cs | 0
.../MachineCensus.cs | 0
.../MachineGraph.cs | 0
.../MachineIdStartupValidator.cs | 0
.../MachineInstanceStore.cs | 0
.../MachineInstances.cs | 0
.../MachineRulesStartupValidator.cs | 0
.../MachineSchemaStartupValidator.cs | 0
.../Mutations/GenericContracts.cs | 0
.../Mutations/GenericJunctions.cs | 0
.../Mutations/GenericMarkers.cs | 0
.../Mutations/GenericTrains.cs | 0
.../Mutations/StateMachineMutations.cs | 0
.../Ports.cs | 0
.../RequestIdRing.cs | 0
.../SnapshotChangeListener.cs | 0
.../SnapshotDraftService.cs | 0
.../SnapshotEffectRunner.cs | 0
.../SnapshotFingerprint.cs | 0
.../SnapshotLimits.cs | 0
.../SnapshotMachineRegistry.cs | 0
.../SnapshotOwner.cs | 0
.../SnapshotSelfCheck.cs | 0
.../SnapshotWatchHub.cs | 0
.../SnapshotWriteSignal.cs | 0
.../SpawnedEnds.cs | 0
.../SpawnsStartupValidator.cs | 0
.../StartDeclarationValidator.cs | 0
.../StateMachineInstruments.cs | 0
.../StateMachineOptions.cs | 0
.../StateMachineSelfCheckHealthCheck.cs | 0
.../StateMachinesBuilderExtensions.cs | 0
.../TimerFireResult.cs | 0
.../TransitionNote.cs | 0
...rax.Effect.StateMachine.Persistence.csproj | 4 +-
.../packages.lock.json | 0
.../DifferentialCorpus.cs | 0
.../MachineConformance.cs | 0
.../Trax.Effect.StateMachine.Testing.csproj | 0
.../packages.lock.json | 0
.../Trax.Effect.StateMachine/CallerRule.cs | 0
.../Trax.Effect.StateMachine/CanonicalJson.cs | 0
.../ClientManifest.cs | 0
.../CompatibilitySuppressions.xml | 0
.../Trax.Effect.StateMachine/CorpusReplay.cs | 0
.../src/Trax.Effect.StateMachine/Fluent.cs | 0
.../src/Trax.Effect.StateMachine/Invokes.cs | 0
.../MachineDefinition.cs | 0
.../MachineTrigger.cs | 0
.../Trax.Effect.StateMachine/RefusalCode.cs | 0
.../src/Trax.Effect.StateMachine/Results.cs | 0
.../Rules/ContextSchema.cs | 0
.../Rules/DeclarativeModel.cs | 0
.../Rules/IrExporter.cs | 0
.../Rules/MemberPath.cs | 0
.../Rules/Reduction.cs | 0
.../Rules/ReductionEvaluator.cs | 0
.../Trax.Effect.StateMachine/Rules/Rule.cs | 0
.../Rules/RuleEvaluator.cs | 0
.../Trax.Effect.StateMachine/Rules/Rules.cs | 0
.../Rules/SchemaReflection.cs | 0
.../Rules/SchemaValidator.cs | 0
.../Rules/ValueFormats.cs | 0
.../src/Trax.Effect.StateMachine/Snapshot.cs | 0
.../SnapshotMachine.cs | 0
.../StartDeclaration.cs | 0
.../Trax.Effect.StateMachine/StorableJson.cs | 0
.../src/Trax.Effect.StateMachine/Timers.cs | 0
.../TransitionDefinition.cs | 0
.../Trax.Effect.StateMachine.csproj | 2 +-
.../packages.lock.json | 0
.../dotnet/tests/Directory.Build.props | 15 ++
.../dotnet/tests/RedAttribute.cs | 87 ++++++++++
.../ActorHierarchyTests.cs | 0
.../AddStateMachinesBuilderTests.cs | 0
.../ChangeFeedStartupValidatorTests.cs | 0
.../ChangeFeedSwitchTests.cs | 0
.../ClientDivergenceMeterTests.cs | 0
.../DiscardEffectTests.cs | 0
.../DiscardRuleTests.cs | 0
.../DiscardTests.cs | 0
.../DraftLifetimeTests.cs | 0
.../DraftMachineScopeTests.cs | 0
.../DraftWriteRulesTests.cs | 0
.../EfSnapshotStoreTests.cs | 0
.../EffectAndHandshakeDefectTests.cs | 0
.../EffectClaimStoreTests.cs | 0
.../EffectCommitIntegrityTests.cs | 0
.../EffectPendingTests.cs | 0
.../EventAuthorizationTests.cs | 0
.../EventRuleStartupTests.cs | 0
.../Fakes/BuildMachine.cs | 0
.../Fakes/DeclarativeTurnstileMachine.cs | 0
.../Fakes/Effects.cs | 0
.../Fakes/FluentMachines.cs | 0
.../Fakes/PendingEffectMachines.cs | 0
.../Fakes/RecordingLauncher.cs | 0
.../Fakes/RevisionMachines.cs | 0
.../Fakes/RuledMachines.cs | 0
.../Fakes/SpawnMachines.cs | 0
.../Fakes/SystemMachines.cs | 0
.../Fakes/TestOrder.cs | 0
.../Fakes/TestTurnstile.cs | 0
.../Fakes/TimerMachines.cs | 0
.../Fakes/TimerSweepMachines.cs | 0
.../Fixtures/CheckTraxInvariantsAttribute.cs | 0
.../Fixtures/CountingDataContextFactory.cs | 0
.../Fixtures/InstanceHost.cs | 0
.../Fixtures/Marked.cs | 0
.../Fixtures/PausingSnapshotStore.cs | 0
.../Fixtures/PendingHarness.cs | 0
.../Fixtures/PostgresSetup.cs | 0
.../Fixtures/RawSql.cs | 0
.../Fixtures/ScratchDatabase.cs | 0
.../Fixtures/SkewedDatabaseClock.cs | 0
.../Fixtures/SnapshotNotices.cs | 0
.../Fixtures/SqliteDb.cs | 0
.../Fixtures/StartingHost.cs | 0
.../Fixtures/TestDb.cs | 0
.../Fixtures/TestPostgres.cs | 0
.../GenericRulesTests.cs | 0
.../GenericSaveTimerTests.cs | 0
.../IdempotentEffectTests.cs | 0
.../InvokeTokenStoreTests.cs | 0
.../InvokedRunLimitTests.cs | 0
.../InvokedRunOutputTests.cs | 0
.../InvokesDraftExpiryTests.cs | 0
.../InvokesReservedStateTests.cs | 0
.../MachineCensusTests.cs | 0
.../MachineConformanceTests.cs | 0
.../MachineEffectRunnerTests.cs | 0
.../MachineExportIrTests.cs | 0
.../MachineInterleavingModelTests.cs | 0
.../MachineSchemaStartupTests.cs | 0
.../MachineTrainHookOutputTests.cs | 0
.../MarkedMachineTests.cs | 0
.../MigrationSchemaTests.cs | 0
.../MutationErrorMessageTests.cs | 0
.../OrderAutosaveTests.cs | 0
.../OrderSendTests.cs | 0
.../PostgresChangeFeedTests.cs | 0
.../RegistryCorruptDataTests.cs | 0
.../RegistryJunctionTests.cs | 0
.../RequestIdControlCharacterTests.cs | 0
.../RequestIdRingSizeTests.cs | 0
.../RequestIdRingTests.cs | 0
.../RequestIdScopeTests.cs | 0
.../RequestRetryAfterServerWriteTests.cs | 0
.../RevisionTests.cs | 0
.../ServerRecordTests.cs | 0
.../ServerlessProviderTests.cs | 0
.../SnapshotAdvanceGuardTests.cs | 0
.../SnapshotChangeListenerTests.cs | 0
.../SnapshotChangeNotifyTests.cs | 0
.../SnapshotDraftExpiryTests.cs | 0
.../SnapshotDraftServiceTests.cs | 0
.../SnapshotDraftServiceTimerTests.cs | 0
.../SnapshotMutationDefectTests.cs | 0
.../SnapshotOwnerKeyTests.cs | 0
.../SnapshotSelfCheckTests.cs | 0
.../SnapshotStoreDefaultMembersTests.cs | 0
.../SnapshotWatchHubTests.cs | 0
.../SpawnedChildTests.cs | 0
.../SpawnsStartupValidatorTests.cs | 0
.../SqliteRevisionTriggerTests.cs | 0
.../SqliteSnapshotChangePollTests.cs | 0
.../SqliteStoreTests.cs | 0
.../StartTests.cs | 0
.../StateMachineSelfCheckHealthCheckTests.cs | 0
.../SystemOwnedInstanceTests.cs | 0
.../TimerDueAtAnswerTests.cs | 0
.../TimerDueAtTests.cs | 0
.../TimerFailureClassificationTests.cs | 0
.../TimerFireConditionTests.cs | 0
.../TimerSweepIsolationTests.cs | 0
.../TransitionHistoryTests.cs | 0
...tateMachine.Persistence.Integration.csproj | 10 +-
.../TriggerInputValidationPathTests.cs | 0
.../packages.lock.json | 0
.../Fakes/CountingCharge.cs | 0
.../Fakes/StressOrder.cs | 0
.../Fixtures/StressFixture.cs | 0
.../Fixtures/StressProfile.cs | 0
.../Fixtures/TestPostgres.cs | 0
.../ClaimContentionStressTests.cs | 0
.../ExactlyOnceStressTests.cs | 0
.../RevisionStoreModelTests.cs | 0
.../IntegrationTests/ThroughputStressTests.cs | 0
.../StressDb.cs | 0
...ax.Effect.StateMachine.Tests.Stress.csproj | 2 +-
.../packages.lock.json | 0
.../Conformance/CheckoutConformanceTests.cs | 0
.../Conformance/ConformanceRunnerTests.cs | 0
.../Conformance/ConformanceTests.cs | 0
.../Conformance/FixturePathsTests.cs | 0
.../Conformance/FluentCheckoutTests.cs | 0
.../Conformance/IrFormatParityTests.cs | 0
.../Conformance/IrSchemaTests.cs | 0
.../Conformance/MigrationGoldenTests.cs | 0
.../Conformance/RefusalCodeParityTests.cs | 0
.../Conformance/StrictInputGoldenTests.cs | 0
.../Differential/DeclarativeTurnstileTests.cs | 0
.../DifferentialConformanceTests.cs | 0
.../DifferentialCorpusReplayTests.cs | 0
.../Differential/StrictInputParityTests.cs | 0
.../Differential/TwinSequenceParityTests.cs | 0
.../Fakes/ConfiguredMachine.cs | 0
.../Fakes/DeclarativeCheckout.cs | 0
.../Fakes/DeclarativeTurnstile.cs | 0
.../Fakes/FaultyMachine.cs | 0
.../Fakes/FluentCheckout.cs | 0
.../Fakes/GaugeMachine.cs | 0
.../Fakes/IngestContracts.cs | 0
.../Fakes/IngestMachine.cs | 0
.../Fakes/RangeMachine.cs | 0
.../Fakes/ReminderMachine.cs | 0
.../Fakes/RichExportMachine.cs | 0
.../Fakes/StrictInputMachine.cs | 0
.../Fakes/TestCheckout.cs | 0
.../Fakes/TestTurnstile.cs | 0
.../Fakes/TestTurnstileV2.cs | 0
.../Fakes/WaitMachine.cs | 0
.../Helpers/ConformanceTestee.cs | 0
.../Helpers/FixturePaths.cs | 0
.../Helpers/TwinEngine.cs | 0
.../Helpers/TypedSurfaceJson.cs | 0
.../Trax.Effect.StateMachine.Tests.csproj | 0
.../UnitTests/AdvanceTests.cs | 0
.../CanonicalizationConformanceTests.cs | 0
.../UnitTests/ClientManifestTests.cs | 0
.../UnitTests/ComparisonRefusalTests.cs | 0
.../DeclarativeAuthoringDefectTests.cs | 0
.../UnitTests/DifferentialAuthoringTests.cs | 0
.../UnitTests/DifferentialBuilderTests.cs | 0
.../UnitTests/EngineContractTests.cs | 0
.../UnitTests/EngineDefensiveTests.cs | 0
.../UnitTests/EngineParityDefectTests.cs | 0
.../UnitTests/EventWriteRuleTests.cs | 0
.../UnitTests/IntrospectionTests.cs | 0
.../UnitTests/InvokesDeclarationTests.cs | 0
.../UnitTests/IrExporterTests.cs | 0
.../UnitTests/MachineBuilderTests.cs | 0
.../UnitTests/MachineInstanceIdTests.cs | 0
.../UnitTests/MigrationTests.cs | 0
.../UnitTests/ReductionEvaluatorTests.cs | 0
.../UnitTests/RefusalPrecedenceTests.cs | 0
.../UnitTests/RehydrateTests.cs | 0
.../UnitTests/RuleEvaluatorTests.cs | 0
.../UnitTests/RulesTests.cs | 0
.../UnitTests/RulesVocabularyTests.cs | 0
.../UnitTests/SchemaFormatTests.cs | 0
.../UnitTests/SchemaStrictnessTests.cs | 0
.../UnitTests/SchemaValidatorTests.cs | 0
.../UnitTests/SerializationRoundTripTests.cs | 0
.../UnitTests/SpawnDeclarationTests.cs | 0
.../UnitTests/StateInvariantTests.cs | 0
.../UnitTests/StorableJsonTests.cs | 0
.../UnitTests/TimerDeclarationTests.cs | 0
.../UnitTests/TotalityTests.cs | 0
.../UnitTests/TriggerInputPropertyTests.cs | 0
.../UnitTests/TriggerInputValidationTests.cs | 0
.../UnitTests/TriggerMetadataTests.cs | 0
.../UnitTests/TypedSchemaTests.cs | 0
.../packages.lock.json | 0
348 files changed, 603 insertions(+), 140 deletions(-)
create mode 100644 Trax.StateMachine/.gitignore
create mode 100644 Trax.StateMachine/LICENSE
create mode 100644 Trax.StateMachine/SECURITY.md
create mode 100644 Trax.StateMachine/dotnet/.config/dotnet-tools.json
create mode 100644 Trax.StateMachine/dotnet/Directory.Build.props
create mode 100644 Trax.StateMachine/dotnet/README.md
create mode 100644 Trax.StateMachine/dotnet/Trax.StateMachine.slnx
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/Actor.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/CallerAuthorization.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/ChangeFeedStartupValidator.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/CompatibilitySuppressions.xml (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/DraftClaimHold.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/DraftSweeper.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/EfSnapshotStore.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/EffectClaimStore.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/ISnapshotChangeListener.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/IdempotentEffect.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/InvokeOutbox.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeDelivery.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeReconciler.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/InvokedRun.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/InvokedRunCancellation.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/InvokedRunOutcomes.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/InvokedTrainLauncher.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/InvokesStartupValidator.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/Machine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/MachineCensus.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/MachineGraph.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/MachineIdStartupValidator.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/MachineInstanceStore.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/MachineInstances.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/MachineRulesStartupValidator.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/MachineSchemaStartupValidator.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericContracts.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericJunctions.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericMarkers.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericTrains.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/Mutations/StateMachineMutations.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/Ports.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/RequestIdRing.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/SnapshotChangeListener.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/SnapshotDraftService.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/SnapshotEffectRunner.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/SnapshotFingerprint.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/SnapshotLimits.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/SnapshotMachineRegistry.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/SnapshotOwner.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/SnapshotSelfCheck.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/SnapshotWatchHub.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/SnapshotWriteSignal.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/SpawnedEnds.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/SpawnsStartupValidator.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/StartDeclarationValidator.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/StateMachineInstruments.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/StateMachineOptions.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/StateMachineSelfCheckHealthCheck.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/StateMachinesBuilderExtensions.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/TimerFireResult.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/TransitionNote.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/Trax.Effect.StateMachine.Persistence.csproj (94%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Persistence/packages.lock.json (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Testing/DifferentialCorpus.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Testing/MachineConformance.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Testing/Trax.Effect.StateMachine.Testing.csproj (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine.Testing/packages.lock.json (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/CallerRule.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/CanonicalJson.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/ClientManifest.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/CompatibilitySuppressions.xml (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/CorpusReplay.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Fluent.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Invokes.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/MachineDefinition.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/MachineTrigger.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/RefusalCode.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Results.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Rules/ContextSchema.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Rules/DeclarativeModel.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Rules/IrExporter.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Rules/MemberPath.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Rules/Reduction.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Rules/ReductionEvaluator.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Rules/Rule.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Rules/RuleEvaluator.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Rules/Rules.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Rules/SchemaReflection.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Rules/SchemaValidator.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Rules/ValueFormats.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Snapshot.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/SnapshotMachine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/StartDeclaration.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/StorableJson.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Timers.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/TransitionDefinition.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/Trax.Effect.StateMachine.csproj (94%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/src/Trax.Effect.StateMachine/packages.lock.json (100%)
create mode 100644 Trax.StateMachine/dotnet/tests/Directory.Build.props
create mode 100644 Trax.StateMachine/dotnet/tests/RedAttribute.cs
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/ActorHierarchyTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/AddStateMachinesBuilderTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/ChangeFeedStartupValidatorTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/ChangeFeedSwitchTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/ClientDivergenceMeterTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardEffectTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardRuleTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftLifetimeTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftMachineScopeTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftWriteRulesTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/EfSnapshotStoreTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectAndHandshakeDefectTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectClaimStoreTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectCommitIntegrityTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectPendingTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/EventAuthorizationTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/EventRuleStartupTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/BuildMachine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/DeclarativeTurnstileMachine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/Effects.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/FluentMachines.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/PendingEffectMachines.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RecordingLauncher.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RevisionMachines.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RuledMachines.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/SpawnMachines.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/SystemMachines.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TestOrder.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TestTurnstile.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TimerMachines.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TimerSweepMachines.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/CheckTraxInvariantsAttribute.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/CountingDataContextFactory.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/InstanceHost.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/Marked.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PausingSnapshotStore.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PendingHarness.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PostgresSetup.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/RawSql.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/ScratchDatabase.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SkewedDatabaseClock.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SnapshotNotices.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SqliteDb.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/StartingHost.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/TestDb.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/TestPostgres.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/GenericRulesTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/GenericSaveTimerTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/IdempotentEffectTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokeTokenStoreTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokedRunLimitTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokedRunOutputTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokesDraftExpiryTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokesReservedStateTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineCensusTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineConformanceTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineEffectRunnerTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineExportIrTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineInterleavingModelTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineSchemaStartupTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineTrainHookOutputTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/MarkedMachineTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/MigrationSchemaTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/MutationErrorMessageTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/OrderAutosaveTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/OrderSendTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/PostgresChangeFeedTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/RegistryCorruptDataTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/RegistryJunctionTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdControlCharacterTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdRingSizeTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdRingTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdScopeTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestRetryAfterServerWriteTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/RevisionTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/ServerRecordTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/ServerlessProviderTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotAdvanceGuardTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotChangeListenerTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotChangeNotifyTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftExpiryTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftServiceTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftServiceTimerTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotMutationDefectTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotOwnerKeyTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotSelfCheckTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotStoreDefaultMembersTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotWatchHubTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SpawnedChildTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SpawnsStartupValidatorTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteRevisionTriggerTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteSnapshotChangePollTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteStoreTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/StartTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/StateMachineSelfCheckHealthCheckTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/SystemOwnedInstanceTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerDueAtAnswerTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerDueAtTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerFailureClassificationTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerFireConditionTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerSweepIsolationTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/TransitionHistoryTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/Trax.Effect.StateMachine.Persistence.Integration.csproj (79%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/TriggerInputValidationPathTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Persistence.Integration/packages.lock.json (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests.Stress/Fakes/CountingCharge.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests.Stress/Fakes/StressOrder.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/StressFixture.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/StressProfile.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/TestPostgres.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ClaimContentionStressTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ExactlyOnceStressTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/RevisionStoreModelTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ThroughputStressTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests.Stress/StressDb.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests.Stress/Trax.Effect.StateMachine.Tests.Stress.csproj (91%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests.Stress/packages.lock.json (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Conformance/CheckoutConformanceTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceRunnerTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Conformance/FixturePathsTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Conformance/FluentCheckoutTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Conformance/IrFormatParityTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Conformance/IrSchemaTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Conformance/MigrationGoldenTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Conformance/RefusalCodeParityTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Conformance/StrictInputGoldenTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Differential/DeclarativeTurnstileTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Differential/DifferentialConformanceTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Differential/DifferentialCorpusReplayTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Differential/StrictInputParityTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Differential/TwinSequenceParityTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/ConfiguredMachine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/DeclarativeCheckout.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/DeclarativeTurnstile.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/FaultyMachine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/FluentCheckout.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/GaugeMachine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestContracts.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestMachine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/RangeMachine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/ReminderMachine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/RichExportMachine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/StrictInputMachine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/TestCheckout.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/TestTurnstile.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/TestTurnstileV2.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Fakes/WaitMachine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Helpers/ConformanceTestee.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Helpers/FixturePaths.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Helpers/TwinEngine.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Helpers/TypedSurfaceJson.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/Trax.Effect.StateMachine.Tests.csproj (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/AdvanceTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/CanonicalizationConformanceTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/ClientManifestTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/ComparisonRefusalTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/DeclarativeAuthoringDefectTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/DifferentialAuthoringTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/DifferentialBuilderTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineContractTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineDefensiveTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineParityDefectTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/EventWriteRuleTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/IntrospectionTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/InvokesDeclarationTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/IrExporterTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/MachineBuilderTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/MachineInstanceIdTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/MigrationTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/ReductionEvaluatorTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/RefusalPrecedenceTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/RehydrateTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/RuleEvaluatorTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/RulesTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/RulesVocabularyTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaFormatTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaStrictnessTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaValidatorTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/SerializationRoundTripTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/SpawnDeclarationTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/StateInvariantTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/StorableJsonTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/TimerDeclarationTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/TotalityTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputPropertyTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputValidationTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerMetadataTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/UnitTests/TypedSchemaTests.cs (100%)
rename {Trax.Effect => Trax.StateMachine/dotnet}/tests/Trax.Effect.StateMachine.Tests/packages.lock.json (100%)
diff --git a/.github/ci/packages.json b/.github/ci/packages.json
index 24d8eeb89..e4be84971 100644
--- a/.github/ci/packages.json
+++ b/.github/ci/packages.json
@@ -13,9 +13,14 @@
"dotnet": { "solution": "Trax.Effect.slnx", "state-machine": true, "pack": true, "coverage": true, "postgres": "trax_data_tests", "rabbitmq": true, "databases": [], "timeout": 15, "test-args": "" },
"adr": { "adr-root": "docs/adr", "known-areas": "migrations,providers,data-model,testing,platform,auth", "census-root": "tests/Trax.Effect.Tests.Meta" }
},
+ {
+ "folder": "Trax.StateMachine",
+ "upstream": ["Trax.Effect", "Trax.Api.StateMachine"],
+ "dotnet": { "solution": "dotnet/Trax.StateMachine.slnx", "state-machine": true, "pack": true, "coverage": true, "postgres": "trax_data_tests", "rabbitmq": false, "databases": [], "timeout": 15, "test-args": "" }
+ },
{
"folder": "Trax.Mediator",
- "upstream": ["Trax.Effect"],
+ "upstream": ["Trax.StateMachine"],
"dotnet": { "solution": "Trax.Mediator.slnx", "pack": true, "coverage": true, "postgres": "trax_data_tests", "rabbitmq": false, "databases": [], "timeout": 15, "test-args": "" },
"adr": { "adr-root": "docs/adr", "known-areas": "auth,platform,testing", "census-root": "tests/Trax.Mediator.Tests.Meta" }
},
diff --git a/Trax.Api.StateMachine/docs/design/phase0-codegen-scope.md b/Trax.Api.StateMachine/docs/design/phase0-codegen-scope.md
index 90069ccfe..11407028b 100644
--- a/Trax.Api.StateMachine/docs/design/phase0-codegen-scope.md
+++ b/Trax.Api.StateMachine/docs/design/phase0-codegen-scope.md
@@ -51,7 +51,7 @@ per language runs them. Consequences:
### What is built (Increment A: C# authoring -> IR)
-In `Trax.Effect/src/Trax.Effect.StateMachine/Rules/`:
+In `Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/`:
- `Rule.cs` + `RuleEvaluator.cs` (guard/validator vocabulary as data + a total evaluator).
- `Reduction.cs` + `ReductionEvaluator.cs` (reducer vocabulary + non-mutating evaluator).
- `MemberPath.cs`, `ContextSchema.cs`, `SchemaReflection.cs`, `SchemaValidator.cs` (typed layer: member
@@ -113,7 +113,7 @@ Ordered by priority as it was written then (E before D; see §5 and Decision D):
- **Schema validation is stricter than the old twins:** `SchemaValidator` enforces `additionalProperties:
false` (matching `machine.json`'s intent and the C# side). A v2 that adds a field needs its own validator
(see how `migration.test.ts` overrides the v2 `Unlocked` validator).
-- **Run the suites:** C# `dotnet test Trax.Effect/tests/Trax.Effect.StateMachine.Tests/...`; TS
+- **Run the suites:** C# `dotnet test Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/...`; TS
`cd Trax.Api.StateMachine && npx vitest run` and `npx tsc --noEmit`.
## 1. The baseline this plan started from (grounded, 2026-08-11)
diff --git a/Trax.Api/tests/Trax.Api.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs b/Trax.Api/tests/Trax.Api.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
index bfac476c7..063d7e963 100644
--- a/Trax.Api/tests/Trax.Api.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
@@ -46,11 +46,12 @@ public void No_project_references_a_Trax_package_built_in_this_repository()
///
/// The package id of every Trax project in the repository: the file name of each csproj under
- /// a folder's src/.
+ /// a folder's src/, or its dotnet/src/ in a folder that holds more than .NET.
///
private static HashSet TraxProjects() =>
Directory
.EnumerateDirectories(MonorepoRoot.Path, "Trax.*")
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
.Select(folder => Path.Combine(folder, "src"))
.Where(Directory.Exists)
.SelectMany(src =>
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Trax.Api.Tests.StateMachine.E2E.csproj b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Trax.Api.Tests.StateMachine.E2E.csproj
index eae5d6d6d..ab82f6a62 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Trax.Api.Tests.StateMachine.E2E.csproj
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Trax.Api.Tests.StateMachine.E2E.csproj
@@ -38,8 +38,8 @@
-
-
+
+
diff --git a/Trax.Cli/src/Trax.Cli/Trax.Cli.csproj b/Trax.Cli/src/Trax.Cli/Trax.Cli.csproj
index 99f1fdb79..678a0cf8c 100644
--- a/Trax.Cli/src/Trax.Cli/Trax.Cli.csproj
+++ b/Trax.Cli/src/Trax.Cli/Trax.Cli.csproj
@@ -23,7 +23,7 @@
-
+
diff --git a/Trax.Cli/tests/Trax.Cli.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs b/Trax.Cli/tests/Trax.Cli.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
index 63e3d35f6..177bceecc 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
@@ -46,11 +46,12 @@ public void No_project_references_a_Trax_package_built_in_this_repository()
///
/// The package id of every Trax project in the repository: the file name of each csproj under
- /// a folder's src/.
+ /// a folder's src/, or its dotnet/src/ in a folder that holds more than .NET.
///
private static HashSet TraxProjects() =>
Directory
.EnumerateDirectories(MonorepoRoot.Path, "Trax.*")
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
.Select(folder => Path.Combine(folder, "src"))
.Where(Directory.Exists)
.SelectMany(src =>
diff --git a/Trax.Core/tests/Trax.Core.Tests.Meta/Tests/InteractionMatrixTests.cs b/Trax.Core/tests/Trax.Core.Tests.Meta/Tests/InteractionMatrixTests.cs
index ba13d4eff..5fbe7a444 100644
--- a/Trax.Core/tests/Trax.Core.Tests.Meta/Tests/InteractionMatrixTests.cs
+++ b/Trax.Core/tests/Trax.Core.Tests.Meta/Tests/InteractionMatrixTests.cs
@@ -617,6 +617,7 @@ private sealed class TestIndex(string monorepoRoot)
private readonly Lazy> _sources = new(() =>
Directory
.EnumerateDirectories(monorepoRoot, "Trax.*")
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
.Select(folder => Path.Combine(folder, "tests"))
.Where(Directory.Exists)
.SelectMany(tests =>
diff --git a/Trax.Core/tests/Trax.Core.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs b/Trax.Core/tests/Trax.Core.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
index b165a874a..424906115 100644
--- a/Trax.Core/tests/Trax.Core.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
+++ b/Trax.Core/tests/Trax.Core.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
@@ -46,11 +46,12 @@ public void No_project_references_a_Trax_package_built_in_this_repository()
///
/// The package id of every Trax project in the repository: the file name of each csproj under
- /// a folder's src/.
+ /// a folder's src/, or its dotnet/src/ in a folder that holds more than .NET.
///
private static HashSet TraxProjects() =>
Directory
.EnumerateDirectories(MonorepoRoot.Path, "Trax.*")
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
.Select(folder => Path.Combine(folder, "src"))
.Where(Directory.Exists)
.SelectMany(src =>
diff --git a/Trax.Docs/adr/0046-a-machine-state-invokes-a-train-and-only-that-entry-receives-its-outcome.md b/Trax.Docs/adr/0046-a-machine-state-invokes-a-train-and-only-that-entry-receives-its-outcome.md
index c5e91bf5f..583602552 100644
--- a/Trax.Docs/adr/0046-a-machine-state-invokes-a-train-and-only-that-entry-receives-its-outcome.md
+++ b/Trax.Docs/adr/0046-a-machine-state-invokes-a-train-and-only-that-entry-receives-its-outcome.md
@@ -207,7 +207,7 @@ checkpoint.
Written first, red, before the code they cover. Each names the class and method it will have.
-In `Trax.Effect/tests/Trax.Effect.StateMachine.Tests`:
+In `Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests`:
- `InvokesDeclarationTests.An_invoking_state_without_OnCancelled_is_refused_at_build`
- `InvokesDeclarationTests.A_guarded_OnDone_routes_an_unsure_output_to_its_own_target`
- `InvokesDeclarationTests.Outcomes_export_as_their_own_trigger_kind_per_invoke_edge_with_the_output_schema`
@@ -215,7 +215,7 @@ In `Trax.Effect/tests/Trax.Effect.StateMachine.Tests`:
- `MachineInstanceIdTests.Keys_a_b_c_split_differently_give_different_ids`
- `DifferentialCorpusReplayTests.Outcome_triggers_apply_the_same_reduction_in_the_twin`
-In `Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration`, on Postgres and Sqlite:
+In `Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration`, on Postgres and Sqlite:
- `InvokesStartupRefusalTests`, one test per refusal, each naming the offending junction, train or member:
`A_plain_Junction_is_refused`, `An_IChain_over_a_non_effect_interface_is_refused`,
`A_train_that_is_not_a_ServiceTrain_is_refused`, `A_recorder_refusal_is_refused`,
diff --git a/Trax.Docs/contributing/writing-docs.md b/Trax.Docs/contributing/writing-docs.md
index 91429a637..95a497d70 100644
--- a/Trax.Docs/contributing/writing-docs.md
+++ b/Trax.Docs/contributing/writing-docs.md
@@ -140,7 +140,7 @@ with a full GitHub URL only when `source:` cannot carry it.
| Test | Fails on |
|---|---|
-| `CodeLinksToDocsResolveTests` | a `https://traxsharp.net/docs/...` link in a `*.cs` file under a `Trax.*/src/` folder, `Trax.Samples/samples/` or `Trax.Samples/templates/` that does not resolve to a published page (or a `redirect_from` of one), or whose anchor names no heading on it |
+| `CodeLinksToDocsResolveTests` | a `https://traxsharp.net/docs/...` link in a `*.cs` file under a `Trax.*/src/` or `Trax.*/dotnet/src/` folder, `Trax.Samples/samples/` or `Trax.Samples/templates/` that does not resolve to a published page (or a `redirect_from` of one), or whose anchor names no heading on it |
| `SourceLinksBackTests` | an SDK reference page whose `source:` lists C# files, none of which links to the page |
## SDK reference pages
@@ -158,7 +158,7 @@ source:
| Field | Value |
|---|---|
-| `package` | The project name of a packable project: a csproj under a `Trax.*/src/` folder that does not set `IsPackable` false. |
+| `package` | The project name of a packable project: a csproj under a `Trax.*/src/` or `Trax.*/dotnet/src/` folder that does not set `IsPackable` false. |
| `namespace` | The namespace the type is in, or a list of them. Not needed with `surface`. |
| `source` | The files or directories the page documents, relative to the repository root. |
| `surface` | `graphql` for the GraphQL schema pages (`package: Trax.Api.GraphQL`), `typescript` for the npm package (`package` then names it, as its `package.json` does). |
diff --git a/Trax.Docs/migration-guides/turn-off-snapshot-change-notices.md b/Trax.Docs/migration-guides/turn-off-snapshot-change-notices.md
index 92697434d..f936a73ff 100644
--- a/Trax.Docs/migration-guides/turn-off-snapshot-change-notices.md
+++ b/Trax.Docs/migration-guides/turn-off-snapshot-change-notices.md
@@ -6,7 +6,7 @@ area: data
nav_order: 12
source:
- Trax.Effect/src/Trax.Effect.Data.Postgres/Migrations/080_snapshot_draft_change_notify_switch.sql
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/ChangeFeedStartupValidator.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/ChangeFeedStartupValidator.cs
---
# Turn off state-machine change notices
diff --git a/Trax.Docs/sdk-reference/statemachine-api/add-state-machines.md b/Trax.Docs/sdk-reference/statemachine-api/add-state-machines.md
index 523c92a47..25e35b962 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/add-state-machines.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/add-state-machines.md
@@ -9,10 +9,10 @@ nav_order: 1
package: Trax.Effect.StateMachine.Persistence
namespace: Trax.Effect.StateMachine.Persistence
source:
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachinesBuilderExtensions.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachineOptions.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineCensus.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachineInstruments.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachinesBuilderExtensions.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineOptions.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineCensus.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineInstruments.cs
redirect_from:
- /docs/sdk-reference/statemachine-api/add-trax-state-machines
---
diff --git a/Trax.Docs/sdk-reference/statemachine-api/add-trax-state-machine-self-check.md b/Trax.Docs/sdk-reference/statemachine-api/add-trax-state-machine-self-check.md
index ab6719911..7acc77239 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/add-trax-state-machine-self-check.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/add-trax-state-machine-self-check.md
@@ -9,8 +9,8 @@ nav_order: 12
package: Trax.Effect.StateMachine.Persistence
namespace: Trax.Effect.StateMachine.Persistence
source:
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachineSelfCheckHealthCheck.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotSelfCheck.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineSelfCheckHealthCheck.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotSelfCheck.cs
---
# AddTraxStateMachineSelfCheck
diff --git a/Trax.Docs/sdk-reference/statemachine-api/client-manifest.md b/Trax.Docs/sdk-reference/statemachine-api/client-manifest.md
index 299e9a9fa..f0d25a2d1 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/client-manifest.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/client-manifest.md
@@ -9,7 +9,7 @@ nav_order: 16
package: Trax.Effect.StateMachine
namespace: Trax.Effect.StateMachine
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/ClientManifest.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/ClientManifest.cs
- Trax.Effect/src/Trax.Effect/Configuration/ClientExport/TraxClientExport.cs
- Trax.Effect/src/Trax.Effect/Configuration/ClientExport/ITraxStartupCheck.cs
- Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Extensions/TraxClientManifestExtensions.cs
diff --git a/Trax.Docs/sdk-reference/statemachine-api/declarative-data-model.md b/Trax.Docs/sdk-reference/statemachine-api/declarative-data-model.md
index d458b063c..189501bbf 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/declarative-data-model.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/declarative-data-model.md
@@ -9,15 +9,15 @@ nav_order: 4
package: Trax.Effect.StateMachine
namespace: Trax.Effect.StateMachine
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/Rule.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/Reduction.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/ContextSchema.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/DeclarativeModel.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/RuleEvaluator.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/ReductionEvaluator.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/MachineDefinition.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Fluent.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/StorableJson.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/Rule.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/Reduction.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ContextSchema.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/DeclarativeModel.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/RuleEvaluator.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ReductionEvaluator.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/MachineDefinition.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Fluent.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/StorableJson.cs
---
# Declarative data model
diff --git a/Trax.Docs/sdk-reference/statemachine-api/i-snapshot-effect.md b/Trax.Docs/sdk-reference/statemachine-api/i-snapshot-effect.md
index f423b75e3..79d2df69e 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/i-snapshot-effect.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/i-snapshot-effect.md
@@ -9,8 +9,8 @@ nav_order: 7
package: Trax.Effect.StateMachine.Persistence
namespace: Trax.Effect.StateMachine.Persistence
source:
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Ports.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotEffectRunner.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Ports.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotEffectRunner.cs
redirect_from:
- /docs/sdk-reference/statemachine-api/effects
---
diff --git a/Trax.Docs/sdk-reference/statemachine-api/invoked-run.md b/Trax.Docs/sdk-reference/statemachine-api/invoked-run.md
index 3562d8282..ca68f44fb 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/invoked-run.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/invoked-run.md
@@ -9,7 +9,7 @@ nav_order: 11
package: Trax.Effect.StateMachine.Persistence
namespace: Trax.Effect.StateMachine.Persistence
source:
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokedRun.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedRun.cs
---
# InvokedRun
diff --git a/Trax.Docs/sdk-reference/statemachine-api/ir-format.md b/Trax.Docs/sdk-reference/statemachine-api/ir-format.md
index da8aea258..3b431e908 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/ir-format.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/ir-format.md
@@ -9,9 +9,9 @@ nav_order: 5
package: Trax.Effect.StateMachine
namespace: Trax.Effect.StateMachine
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/IrExporter.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/SchemaReflection.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/ValueFormats.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/IrExporter.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/SchemaReflection.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ValueFormats.cs
---
# IR format
diff --git a/Trax.Docs/sdk-reference/statemachine-api/machine-conformance.md b/Trax.Docs/sdk-reference/statemachine-api/machine-conformance.md
index 913137c78..d0b290ba9 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/machine-conformance.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/machine-conformance.md
@@ -9,9 +9,9 @@ nav_order: 15
package: Trax.Effect.StateMachine.Testing
namespace: Trax.Effect.StateMachine.Testing
source:
- - Trax.Effect/src/Trax.Effect.StateMachine.Testing/MachineConformance.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Testing/DifferentialCorpus.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/CorpusReplay.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/MachineConformance.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/DifferentialCorpus.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CorpusReplay.cs
---
# MachineConformance
diff --git a/Trax.Docs/sdk-reference/statemachine-api/machine-instances.md b/Trax.Docs/sdk-reference/statemachine-api/machine-instances.md
index 58cd67e3e..a3aa9e0c3 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/machine-instances.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/machine-instances.md
@@ -9,7 +9,7 @@ nav_order: 13
package: Trax.Effect.StateMachine.Persistence
namespace: Trax.Effect.StateMachine.Persistence
source:
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineInstances.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineInstances.cs
---
# IMachineInstances
diff --git a/Trax.Docs/sdk-reference/statemachine-api/machine.md b/Trax.Docs/sdk-reference/statemachine-api/machine.md
index 60b885324..bd2fc9a20 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/machine.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/machine.md
@@ -9,11 +9,11 @@ nav_order: 2
package: Trax.Effect.StateMachine.Persistence
namespace: Trax.Effect.StateMachine.Persistence
source:
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Machine.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Fluent.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Invokes.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Timers.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/MachineTrigger.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Machine.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Fluent.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Invokes.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Timers.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/MachineTrigger.cs
redirect_from:
- /docs/sdk-reference/statemachine-api/fluent-authoring
---
diff --git a/Trax.Docs/sdk-reference/statemachine-api/migrations.md b/Trax.Docs/sdk-reference/statemachine-api/migrations.md
index 38f6523f9..f95215637 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/migrations.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/migrations.md
@@ -9,9 +9,9 @@ nav_order: 6
package: Trax.Effect.StateMachine
namespace: Trax.Effect.StateMachine
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/Fluent.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/SnapshotMachine.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/MachineDefinition.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Fluent.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/SnapshotMachine.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/MachineDefinition.cs
---
# Migrations
diff --git a/Trax.Docs/sdk-reference/statemachine-api/persistence-ports.md b/Trax.Docs/sdk-reference/statemachine-api/persistence-ports.md
index d1ba4be7c..df0c14594 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/persistence-ports.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/persistence-ports.md
@@ -9,16 +9,16 @@ nav_order: 8
package: Trax.Effect.StateMachine.Persistence
namespace: Trax.Effect.StateMachine.Persistence
source:
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Ports.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotDraftService.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Actor.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/CallerAuthorization.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/EfSnapshotStore.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/EffectClaimStore.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/IdempotentEffect.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/RequestIdRing.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotLimits.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotMachineRegistry.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Ports.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotDraftService.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Actor.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/CallerAuthorization.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/EfSnapshotStore.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/EffectClaimStore.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/IdempotentEffect.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/RequestIdRing.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotLimits.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotMachineRegistry.cs
---
# Persistence ports
diff --git a/Trax.Docs/sdk-reference/statemachine-api/result-codes.md b/Trax.Docs/sdk-reference/statemachine-api/result-codes.md
index bf6a27231..b478afb21 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/result-codes.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/result-codes.md
@@ -9,8 +9,8 @@ nav_order: 9
package: Trax.Effect.StateMachine
namespace: Trax.Effect.StateMachine
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/RefusalCode.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Results.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/RefusalCode.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Results.cs
---
# Result codes
diff --git a/Trax.Docs/sdk-reference/statemachine-api/rules.md b/Trax.Docs/sdk-reference/statemachine-api/rules.md
index 66074928e..dad0a8f1f 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/rules.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/rules.md
@@ -9,8 +9,8 @@ nav_order: 3
package: Trax.Effect.StateMachine
namespace: Trax.Effect.StateMachine
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/Rules.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/MemberPath.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/Rules.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/MemberPath.cs
---
# Rules
diff --git a/Trax.Docs/sdk-reference/statemachine-api/runtime-integrity.md b/Trax.Docs/sdk-reference/statemachine-api/runtime-integrity.md
index 732934d61..932f2445a 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/runtime-integrity.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/runtime-integrity.md
@@ -9,9 +9,9 @@ nav_order: 10
package: Trax.Effect.StateMachine.Persistence
namespace: Trax.Effect.StateMachine.Persistence
source:
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotSelfCheck.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotMachineRegistry.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Machine.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotSelfCheck.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotMachineRegistry.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Machine.cs
---
# Runtime integrity
diff --git a/Trax.Docs/sdk-reference/testing/effect-statemachine-testing.md b/Trax.Docs/sdk-reference/testing/effect-statemachine-testing.md
index d24ee9bd6..5dab8bed6 100644
--- a/Trax.Docs/sdk-reference/testing/effect-statemachine-testing.md
+++ b/Trax.Docs/sdk-reference/testing/effect-statemachine-testing.md
@@ -6,8 +6,8 @@ area: testing
package: Trax.Effect.StateMachine.Testing
namespace: Trax.Effect.StateMachine.Testing
source:
- - Trax.Effect/src/Trax.Effect.StateMachine.Testing/MachineConformance.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Testing/DifferentialCorpus.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/MachineConformance.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/DifferentialCorpus.cs
parent: Testing
grand_parent: SDK Reference
nav_order: 5
diff --git a/Trax.Docs/statemachine.md b/Trax.Docs/statemachine.md
index 1294b8c5c..b3d398987 100644
--- a/Trax.Docs/statemachine.md
+++ b/Trax.Docs/statemachine.md
@@ -5,8 +5,8 @@ type: explanation
area: machines
nav_order: 1
source:
- - Trax.Effect/src/Trax.Effect.StateMachine
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence
---
# State machines
diff --git a/Trax.Docs/statemachine/authoring.md b/Trax.Docs/statemachine/authoring.md
index 63c2c6dc9..e9b9bd7a9 100644
--- a/Trax.Docs/statemachine/authoring.md
+++ b/Trax.Docs/statemachine/authoring.md
@@ -5,8 +5,8 @@ type: how-to
area: machines
nav_order: 1
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/Fluent.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachinesBuilderExtensions.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Fluent.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachinesBuilderExtensions.cs
---
# Author and serve a machine
diff --git a/Trax.Docs/statemachine/canonical-wire.md b/Trax.Docs/statemachine/canonical-wire.md
index e11271f5e..d0fb5fd22 100644
--- a/Trax.Docs/statemachine/canonical-wire.md
+++ b/Trax.Docs/statemachine/canonical-wire.md
@@ -5,8 +5,8 @@ type: reference
area: machines
nav_order: 20
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/CanonicalJson.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/StorableJson.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CanonicalJson.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/StorableJson.cs
---
# Canonical wire
diff --git a/Trax.Docs/statemachine/codegen-pipeline.md b/Trax.Docs/statemachine/codegen-pipeline.md
index 5b0dddcb7..dc81e3cf2 100644
--- a/Trax.Docs/statemachine/codegen-pipeline.md
+++ b/Trax.Docs/statemachine/codegen-pipeline.md
@@ -5,9 +5,9 @@ type: explanation
area: machines
nav_order: 2
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/IrExporter.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/CorpusReplay.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Testing
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/IrExporter.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CorpusReplay.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing
---
# The codegen pipeline
diff --git a/Trax.Docs/statemachine/context-schemas.md b/Trax.Docs/statemachine/context-schemas.md
index dccd03093..afb411d13 100644
--- a/Trax.Docs/statemachine/context-schemas.md
+++ b/Trax.Docs/statemachine/context-schemas.md
@@ -5,8 +5,8 @@ type: reference
area: machines
nav_order: 21
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/SchemaReflection.cs
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules/ContextSchema.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/SchemaReflection.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ContextSchema.cs
---
# Context and input schemas
diff --git a/Trax.Docs/statemachine/declarative-authoring.md b/Trax.Docs/statemachine/declarative-authoring.md
index be6808a05..2b48d75c1 100644
--- a/Trax.Docs/statemachine/declarative-authoring.md
+++ b/Trax.Docs/statemachine/declarative-authoring.md
@@ -5,7 +5,7 @@ type: how-to
area: machines
nav_order: 2
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/Rules
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules
---
# Write guards and reducers as data
diff --git a/Trax.Docs/statemachine/generic-mutations.md b/Trax.Docs/statemachine/generic-mutations.md
index d6ffe5150..5b62a4656 100644
--- a/Trax.Docs/statemachine/generic-mutations.md
+++ b/Trax.Docs/statemachine/generic-mutations.md
@@ -5,9 +5,9 @@ type: reference
area: machines
nav_order: 22
source:
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericContracts.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericTrains.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachineOptions.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericContracts.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericTrains.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineOptions.cs
---
# Generic state-machine mutations
diff --git a/Trax.Docs/statemachine/invoked-runs.md b/Trax.Docs/statemachine/invoked-runs.md
index be8b4abdb..ae66ec5dc 100644
--- a/Trax.Docs/statemachine/invoked-runs.md
+++ b/Trax.Docs/statemachine/invoked-runs.md
@@ -5,11 +5,11 @@ type: reference
area: machines
nav_order: 23
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/Invokes.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeDelivery.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeReconciler.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokedRunOutcomes.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokesStartupValidator.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Invokes.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeDelivery.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeReconciler.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedRunOutcomes.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokesStartupValidator.cs
- Trax.Mediator/src/Trax.Mediator/Services/InvokedTrains/InvokedTrainLauncher.cs
---
diff --git a/Trax.Docs/statemachine/invoking-trains.md b/Trax.Docs/statemachine/invoking-trains.md
index baf8e6723..9e247f19a 100644
--- a/Trax.Docs/statemachine/invoking-trains.md
+++ b/Trax.Docs/statemachine/invoking-trains.md
@@ -5,9 +5,9 @@ type: how-to
area: machines
nav_order: 3
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/Invokes.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokedTrainLauncher.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokesStartupValidator.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Invokes.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedTrainLauncher.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokesStartupValidator.cs
---
# Invoke a train from a state
diff --git a/Trax.Docs/statemachine/spawning-child-machines.md b/Trax.Docs/statemachine/spawning-child-machines.md
index 5f946a3c4..375c5e417 100644
--- a/Trax.Docs/statemachine/spawning-child-machines.md
+++ b/Trax.Docs/statemachine/spawning-child-machines.md
@@ -5,9 +5,9 @@ type: how-to
area: machines
nav_order: 4
source:
- - Trax.Effect/src/Trax.Effect.StateMachine/Invokes.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokeOutbox.cs
- - Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SpawnsStartupValidator.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Invokes.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokeOutbox.cs
+ - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SpawnsStartupValidator.cs
---
# Spawn a child machine from a state
diff --git a/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Tests/TestExcerptsNameTheirPagesTests.cs b/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Tests/TestExcerptsNameTheirPagesTests.cs
index 57db7681e..c7c1f9761 100644
--- a/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Tests/TestExcerptsNameTheirPagesTests.cs
+++ b/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Tests/TestExcerptsNameTheirPagesTests.cs
@@ -147,6 +147,7 @@ private static IEnumerable LibraryTestFiles() =>
Directory
.EnumerateDirectories(RepoRoot.Monorepo, "Trax.*")
.Where(folder => Path.GetFileName(folder) is not ("Trax.Samples" or "Trax.Docs"))
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
.Select(folder => Path.Combine(folder, "tests"))
.Where(Directory.Exists)
.SelectMany(tests =>
diff --git a/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Trax.Docs.Snippets.Tests.csproj b/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Trax.Docs.Snippets.Tests.csproj
index 56e11b2a1..ac8e3b8ef 100644
--- a/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Trax.Docs.Snippets.Tests.csproj
+++ b/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Trax.Docs.Snippets.Tests.csproj
@@ -59,9 +59,9 @@
-
-
-
+
+
+
diff --git a/Trax.Docs/tests/Trax.Docs.Tests/Infrastructure/Projects.cs b/Trax.Docs/tests/Trax.Docs.Tests/Infrastructure/Projects.cs
index ad4a30520..9404ef135 100644
--- a/Trax.Docs/tests/Trax.Docs.Tests/Infrastructure/Projects.cs
+++ b/Trax.Docs/tests/Trax.Docs.Tests/Infrastructure/Projects.cs
@@ -54,7 +54,11 @@ private static IReadOnlyDictionary Load()
var baselines = Baselines();
var packages = new Dictionary(StringComparer.Ordinal);
- foreach (var folder in Directory.EnumerateDirectories(RepoRoot.Monorepo, "Trax.*"))
+ foreach (
+ var folder in Directory
+ .EnumerateDirectories(RepoRoot.Monorepo, "Trax.*")
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
+ )
{
var src = Path.Combine(folder, "src");
if (!Directory.Exists(src))
@@ -96,7 +100,11 @@ private static IReadOnlyDictionary Load()
private static Dictionary Baselines()
{
var baselines = new Dictionary(StringComparer.Ordinal);
- foreach (var folder in Directory.EnumerateDirectories(RepoRoot.Monorepo, "Trax.*"))
+ foreach (
+ var folder in Directory
+ .EnumerateDirectories(RepoRoot.Monorepo, "Trax.*")
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
+ )
{
var tests = Path.Combine(folder, "tests");
if (!Directory.Exists(tests))
diff --git a/Trax.Docs/tests/Trax.Docs.Tests/Tests/CodeLinksToDocsResolveTests.cs b/Trax.Docs/tests/Trax.Docs.Tests/Tests/CodeLinksToDocsResolveTests.cs
index 30bc1e4de..3e99447b5 100644
--- a/Trax.Docs/tests/Trax.Docs.Tests/Tests/CodeLinksToDocsResolveTests.cs
+++ b/Trax.Docs/tests/Trax.Docs.Tests/Tests/CodeLinksToDocsResolveTests.cs
@@ -10,7 +10,7 @@ namespace Trax.Docs.Tests.Tests;
/// page they name was renamed, and nothing on the docs side knew they existed. A page that moves
/// claims its old path in redirect_from, which this accepts, as the site does.
///
-/// Scanned: every *.cs under a Trax.*/src/ folder (the packages, the analyzer
+/// Scanned: every *.cs under a Trax.*/src/ or Trax.*/dotnet/src/ folder (the packages, the analyzer
/// included), and under Trax.Samples/samples/ and Trax.Samples/templates/; and every
/// *.ts and *.tsx of the operations console's app, whose help links and empty states
/// send an operator to the docs (each term's glossary entry among them).
@@ -135,6 +135,7 @@ string source
{
var roots = Directory
.EnumerateDirectories(RepoRoot.Monorepo, "Trax.*")
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
.Select(folder => Path.Combine(folder, "src"))
.Append(Path.Combine(RepoRoot.Monorepo, "Trax.Samples", "samples"))
.Append(Path.Combine(RepoRoot.Monorepo, "Trax.Samples", "templates"));
diff --git a/Trax.Docs/tests/Trax.Docs.Tests/Tests/PublicApiIsDocumentedTests.cs b/Trax.Docs/tests/Trax.Docs.Tests/Tests/PublicApiIsDocumentedTests.cs
index 8ab818b21..81ff4d257 100644
--- a/Trax.Docs/tests/Trax.Docs.Tests/Tests/PublicApiIsDocumentedTests.cs
+++ b/Trax.Docs/tests/Trax.Docs.Tests/Tests/PublicApiIsDocumentedTests.cs
@@ -462,7 +462,11 @@ private static HashSet PublishedWords()
private static IEnumerable<(string Assembly, string Path)> Baselines()
{
var monorepo = Directory.GetParent(RepoRoot.Path)!.FullName;
- foreach (var folder in Directory.EnumerateDirectories(monorepo, "Trax.*"))
+ foreach (
+ var folder in Directory
+ .EnumerateDirectories(monorepo, "Trax.*")
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
+ )
{
var tests = Path.Combine(folder, "tests");
if (!Directory.Exists(tests))
diff --git a/Trax.Docs/tests/Trax.Docs.Tests/Tests/SdkReferenceFrontMatterTests.cs b/Trax.Docs/tests/Trax.Docs.Tests/Tests/SdkReferenceFrontMatterTests.cs
index e0fe897cc..b2b89a359 100644
--- a/Trax.Docs/tests/Trax.Docs.Tests/Tests/SdkReferenceFrontMatterTests.cs
+++ b/Trax.Docs/tests/Trax.Docs.Tests/Tests/SdkReferenceFrontMatterTests.cs
@@ -548,7 +548,7 @@ IReadOnlySet npm
wrong.Add(
surface == "typescript"
? $"package {package} is neither a packable project nor an npm package in the repository"
- : $"package {package} is not a packable project (a csproj under a Trax.*/src/ folder)"
+ : $"package {package} is not a packable project (a csproj under a Trax.*/src/ or Trax.*/dotnet/src/ folder)"
);
var namespaces = frontMatter.List("namespace");
diff --git a/Trax.Effect/Trax.Effect.slnx b/Trax.Effect/Trax.Effect.slnx
index d4dd0da67..1d4673bf5 100644
--- a/Trax.Effect/Trax.Effect.slnx
+++ b/Trax.Effect/Trax.Effect.slnx
@@ -9,11 +9,6 @@
-
-
-
-
-
@@ -38,8 +33,5 @@
-
-
-
diff --git a/Trax.Effect/tests/Trax.Effect.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs b/Trax.Effect/tests/Trax.Effect.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
index f4c021f19..5cb9d1792 100644
--- a/Trax.Effect/tests/Trax.Effect.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
+++ b/Trax.Effect/tests/Trax.Effect.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
@@ -46,11 +46,12 @@ public void No_project_references_a_Trax_package_built_in_this_repository()
///
/// The package id of every Trax project in the repository: the file name of each csproj under
- /// a folder's src/.
+ /// a folder's src/, or its dotnet/src/ in a folder that holds more than .NET.
///
private static HashSet TraxProjects() =>
Directory
.EnumerateDirectories(MonorepoRoot.Path, "Trax.*")
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
.Select(folder => Path.Combine(folder, "src"))
.Where(Directory.Exists)
.SelectMany(src =>
diff --git a/Trax.Effect/tests/Trax.Effect.Tests.Meta/Trax.Effect.Tests.Meta.csproj b/Trax.Effect/tests/Trax.Effect.Tests.Meta/Trax.Effect.Tests.Meta.csproj
index 820f1fe86..31a995632 100644
--- a/Trax.Effect/tests/Trax.Effect.Tests.Meta/Trax.Effect.Tests.Meta.csproj
+++ b/Trax.Effect/tests/Trax.Effect.Tests.Meta/Trax.Effect.Tests.Meta.csproj
@@ -35,9 +35,9 @@
-
-
-
+
+
+
diff --git a/Trax.Mediator/src/Trax.Mediator/Trax.Mediator.csproj b/Trax.Mediator/src/Trax.Mediator/Trax.Mediator.csproj
index 6e0762132..c32bc3c65 100644
--- a/Trax.Mediator/src/Trax.Mediator/Trax.Mediator.csproj
+++ b/Trax.Mediator/src/Trax.Mediator/Trax.Mediator.csproj
@@ -24,6 +24,6 @@
-
+
diff --git a/Trax.Mediator/tests/Trax.Mediator.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs b/Trax.Mediator/tests/Trax.Mediator.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
index 75a9d348b..9fc4775db 100644
--- a/Trax.Mediator/tests/Trax.Mediator.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
+++ b/Trax.Mediator/tests/Trax.Mediator.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
@@ -46,11 +46,12 @@ public void No_project_references_a_Trax_package_built_in_this_repository()
///
/// The package id of every Trax project in the repository: the file name of each csproj under
- /// a folder's src/.
+ /// a folder's src/, or its dotnet/src/ in a folder that holds more than .NET.
///
private static HashSet TraxProjects() =>
Directory
.EnumerateDirectories(MonorepoRoot.Path, "Trax.*")
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
.Select(folder => Path.Combine(folder, "src"))
.Where(Directory.Exists)
.SelectMany(src =>
diff --git a/Trax.Mediator/tests/Trax.Mediator.Tests.Meta/Trax.Mediator.Tests.Meta.csproj b/Trax.Mediator/tests/Trax.Mediator.Tests.Meta/Trax.Mediator.Tests.Meta.csproj
index 8323b832a..99b5fe613 100644
--- a/Trax.Mediator/tests/Trax.Mediator.Tests.Meta/Trax.Mediator.Tests.Meta.csproj
+++ b/Trax.Mediator/tests/Trax.Mediator.Tests.Meta/Trax.Mediator.Tests.Meta.csproj
@@ -22,7 +22,7 @@
-
+
diff --git a/Trax.Mediator/tests/Trax.Mediator.Tests.StateMachine.Integration/Trax.Mediator.Tests.StateMachine.Integration.csproj b/Trax.Mediator/tests/Trax.Mediator.Tests.StateMachine.Integration/Trax.Mediator.Tests.StateMachine.Integration.csproj
index 682d9cf33..98b21ecee 100644
--- a/Trax.Mediator/tests/Trax.Mediator.Tests.StateMachine.Integration/Trax.Mediator.Tests.StateMachine.Integration.csproj
+++ b/Trax.Mediator/tests/Trax.Mediator.Tests.StateMachine.Integration/Trax.Mediator.Tests.StateMachine.Integration.csproj
@@ -28,7 +28,7 @@
-
+
diff --git a/Trax.Samples/book/Shopfront/Directory.Build.targets b/Trax.Samples/book/Shopfront/Directory.Build.targets
index 5b772abbd..fffa19e43 100644
--- a/Trax.Samples/book/Shopfront/Directory.Build.targets
+++ b/Trax.Samples/book/Shopfront/Directory.Build.targets
@@ -9,8 +9,8 @@
-->
<_TraxSourceProject
- Include="$(MSBuildThisFileDirectory)../../../Trax.*/src/**/*.csproj"
- Exclude="$(MSBuildThisFileDirectory)../../../Trax.*/src/**/bin/**;$(MSBuildThisFileDirectory)../../../Trax.*/src/**/obj/**"
+ Include="$(MSBuildThisFileDirectory)../../../Trax.*/src/**/*.csproj;$(MSBuildThisFileDirectory)../../../Trax.*/dotnet/src/**/*.csproj"
+ Exclude="$(MSBuildThisFileDirectory)../../../Trax.*/src/**/bin/**;$(MSBuildThisFileDirectory)../../../Trax.*/src/**/obj/**;$(MSBuildThisFileDirectory)../../../Trax.*/dotnet/src/**/bin/**;$(MSBuildThisFileDirectory)../../../Trax.*/dotnet/src/**/obj/**"
ProjectPath="%(FullPath)"
/>
diff --git a/Trax.Samples/samples/Recovery/Trax.Samples.Recovery/Trax.Samples.Recovery.csproj b/Trax.Samples/samples/Recovery/Trax.Samples.Recovery/Trax.Samples.Recovery.csproj
index b0ee2c02a..49a901a29 100644
--- a/Trax.Samples/samples/Recovery/Trax.Samples.Recovery/Trax.Samples.Recovery.csproj
+++ b/Trax.Samples/samples/Recovery/Trax.Samples.Recovery/Trax.Samples.Recovery.csproj
@@ -13,8 +13,8 @@
-
-
+
+
diff --git a/Trax.Samples/samples/StateMachine/Trax.Samples.StateMachine.Api/Trax.Samples.StateMachine.Api.csproj b/Trax.Samples/samples/StateMachine/Trax.Samples.StateMachine.Api/Trax.Samples.StateMachine.Api.csproj
index 46ce929f9..cb0f4edb4 100644
--- a/Trax.Samples/samples/StateMachine/Trax.Samples.StateMachine.Api/Trax.Samples.StateMachine.Api.csproj
+++ b/Trax.Samples/samples/StateMachine/Trax.Samples.StateMachine.Api/Trax.Samples.StateMachine.Api.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/Trax.Samples/samples/StateMachine/Trax.Samples.StateMachine/Trax.Samples.StateMachine.csproj b/Trax.Samples/samples/StateMachine/Trax.Samples.StateMachine/Trax.Samples.StateMachine.csproj
index 4a7af9ff6..bb5f7dba5 100644
--- a/Trax.Samples/samples/StateMachine/Trax.Samples.StateMachine/Trax.Samples.StateMachine.csproj
+++ b/Trax.Samples/samples/StateMachine/Trax.Samples.StateMachine/Trax.Samples.StateMachine.csproj
@@ -7,8 +7,8 @@
-
-
+
+
diff --git a/Trax.Samples/templates/Trax.Samples.Templates.csproj b/Trax.Samples/templates/Trax.Samples.Templates.csproj
index 19e6f11ee..c614fac70 100644
--- a/Trax.Samples/templates/Trax.Samples.Templates.csproj
+++ b/Trax.Samples/templates/Trax.Samples.Templates.csproj
@@ -48,10 +48,10 @@
$([System.String]::Copy('%(RecursiveDir)').Replace('\', '/').Split('/')[0])
-
+
<_TraxPackageProject
- Include="../../Trax.*/src/**/*.csproj"
- Exclude="../../Trax.*/src/**/bin/**;../../Trax.*/src/**/obj/**"
+ Include="../../Trax.*/src/**/*.csproj;../../Trax.*/dotnet/src/**/*.csproj"
+ Exclude="../../Trax.*/src/**/bin/**;../../Trax.*/src/**/obj/**;../../Trax.*/dotnet/src/**/bin/**;../../Trax.*/dotnet/src/**/obj/**"
/>
<_TraxPackageId Include="@(_TraxPackageProject->'%(Filename)')" />
diff --git a/Trax.Samples/templates/content/Directory.Build.targets b/Trax.Samples/templates/content/Directory.Build.targets
index ed0383f5b..b5558984d 100644
--- a/Trax.Samples/templates/content/Directory.Build.targets
+++ b/Trax.Samples/templates/content/Directory.Build.targets
@@ -9,8 +9,8 @@
-->
<_TraxSourceProject
- Include="$(MSBuildThisFileDirectory)../../../Trax.*/src/**/*.csproj"
- Exclude="$(MSBuildThisFileDirectory)../../../Trax.*/src/**/bin/**;$(MSBuildThisFileDirectory)../../../Trax.*/src/**/obj/**"
+ Include="$(MSBuildThisFileDirectory)../../../Trax.*/src/**/*.csproj;$(MSBuildThisFileDirectory)../../../Trax.*/dotnet/src/**/*.csproj"
+ Exclude="$(MSBuildThisFileDirectory)../../../Trax.*/src/**/bin/**;$(MSBuildThisFileDirectory)../../../Trax.*/src/**/obj/**;$(MSBuildThisFileDirectory)../../../Trax.*/dotnet/src/**/bin/**;$(MSBuildThisFileDirectory)../../../Trax.*/dotnet/src/**/obj/**"
ProjectPath="%(FullPath)"
/>
diff --git a/Trax.Samples/tests/Trax.Samples.Templates.Tests/Utils/ScaffoldFeed.cs b/Trax.Samples/tests/Trax.Samples.Templates.Tests/Utils/ScaffoldFeed.cs
index 03b82255c..035cb0d89 100644
--- a/Trax.Samples/tests/Trax.Samples.Templates.Tests/Utils/ScaffoldFeed.cs
+++ b/Trax.Samples/tests/Trax.Samples.Templates.Tests/Utils/ScaffoldFeed.cs
@@ -205,6 +205,7 @@ private static string TraxProject(string id)
var monorepo = Path.GetDirectoryName(RepoRoot())!;
return Directory
.EnumerateDirectories(monorepo, "Trax.*")
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
.Select(folder => Path.Combine(folder, "src", id, id + ".csproj"))
.SingleOrDefault(File.Exists)
?? throw new InvalidOperationException(
diff --git a/Trax.Samples/tests/Trax.Samples.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs b/Trax.Samples/tests/Trax.Samples.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
index a80579839..5ea73cc55 100644
--- a/Trax.Samples/tests/Trax.Samples.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
+++ b/Trax.Samples/tests/Trax.Samples.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
@@ -47,11 +47,12 @@ public void No_project_references_a_Trax_package_built_in_this_repository()
///
/// The package id of every Trax project in the repository: the file name of each csproj under
- /// a folder's src/.
+ /// a folder's src/, or its dotnet/src/ in a folder that holds more than .NET.
///
private static HashSet TraxProjects() =>
Directory
.EnumerateDirectories(MonorepoRoot.Path, "Trax.*")
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
.Select(folder => Path.Combine(folder, "src"))
.Where(Directory.Exists)
.SelectMany(src =>
diff --git a/Trax.Scheduler/tests/Trax.Scheduler.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs b/Trax.Scheduler/tests/Trax.Scheduler.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
index d9c77bc8a..e04e526ea 100644
--- a/Trax.Scheduler/tests/Trax.Scheduler.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
+++ b/Trax.Scheduler/tests/Trax.Scheduler.Tests.Meta/Tests/TraxReferencesAreProjectReferencesTests.cs
@@ -46,11 +46,12 @@ public void No_project_references_a_Trax_package_built_in_this_repository()
///
/// The package id of every Trax project in the repository: the file name of each csproj under
- /// a folder's src/.
+ /// a folder's src/, or its dotnet/src/ in a folder that holds more than .NET.
///
private static HashSet TraxProjects() =>
Directory
.EnumerateDirectories(MonorepoRoot.Path, "Trax.*")
+ .SelectMany(f => new[] { f, Path.Combine(f, "dotnet") })
.Select(folder => Path.Combine(folder, "src"))
.Where(Directory.Exists)
.SelectMany(src =>
diff --git a/Trax.StateMachine/.gitignore b/Trax.StateMachine/.gitignore
new file mode 100644
index 000000000..2eaf8b12e
--- /dev/null
+++ b/Trax.StateMachine/.gitignore
@@ -0,0 +1,151 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# User-specific files
+*.suo
+*.user
+*.sln.docstates
+
+# Build results
+
+[Dd]ebug/
+[Rr]elease/
+x64/
+[Bb]in/
+[Oo]bj/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.log
+*.svclog
+*.scc
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opensdf
+*.sdf
+*.cachefile
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.Publish.xml
+*.pubxml
+*.azurePubxml
+
+# NuGet Packages Directory
+## TODO: If you have NuGet Package Restore enabled, uncomment the next line
+packages/
+## TODO: If the tool you use requires repositories.config, also uncomment the next line
+!packages/repositories.config
+
+# Windows Azure Build Output
+csx/
+*.build.csdef
+
+# Windows Store app package directory
+AppPackages/
+
+# Others
+sql/
+*.Cache
+ClientBin/
+[Ss]tyle[Cc]op.*
+![Ss]tyle[Cc]op.targets
+~$*
+*~
+*.dbmdl
+*.[Pp]ublish.xml
+
+*.publishsettings
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file to a newer
+# Visual Studio version. Backup files are not needed, because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+App_Data/*.mdf
+App_Data/*.ldf
+
+# =========================
+# Windows detritus
+# =========================
+
+# Windows image file caches
+Thumbs.db
+ehthumbs.db
+
+# Folder config file
+Desktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Mac desktop service store files
+.DS_Store
+
+_NCrunch*
+
+*.idea
+
+.vscode/*
+
+# VSCode extension packages
+*.vsix
+
+# BenchmarkDotNet
+BenchmarkDotNet.Artifacts/
+# Semantic Release version file
+.release-version
+
+# Node modules (semantic-release)
+node_modules/
+
+# MSBuild static graph restore cache
+*.csproj.lscache
+
diff --git a/Trax.StateMachine/LICENSE b/Trax.StateMachine/LICENSE
new file mode 100644
index 000000000..7aa0abaed
--- /dev/null
+++ b/Trax.StateMachine/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2026 Theaux Masquelier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Trax.StateMachine/SECURITY.md b/Trax.StateMachine/SECURITY.md
new file mode 100644
index 000000000..07ecba48a
--- /dev/null
+++ b/Trax.StateMachine/SECURITY.md
@@ -0,0 +1,15 @@
+# Security Policy
+
+## Reporting a vulnerability
+
+Report security issues privately through GitHub's [private vulnerability reporting](https://github.com/TraxSharp/Trax/security/advisories/new), not a public issue. We aim to acknowledge within 3 business days.
+
+Where possible, include the affected package and version, a description, reproduction steps or a proof of concept, and the impact.
+
+## Supported versions
+
+Fixes ship against the latest version published to NuGet. Older major versions are not backported.
+
+## Supply-chain posture
+
+Trax builds and publishes through a defense-in-depth pipeline: SHA-pinned actions, isolated release credentials, OIDC trusted publishing with SLSA provenance, and locked + audited dependencies (a known-vulnerability advisory fails the build). See the [Supply Chain Security](https://traxsharp.net/docs/security/supply-chain) guide.
diff --git a/Trax.StateMachine/dotnet/.config/dotnet-tools.json b/Trax.StateMachine/dotnet/.config/dotnet-tools.json
new file mode 100644
index 000000000..83bcc1bc6
--- /dev/null
+++ b/Trax.StateMachine/dotnet/.config/dotnet-tools.json
@@ -0,0 +1,12 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {
+ "csharpier": {
+ "version": "1.3.0",
+ "commands": [
+ "csharpier"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/Trax.StateMachine/dotnet/Directory.Build.props b/Trax.StateMachine/dotnet/Directory.Build.props
new file mode 100644
index 000000000..3af1e1b72
--- /dev/null
+++ b/Trax.StateMachine/dotnet/Directory.Build.props
@@ -0,0 +1,57 @@
+
+
+ 1.99.99
+
+ all
+ $(WarningsAsErrors);NU1901;NU1902;NU1903;NU1904
+
+
+
+
+ true
+
+
+
+
+ Theauxm,mark-keaton
+ MIT
+ https://github.com/TraxSharp/Trax
+ git
+ https://traxsharp.net/docs
+ trax;dotnet;effects;trains;junctions;railway-oriented-programming
+ README.md
+
+
+
+
+
+
+
+
+
+ true
+ 1.63.1
+
+ true
+
+
+
+
+
+
diff --git a/Trax.StateMachine/dotnet/README.md b/Trax.StateMachine/dotnet/README.md
new file mode 100644
index 000000000..c15917744
--- /dev/null
+++ b/Trax.StateMachine/dotnet/README.md
@@ -0,0 +1,73 @@
+# Trax.Effect.StateMachine
+
+[](https://github.com/TraxSharp/Trax/actions/workflows/release.yml?query=branch%3Amain)
+[](https://www.nuget.org/packages/Trax.Effect.StateMachine)
+[](https://app.codecov.io/gh/TraxSharp/Trax?flags%5B0%5D=Trax.StateMachine)
+[](https://github.com/TraxSharp/Trax/blob/main/Trax.StateMachine/LICENSE)
+[](https://traxsharp.net/docs/statemachine)
+
+> Part of [Trax .NET](https://github.com/TraxSharp): business logic you can call, schedule, or serve as an API, with every
+> run recorded in your Postgres. [Docs](https://traxsharp.net/docs) · [Getting started](https://traxsharp.net/docs/getting-started) · [Repository](https://github.com/TraxSharp/Trax)
+
+Trax.Effect.StateMachine is the portable state-machine engine: a multi-step flow's state as language-neutral JSON, with
+each event's guard, reducer and caller rule declared as data. `Trax.Effect.StateMachine.Persistence` stores each
+instance per user, runs a machine's one irreversible effect exactly once, and lets a state invoke a train.
+`@traxsharp/state-machine` on npm runs the same machine in the browser.
+
+## Install
+
+```bash
+dotnet add package Trax.Effect.StateMachine.Persistence
+dotnet add package Trax.Effect.StateMachine.Testing # in a test project
+```
+
+## Example
+
+From [Author and serve a machine](https://traxsharp.net/docs/statemachine/authoring):
+
+```csharp
+[TraxMachine]
+public sealed class CheckoutMachine : Machine
+{
+ protected override void Configure(IMachineBuilder m)
+ {
+ m.Id("checkout").Version(1) /* start, rules on Get, Watch and Discard */;
+
+ m.In(CheckoutState.Review)
+ .Context()
+ .On(CheckoutTrigger.Pay)
+ .AnyAuthenticated()
+ .WithInput()
+ .RunsOnce("checkout:charge")
+ .To(CheckoutState.Paid);
+
+ m.In(CheckoutState.Paid).Context().Committed();
+ }
+}
+
+builder.Services.AddTrax(trax =>
+ trax.AddEffects(effects => effects.UsePostgres(connectionString))
+ .AddStateMachines(typeof(CheckoutMachine).Assembly)
+ .AddMediator(typeof(CheckoutMachine).Assembly));
+```
+
+The server runs `ICharge` once per send and fires `Pay` with its receipt. A client never fires `Pay` itself.
+
+## Where this fits
+
+This folder sits between Trax.Effect, whose trains a machine invokes and whose tables it is stored in, and
+Trax.Mediator, which launches those trains. It holds the C# engine (`dotnet/`), the TypeScript engine (`ts/`) and the
+conformance kit both are checked against (`conformance/`). Docs are at
+[traxsharp.net/docs/statemachine](https://traxsharp.net/docs/statemachine).
+
+## Contributing
+
+Read [AGENTS.md](https://github.com/TraxSharp/Trax/blob/main/Trax.StateMachine/AGENTS.md) before changing code. Report
+vulnerabilities privately as described in [SECURITY.md](https://github.com/TraxSharp/Trax/blob/main/Trax.StateMachine/SECURITY.md).
+
+## License
+
+MIT. There is no commercial edition, and there will not be one.
+
+Trax .NET is an independent open-source project and is not affiliated with the Utah Transit Authority, Trax Retail, or any
+other organization using the Trax name.
diff --git a/Trax.StateMachine/dotnet/Trax.StateMachine.slnx b/Trax.StateMachine/dotnet/Trax.StateMachine.slnx
new file mode 100644
index 000000000..924a61a09
--- /dev/null
+++ b/Trax.StateMachine/dotnet/Trax.StateMachine.slnx
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Actor.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Actor.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Actor.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Actor.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/CallerAuthorization.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/CallerAuthorization.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/CallerAuthorization.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/CallerAuthorization.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/ChangeFeedStartupValidator.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/ChangeFeedStartupValidator.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/ChangeFeedStartupValidator.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/ChangeFeedStartupValidator.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/CompatibilitySuppressions.xml b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/CompatibilitySuppressions.xml
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/CompatibilitySuppressions.xml
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/CompatibilitySuppressions.xml
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/DraftClaimHold.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/DraftClaimHold.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/DraftClaimHold.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/DraftClaimHold.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/DraftSweeper.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/DraftSweeper.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/DraftSweeper.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/DraftSweeper.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/EfSnapshotStore.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/EfSnapshotStore.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/EfSnapshotStore.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/EfSnapshotStore.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/EffectClaimStore.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/EffectClaimStore.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/EffectClaimStore.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/EffectClaimStore.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/ISnapshotChangeListener.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/ISnapshotChangeListener.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/ISnapshotChangeListener.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/ISnapshotChangeListener.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/IdempotentEffect.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/IdempotentEffect.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/IdempotentEffect.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/IdempotentEffect.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokeOutbox.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokeOutbox.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokeOutbox.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokeOutbox.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeDelivery.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeDelivery.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeDelivery.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeDelivery.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeReconciler.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeReconciler.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeReconciler.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeReconciler.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokedRun.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedRun.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokedRun.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedRun.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokedRunCancellation.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedRunCancellation.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokedRunCancellation.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedRunCancellation.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokedRunOutcomes.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedRunOutcomes.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokedRunOutcomes.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedRunOutcomes.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokedTrainLauncher.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedTrainLauncher.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokedTrainLauncher.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedTrainLauncher.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokesStartupValidator.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokesStartupValidator.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/InvokesStartupValidator.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokesStartupValidator.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Machine.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Machine.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Machine.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Machine.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineCensus.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineCensus.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineCensus.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineCensus.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineGraph.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineGraph.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineGraph.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineGraph.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineIdStartupValidator.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineIdStartupValidator.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineIdStartupValidator.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineIdStartupValidator.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineInstanceStore.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineInstanceStore.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineInstanceStore.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineInstanceStore.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineInstances.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineInstances.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineInstances.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineInstances.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineRulesStartupValidator.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineRulesStartupValidator.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineRulesStartupValidator.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineRulesStartupValidator.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineSchemaStartupValidator.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineSchemaStartupValidator.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/MachineSchemaStartupValidator.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineSchemaStartupValidator.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericContracts.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericContracts.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericContracts.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericContracts.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericJunctions.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericJunctions.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericJunctions.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericJunctions.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericMarkers.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericMarkers.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericMarkers.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericMarkers.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericTrains.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericTrains.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericTrains.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericTrains.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Mutations/StateMachineMutations.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/StateMachineMutations.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Mutations/StateMachineMutations.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/StateMachineMutations.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Ports.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Ports.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Ports.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Ports.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/RequestIdRing.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/RequestIdRing.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/RequestIdRing.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/RequestIdRing.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotChangeListener.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotChangeListener.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotChangeListener.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotChangeListener.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotDraftService.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotDraftService.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotDraftService.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotDraftService.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotEffectRunner.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotEffectRunner.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotEffectRunner.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotEffectRunner.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotFingerprint.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotFingerprint.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotFingerprint.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotFingerprint.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotLimits.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotLimits.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotLimits.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotLimits.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotMachineRegistry.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotMachineRegistry.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotMachineRegistry.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotMachineRegistry.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotOwner.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotOwner.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotOwner.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotOwner.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotSelfCheck.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotSelfCheck.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotSelfCheck.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotSelfCheck.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotWatchHub.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotWatchHub.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotWatchHub.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotWatchHub.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotWriteSignal.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotWriteSignal.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SnapshotWriteSignal.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotWriteSignal.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SpawnedEnds.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SpawnedEnds.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SpawnedEnds.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SpawnedEnds.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SpawnsStartupValidator.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SpawnsStartupValidator.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/SpawnsStartupValidator.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SpawnsStartupValidator.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StartDeclarationValidator.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StartDeclarationValidator.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StartDeclarationValidator.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StartDeclarationValidator.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachineInstruments.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineInstruments.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachineInstruments.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineInstruments.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachineOptions.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineOptions.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachineOptions.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineOptions.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachineSelfCheckHealthCheck.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineSelfCheckHealthCheck.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachineSelfCheckHealthCheck.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineSelfCheckHealthCheck.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachinesBuilderExtensions.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachinesBuilderExtensions.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/StateMachinesBuilderExtensions.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachinesBuilderExtensions.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/TimerFireResult.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/TimerFireResult.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/TimerFireResult.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/TimerFireResult.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/TransitionNote.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/TransitionNote.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/TransitionNote.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/TransitionNote.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Trax.Effect.StateMachine.Persistence.csproj b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Trax.Effect.StateMachine.Persistence.csproj
similarity index 94%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Trax.Effect.StateMachine.Persistence.csproj
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Trax.Effect.StateMachine.Persistence.csproj
index 2d8c13f80..22c46862e 100644
--- a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/Trax.Effect.StateMachine.Persistence.csproj
+++ b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Trax.Effect.StateMachine.Persistence.csproj
@@ -10,9 +10,9 @@
-
+
-
+
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Persistence/packages.lock.json b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/packages.lock.json
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Persistence/packages.lock.json
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/packages.lock.json
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Testing/DifferentialCorpus.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/DifferentialCorpus.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Testing/DifferentialCorpus.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/DifferentialCorpus.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Testing/MachineConformance.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/MachineConformance.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Testing/MachineConformance.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/MachineConformance.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Testing/Trax.Effect.StateMachine.Testing.csproj b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/Trax.Effect.StateMachine.Testing.csproj
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Testing/Trax.Effect.StateMachine.Testing.csproj
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/Trax.Effect.StateMachine.Testing.csproj
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine.Testing/packages.lock.json b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/packages.lock.json
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine.Testing/packages.lock.json
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/packages.lock.json
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/CallerRule.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CallerRule.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/CallerRule.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CallerRule.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/CanonicalJson.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CanonicalJson.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/CanonicalJson.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CanonicalJson.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/ClientManifest.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/ClientManifest.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/ClientManifest.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/ClientManifest.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/CompatibilitySuppressions.xml b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CompatibilitySuppressions.xml
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/CompatibilitySuppressions.xml
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CompatibilitySuppressions.xml
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/CorpusReplay.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CorpusReplay.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/CorpusReplay.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CorpusReplay.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Fluent.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Fluent.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Fluent.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Fluent.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Invokes.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Invokes.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Invokes.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Invokes.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/MachineDefinition.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/MachineDefinition.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/MachineDefinition.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/MachineDefinition.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/MachineTrigger.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/MachineTrigger.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/MachineTrigger.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/MachineTrigger.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/RefusalCode.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/RefusalCode.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/RefusalCode.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/RefusalCode.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Results.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Results.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Results.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Results.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Rules/ContextSchema.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ContextSchema.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Rules/ContextSchema.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ContextSchema.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Rules/DeclarativeModel.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/DeclarativeModel.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Rules/DeclarativeModel.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/DeclarativeModel.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Rules/IrExporter.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/IrExporter.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Rules/IrExporter.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/IrExporter.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Rules/MemberPath.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/MemberPath.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Rules/MemberPath.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/MemberPath.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Rules/Reduction.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/Reduction.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Rules/Reduction.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/Reduction.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Rules/ReductionEvaluator.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ReductionEvaluator.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Rules/ReductionEvaluator.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ReductionEvaluator.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Rules/Rule.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/Rule.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Rules/Rule.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/Rule.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Rules/RuleEvaluator.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/RuleEvaluator.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Rules/RuleEvaluator.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/RuleEvaluator.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Rules/Rules.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/Rules.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Rules/Rules.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/Rules.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Rules/SchemaReflection.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/SchemaReflection.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Rules/SchemaReflection.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/SchemaReflection.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Rules/SchemaValidator.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/SchemaValidator.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Rules/SchemaValidator.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/SchemaValidator.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Rules/ValueFormats.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ValueFormats.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Rules/ValueFormats.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ValueFormats.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Snapshot.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Snapshot.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Snapshot.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Snapshot.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/SnapshotMachine.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/SnapshotMachine.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/SnapshotMachine.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/SnapshotMachine.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/StartDeclaration.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/StartDeclaration.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/StartDeclaration.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/StartDeclaration.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/StorableJson.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/StorableJson.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/StorableJson.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/StorableJson.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Timers.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Timers.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Timers.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Timers.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/TransitionDefinition.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/TransitionDefinition.cs
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/TransitionDefinition.cs
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/TransitionDefinition.cs
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/Trax.Effect.StateMachine.csproj b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Trax.Effect.StateMachine.csproj
similarity index 94%
rename from Trax.Effect/src/Trax.Effect.StateMachine/Trax.Effect.StateMachine.csproj
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Trax.Effect.StateMachine.csproj
index c5f0d2561..8545de595 100644
--- a/Trax.Effect/src/Trax.Effect.StateMachine/Trax.Effect.StateMachine.csproj
+++ b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Trax.Effect.StateMachine.csproj
@@ -9,7 +9,7 @@
-
+
diff --git a/Trax.Effect/src/Trax.Effect.StateMachine/packages.lock.json b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/packages.lock.json
similarity index 100%
rename from Trax.Effect/src/Trax.Effect.StateMachine/packages.lock.json
rename to Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/packages.lock.json
diff --git a/Trax.StateMachine/dotnet/tests/Directory.Build.props b/Trax.StateMachine/dotnet/tests/Directory.Build.props
new file mode 100644
index 000000000..a78cd345a
--- /dev/null
+++ b/Trax.StateMachine/dotnet/tests/Directory.Build.props
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Trax.StateMachine/dotnet/tests/RedAttribute.cs b/Trax.StateMachine/dotnet/tests/RedAttribute.cs
new file mode 100644
index 000000000..c5b9e685a
--- /dev/null
+++ b/Trax.StateMachine/dotnet/tests/RedAttribute.cs
@@ -0,0 +1,87 @@
+// Linked into every test project of this folder by tests/Directory.Build.props. Each folder keeps its own
+// identical copy, because a folder never references another folder's tests.
+using NUnit.Framework;
+using NUnit.Framework.Interfaces;
+using NUnit.Framework.Internal;
+using NUnit.Framework.Internal.Commands;
+
+namespace Trax.Testing.Red;
+
+///
+/// Marks a test written before the code it tests: it runs, and its verdict is inverted. A red test that fails or
+/// errors is reported as passed, with the original failure's first line in the message; a red test that passes is
+/// reported as failed, because the code has arrived and the attribute must come off. A skipped, ignored or
+/// inconclusive result is left as it is. The test also carries the category Red and the property
+/// red holding .
+///
+///
+/// NUnit reads a method wrapper from the test method only, so the attribute goes on each test method; it cannot
+/// be put on a fixture. It applies to every case of a [TestCase] or [TestCaseSource] method, and
+/// to an async test once its task has completed.
+///
+/// What the test is waiting for, shown in its result message.
+[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
+internal sealed class RedAttribute(string because) : Attribute, IWrapTestMethod, IApplyToTest
+{
+ /// The category every red test carries.
+ public const string Category = "Red";
+
+ /// The name of the property holding why the test is red.
+ public const string PropertyName = "red";
+
+ /// What the test is waiting for.
+ public string Because { get; } = because;
+
+ ///
+ public void ApplyToTest(Test test)
+ {
+ test.Properties.Add(PropertyNames.Category, Category);
+ test.Properties.Add(PropertyName, Because);
+ }
+
+ ///
+ public TestCommand Wrap(TestCommand command) => new InvertedVerdictCommand(command, Because);
+
+ private sealed class InvertedVerdictCommand(TestCommand inner, string because)
+ : DelegatingTestCommand(inner)
+ {
+ public override TestResult Execute(TestExecutionContext context)
+ {
+ try
+ {
+ context.CurrentResult = innerCommand.Execute(context);
+ }
+ catch (Exception ex)
+ {
+ // The test method's own exception (an assertion included) reaches here: nothing inside the
+ // wrapper records it.
+ context.CurrentResult.RecordException(ex);
+ }
+
+ var result = context.CurrentResult;
+ var state = result.ResultState;
+
+ if (state.Status == TestStatus.Failed && state.Label != ResultState.Cancelled.Label)
+ result.SetResult(
+ ResultState.Success,
+ $"Red as expected ({because}): {FirstLine(result.Message)}"
+ );
+ else if (state.Status == TestStatus.Passed)
+ result.SetResult(
+ ResultState.Failure,
+ $"Passed while marked [Red] ({because}): remove the attribute"
+ );
+
+ return result;
+ }
+
+ private static string FirstLine(string? message)
+ {
+ if (string.IsNullOrWhiteSpace(message))
+ return "(no message)";
+ var trimmed = message.TrimStart();
+ var end = trimmed.IndexOfAny(['\r', '\n']);
+ return end < 0 ? trimmed : trimmed[..end];
+ }
+ }
+}
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/ActorHierarchyTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/ActorHierarchyTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/ActorHierarchyTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/ActorHierarchyTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/AddStateMachinesBuilderTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/AddStateMachinesBuilderTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/AddStateMachinesBuilderTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/AddStateMachinesBuilderTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/ChangeFeedStartupValidatorTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/ChangeFeedStartupValidatorTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/ChangeFeedStartupValidatorTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/ChangeFeedStartupValidatorTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/ChangeFeedSwitchTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/ChangeFeedSwitchTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/ChangeFeedSwitchTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/ChangeFeedSwitchTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/ClientDivergenceMeterTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/ClientDivergenceMeterTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/ClientDivergenceMeterTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/ClientDivergenceMeterTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardEffectTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardEffectTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardEffectTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardEffectTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardRuleTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardRuleTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardRuleTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardRuleTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/DiscardTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftLifetimeTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftLifetimeTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftLifetimeTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftLifetimeTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftMachineScopeTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftMachineScopeTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftMachineScopeTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftMachineScopeTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftWriteRulesTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftWriteRulesTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftWriteRulesTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/DraftWriteRulesTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EfSnapshotStoreTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EfSnapshotStoreTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EfSnapshotStoreTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EfSnapshotStoreTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectAndHandshakeDefectTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectAndHandshakeDefectTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectAndHandshakeDefectTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectAndHandshakeDefectTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectClaimStoreTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectClaimStoreTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectClaimStoreTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectClaimStoreTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectCommitIntegrityTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectCommitIntegrityTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectCommitIntegrityTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectCommitIntegrityTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectPendingTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectPendingTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectPendingTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EffectPendingTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EventAuthorizationTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EventAuthorizationTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EventAuthorizationTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EventAuthorizationTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EventRuleStartupTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EventRuleStartupTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/EventRuleStartupTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/EventRuleStartupTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/BuildMachine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/BuildMachine.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/BuildMachine.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/BuildMachine.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/DeclarativeTurnstileMachine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/DeclarativeTurnstileMachine.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/DeclarativeTurnstileMachine.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/DeclarativeTurnstileMachine.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/Effects.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/Effects.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/Effects.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/Effects.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/FluentMachines.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/FluentMachines.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/FluentMachines.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/FluentMachines.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/PendingEffectMachines.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/PendingEffectMachines.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/PendingEffectMachines.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/PendingEffectMachines.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RecordingLauncher.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RecordingLauncher.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RecordingLauncher.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RecordingLauncher.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RevisionMachines.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RevisionMachines.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RevisionMachines.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RevisionMachines.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RuledMachines.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RuledMachines.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RuledMachines.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/RuledMachines.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/SpawnMachines.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/SpawnMachines.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/SpawnMachines.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/SpawnMachines.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/SystemMachines.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/SystemMachines.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/SystemMachines.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/SystemMachines.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TestOrder.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TestOrder.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TestOrder.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TestOrder.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TestTurnstile.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TestTurnstile.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TestTurnstile.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TestTurnstile.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TimerMachines.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TimerMachines.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TimerMachines.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TimerMachines.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TimerSweepMachines.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TimerSweepMachines.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TimerSweepMachines.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fakes/TimerSweepMachines.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/CheckTraxInvariantsAttribute.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/CheckTraxInvariantsAttribute.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/CheckTraxInvariantsAttribute.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/CheckTraxInvariantsAttribute.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/CountingDataContextFactory.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/CountingDataContextFactory.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/CountingDataContextFactory.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/CountingDataContextFactory.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/InstanceHost.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/InstanceHost.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/InstanceHost.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/InstanceHost.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/Marked.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/Marked.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/Marked.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/Marked.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PausingSnapshotStore.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PausingSnapshotStore.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PausingSnapshotStore.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PausingSnapshotStore.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PendingHarness.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PendingHarness.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PendingHarness.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PendingHarness.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PostgresSetup.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PostgresSetup.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PostgresSetup.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/PostgresSetup.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/RawSql.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/RawSql.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/RawSql.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/RawSql.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/ScratchDatabase.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/ScratchDatabase.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/ScratchDatabase.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/ScratchDatabase.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SkewedDatabaseClock.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SkewedDatabaseClock.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SkewedDatabaseClock.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SkewedDatabaseClock.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SnapshotNotices.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SnapshotNotices.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SnapshotNotices.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SnapshotNotices.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SqliteDb.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SqliteDb.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SqliteDb.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/SqliteDb.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/StartingHost.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/StartingHost.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/StartingHost.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/StartingHost.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/TestDb.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/TestDb.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/TestDb.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/TestDb.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/TestPostgres.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/TestPostgres.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/TestPostgres.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Fixtures/TestPostgres.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/GenericRulesTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/GenericRulesTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/GenericRulesTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/GenericRulesTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/GenericSaveTimerTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/GenericSaveTimerTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/GenericSaveTimerTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/GenericSaveTimerTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/IdempotentEffectTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/IdempotentEffectTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/IdempotentEffectTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/IdempotentEffectTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokeTokenStoreTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokeTokenStoreTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokeTokenStoreTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokeTokenStoreTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokedRunLimitTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokedRunLimitTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokedRunLimitTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokedRunLimitTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokedRunOutputTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokedRunOutputTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokedRunOutputTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokedRunOutputTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokesDraftExpiryTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokesDraftExpiryTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokesDraftExpiryTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokesDraftExpiryTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokesReservedStateTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokesReservedStateTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokesReservedStateTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/InvokesReservedStateTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineCensusTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineCensusTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineCensusTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineCensusTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineConformanceTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineConformanceTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineConformanceTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineConformanceTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineEffectRunnerTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineEffectRunnerTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineEffectRunnerTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineEffectRunnerTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineExportIrTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineExportIrTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineExportIrTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineExportIrTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineInterleavingModelTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineInterleavingModelTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineInterleavingModelTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineInterleavingModelTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineSchemaStartupTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineSchemaStartupTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineSchemaStartupTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineSchemaStartupTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineTrainHookOutputTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineTrainHookOutputTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineTrainHookOutputTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MachineTrainHookOutputTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MarkedMachineTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MarkedMachineTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MarkedMachineTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MarkedMachineTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MigrationSchemaTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MigrationSchemaTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MigrationSchemaTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MigrationSchemaTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MutationErrorMessageTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MutationErrorMessageTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/MutationErrorMessageTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/MutationErrorMessageTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/OrderAutosaveTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/OrderAutosaveTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/OrderAutosaveTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/OrderAutosaveTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/OrderSendTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/OrderSendTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/OrderSendTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/OrderSendTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/PostgresChangeFeedTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/PostgresChangeFeedTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/PostgresChangeFeedTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/PostgresChangeFeedTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RegistryCorruptDataTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RegistryCorruptDataTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RegistryCorruptDataTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RegistryCorruptDataTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RegistryJunctionTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RegistryJunctionTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RegistryJunctionTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RegistryJunctionTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdControlCharacterTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdControlCharacterTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdControlCharacterTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdControlCharacterTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdRingSizeTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdRingSizeTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdRingSizeTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdRingSizeTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdRingTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdRingTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdRingTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdRingTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdScopeTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdScopeTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdScopeTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestIdScopeTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestRetryAfterServerWriteTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestRetryAfterServerWriteTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestRetryAfterServerWriteTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RequestRetryAfterServerWriteTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RevisionTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RevisionTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/RevisionTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/RevisionTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/ServerRecordTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/ServerRecordTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/ServerRecordTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/ServerRecordTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/ServerlessProviderTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/ServerlessProviderTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/ServerlessProviderTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/ServerlessProviderTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotAdvanceGuardTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotAdvanceGuardTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotAdvanceGuardTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotAdvanceGuardTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotChangeListenerTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotChangeListenerTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotChangeListenerTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotChangeListenerTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotChangeNotifyTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotChangeNotifyTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotChangeNotifyTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotChangeNotifyTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftExpiryTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftExpiryTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftExpiryTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftExpiryTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftServiceTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftServiceTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftServiceTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftServiceTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftServiceTimerTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftServiceTimerTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftServiceTimerTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotDraftServiceTimerTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotMutationDefectTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotMutationDefectTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotMutationDefectTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotMutationDefectTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotOwnerKeyTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotOwnerKeyTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotOwnerKeyTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotOwnerKeyTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotSelfCheckTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotSelfCheckTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotSelfCheckTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotSelfCheckTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotStoreDefaultMembersTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotStoreDefaultMembersTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotStoreDefaultMembersTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotStoreDefaultMembersTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotWatchHubTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotWatchHubTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotWatchHubTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SnapshotWatchHubTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SpawnedChildTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SpawnedChildTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SpawnedChildTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SpawnedChildTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SpawnsStartupValidatorTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SpawnsStartupValidatorTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SpawnsStartupValidatorTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SpawnsStartupValidatorTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteRevisionTriggerTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteRevisionTriggerTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteRevisionTriggerTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteRevisionTriggerTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteSnapshotChangePollTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteSnapshotChangePollTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteSnapshotChangePollTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteSnapshotChangePollTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteStoreTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteStoreTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteStoreTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SqliteStoreTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/StartTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/StartTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/StartTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/StartTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/StateMachineSelfCheckHealthCheckTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/StateMachineSelfCheckHealthCheckTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/StateMachineSelfCheckHealthCheckTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/StateMachineSelfCheckHealthCheckTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SystemOwnedInstanceTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SystemOwnedInstanceTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/SystemOwnedInstanceTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/SystemOwnedInstanceTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerDueAtAnswerTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerDueAtAnswerTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerDueAtAnswerTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerDueAtAnswerTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerDueAtTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerDueAtTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerDueAtTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerDueAtTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerFailureClassificationTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerFailureClassificationTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerFailureClassificationTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerFailureClassificationTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerFireConditionTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerFireConditionTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerFireConditionTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerFireConditionTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerSweepIsolationTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerSweepIsolationTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerSweepIsolationTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TimerSweepIsolationTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TransitionHistoryTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TransitionHistoryTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TransitionHistoryTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TransitionHistoryTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Trax.Effect.StateMachine.Persistence.Integration.csproj b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Trax.Effect.StateMachine.Persistence.Integration.csproj
similarity index 79%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Trax.Effect.StateMachine.Persistence.Integration.csproj
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Trax.Effect.StateMachine.Persistence.Integration.csproj
index 6bcfaa0d7..584007a4a 100644
--- a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/Trax.Effect.StateMachine.Persistence.Integration.csproj
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/Trax.Effect.StateMachine.Persistence.Integration.csproj
@@ -33,15 +33,15 @@
-
+
-
+
-
-
+
+
-
+
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TriggerInputValidationPathTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TriggerInputValidationPathTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/TriggerInputValidationPathTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/TriggerInputValidationPathTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/packages.lock.json b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/packages.lock.json
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Persistence.Integration/packages.lock.json
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration/packages.lock.json
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/Fakes/CountingCharge.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/Fakes/CountingCharge.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/Fakes/CountingCharge.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/Fakes/CountingCharge.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/Fakes/StressOrder.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/Fakes/StressOrder.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/Fakes/StressOrder.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/Fakes/StressOrder.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/StressFixture.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/StressFixture.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/StressFixture.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/StressFixture.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/StressProfile.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/StressProfile.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/StressProfile.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/StressProfile.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/TestPostgres.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/TestPostgres.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/TestPostgres.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/Fixtures/TestPostgres.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ClaimContentionStressTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ClaimContentionStressTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ClaimContentionStressTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ClaimContentionStressTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ExactlyOnceStressTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ExactlyOnceStressTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ExactlyOnceStressTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ExactlyOnceStressTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/RevisionStoreModelTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/RevisionStoreModelTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/RevisionStoreModelTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/RevisionStoreModelTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ThroughputStressTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ThroughputStressTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ThroughputStressTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/IntegrationTests/ThroughputStressTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/StressDb.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/StressDb.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/StressDb.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/StressDb.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/Trax.Effect.StateMachine.Tests.Stress.csproj b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/Trax.Effect.StateMachine.Tests.Stress.csproj
similarity index 91%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/Trax.Effect.StateMachine.Tests.Stress.csproj
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/Trax.Effect.StateMachine.Tests.Stress.csproj
index b863dfa5a..957e43b74 100644
--- a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/Trax.Effect.StateMachine.Tests.Stress.csproj
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/Trax.Effect.StateMachine.Tests.Stress.csproj
@@ -29,6 +29,6 @@
-
+
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/packages.lock.json b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/packages.lock.json
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests.Stress/packages.lock.json
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests.Stress/packages.lock.json
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/CheckoutConformanceTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/CheckoutConformanceTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/CheckoutConformanceTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/CheckoutConformanceTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceRunnerTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceRunnerTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceRunnerTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceRunnerTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/FixturePathsTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/FixturePathsTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/FixturePathsTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/FixturePathsTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/FluentCheckoutTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/FluentCheckoutTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/FluentCheckoutTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/FluentCheckoutTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/IrFormatParityTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/IrFormatParityTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/IrFormatParityTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/IrFormatParityTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/IrSchemaTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/IrSchemaTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/IrSchemaTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/IrSchemaTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/MigrationGoldenTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/MigrationGoldenTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/MigrationGoldenTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/MigrationGoldenTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/RefusalCodeParityTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/RefusalCodeParityTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/RefusalCodeParityTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/RefusalCodeParityTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/StrictInputGoldenTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/StrictInputGoldenTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Conformance/StrictInputGoldenTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/StrictInputGoldenTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Differential/DeclarativeTurnstileTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/DeclarativeTurnstileTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Differential/DeclarativeTurnstileTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/DeclarativeTurnstileTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Differential/DifferentialConformanceTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/DifferentialConformanceTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Differential/DifferentialConformanceTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/DifferentialConformanceTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Differential/DifferentialCorpusReplayTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/DifferentialCorpusReplayTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Differential/DifferentialCorpusReplayTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/DifferentialCorpusReplayTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Differential/StrictInputParityTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/StrictInputParityTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Differential/StrictInputParityTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/StrictInputParityTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Differential/TwinSequenceParityTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/TwinSequenceParityTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Differential/TwinSequenceParityTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/TwinSequenceParityTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/ConfiguredMachine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/ConfiguredMachine.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/ConfiguredMachine.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/ConfiguredMachine.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/DeclarativeCheckout.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/DeclarativeCheckout.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/DeclarativeCheckout.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/DeclarativeCheckout.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/DeclarativeTurnstile.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/DeclarativeTurnstile.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/DeclarativeTurnstile.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/DeclarativeTurnstile.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/FaultyMachine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/FaultyMachine.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/FaultyMachine.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/FaultyMachine.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/FluentCheckout.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/FluentCheckout.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/FluentCheckout.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/FluentCheckout.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/GaugeMachine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/GaugeMachine.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/GaugeMachine.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/GaugeMachine.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestContracts.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestContracts.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestContracts.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestContracts.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestMachine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestMachine.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestMachine.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestMachine.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/RangeMachine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/RangeMachine.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/RangeMachine.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/RangeMachine.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/ReminderMachine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/ReminderMachine.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/ReminderMachine.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/ReminderMachine.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/RichExportMachine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/RichExportMachine.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/RichExportMachine.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/RichExportMachine.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/StrictInputMachine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/StrictInputMachine.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/StrictInputMachine.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/StrictInputMachine.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/TestCheckout.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/TestCheckout.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/TestCheckout.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/TestCheckout.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/TestTurnstile.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/TestTurnstile.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/TestTurnstile.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/TestTurnstile.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/TestTurnstileV2.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/TestTurnstileV2.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/TestTurnstileV2.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/TestTurnstileV2.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/WaitMachine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/WaitMachine.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Fakes/WaitMachine.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/WaitMachine.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Helpers/ConformanceTestee.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/ConformanceTestee.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Helpers/ConformanceTestee.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/ConformanceTestee.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Helpers/FixturePaths.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/FixturePaths.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Helpers/FixturePaths.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/FixturePaths.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Helpers/TwinEngine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/TwinEngine.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Helpers/TwinEngine.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/TwinEngine.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Helpers/TypedSurfaceJson.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/TypedSurfaceJson.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Helpers/TypedSurfaceJson.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/TypedSurfaceJson.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Trax.Effect.StateMachine.Tests.csproj b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Trax.Effect.StateMachine.Tests.csproj
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/Trax.Effect.StateMachine.Tests.csproj
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Trax.Effect.StateMachine.Tests.csproj
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/AdvanceTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/AdvanceTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/AdvanceTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/AdvanceTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/CanonicalizationConformanceTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/CanonicalizationConformanceTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/CanonicalizationConformanceTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/CanonicalizationConformanceTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/ClientManifestTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/ClientManifestTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/ClientManifestTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/ClientManifestTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/ComparisonRefusalTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/ComparisonRefusalTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/ComparisonRefusalTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/ComparisonRefusalTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/DeclarativeAuthoringDefectTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/DeclarativeAuthoringDefectTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/DeclarativeAuthoringDefectTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/DeclarativeAuthoringDefectTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/DifferentialAuthoringTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/DifferentialAuthoringTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/DifferentialAuthoringTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/DifferentialAuthoringTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/DifferentialBuilderTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/DifferentialBuilderTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/DifferentialBuilderTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/DifferentialBuilderTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineContractTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineContractTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineContractTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineContractTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineDefensiveTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineDefensiveTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineDefensiveTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineDefensiveTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineParityDefectTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineParityDefectTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineParityDefectTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/EngineParityDefectTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/EventWriteRuleTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/EventWriteRuleTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/EventWriteRuleTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/EventWriteRuleTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/IntrospectionTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/IntrospectionTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/IntrospectionTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/IntrospectionTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/InvokesDeclarationTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/InvokesDeclarationTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/InvokesDeclarationTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/InvokesDeclarationTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/IrExporterTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/IrExporterTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/IrExporterTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/IrExporterTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/MachineBuilderTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/MachineBuilderTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/MachineBuilderTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/MachineBuilderTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/MachineInstanceIdTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/MachineInstanceIdTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/MachineInstanceIdTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/MachineInstanceIdTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/MigrationTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/MigrationTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/MigrationTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/MigrationTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/ReductionEvaluatorTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/ReductionEvaluatorTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/ReductionEvaluatorTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/ReductionEvaluatorTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/RefusalPrecedenceTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/RefusalPrecedenceTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/RefusalPrecedenceTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/RefusalPrecedenceTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/RehydrateTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/RehydrateTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/RehydrateTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/RehydrateTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/RuleEvaluatorTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/RuleEvaluatorTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/RuleEvaluatorTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/RuleEvaluatorTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/RulesTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/RulesTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/RulesTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/RulesTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/RulesVocabularyTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/RulesVocabularyTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/RulesVocabularyTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/RulesVocabularyTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaFormatTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaFormatTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaFormatTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaFormatTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaStrictnessTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaStrictnessTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaStrictnessTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaStrictnessTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaValidatorTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaValidatorTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaValidatorTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/SchemaValidatorTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/SerializationRoundTripTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/SerializationRoundTripTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/SerializationRoundTripTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/SerializationRoundTripTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/SpawnDeclarationTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/SpawnDeclarationTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/SpawnDeclarationTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/SpawnDeclarationTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/StateInvariantTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/StateInvariantTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/StateInvariantTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/StateInvariantTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/StorableJsonTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/StorableJsonTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/StorableJsonTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/StorableJsonTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/TimerDeclarationTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TimerDeclarationTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/TimerDeclarationTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TimerDeclarationTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/TotalityTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TotalityTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/TotalityTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TotalityTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputPropertyTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputPropertyTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputPropertyTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputPropertyTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputValidationTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputValidationTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputValidationTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputValidationTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerMetadataTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerMetadataTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerMetadataTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerMetadataTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/TypedSchemaTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TypedSchemaTests.cs
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/UnitTests/TypedSchemaTests.cs
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TypedSchemaTests.cs
diff --git a/Trax.Effect/tests/Trax.Effect.StateMachine.Tests/packages.lock.json b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/packages.lock.json
similarity index 100%
rename from Trax.Effect/tests/Trax.Effect.StateMachine.Tests/packages.lock.json
rename to Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/packages.lock.json
From 4e1428777dcb3a7fa4d82ce71436b7df7e02ff2f Mon Sep 17 00:00:00 2001
From: Theauxm <43664045+Theauxm@users.noreply.github.com>
Date: Tue, 20 Oct 2026 10:52:22 -0600
Subject: [PATCH 2/6] refactor(machines): move the TypeScript engine to ts/ and
the kit to conformance/
Trax.Api.StateMachine becomes Trax.StateMachine/ts; @traxsharp/state-machine
keeps its name. The conformance kit, the shared machines/ corpus and the
runner (run.mjs, kit.mjs, node builtins only) move to
Trax.StateMachine/conformance, beside the engines rather than inside one.
The C# tests that run or read the TypeScript engine are marked CrossEngine,
so CI can run them apart from the C#-only suite.
---
.github/ci/packages.json | 13 ++++----
.github/dependabot.yml | 2 +-
.github/release/release-workflow.test.mjs | 4 +--
.github/workflows/ci.yml | 30 +++++++++----------
.github/workflows/release.yml | 10 +++----
Trax.Cli/AGENTS.md | 2 +-
.../src/Trax.Cli/Clients/ClientGenerator.cs | 2 +-
.../src/Trax.Cli/Machines/MachineGenerator.cs | 2 +-
Trax.Cli/src/Trax.Cli/Trax.Cli.csproj | 2 +-
.../Fakes/DeclarativeIngestMachine.cs | 2 +-
.../Fakes/DeclarativeTurnstileMachine.cs | 2 +-
.../MachineGenerateFromPackedToolTests.cs | 10 +++----
.../MachineGeneratorNodeTests.cs | 11 +++----
.../IntegrationTests/NodePrerequisite.cs | 2 +-
.../UnitTests/ClientGeneratorTests.cs | 4 +--
...and-the-server-applies-every-transition.md | 4 +--
Trax.Docs/contributing/test-conventions.md | 2 +-
Trax.Docs/samples/recovery/state-machines.md | 2 +-
Trax.Docs/samples/recovery/tests.md | 2 +-
.../statemachine-api/ir-format.md | 2 +-
.../statemachine-api/migrations.md | 2 +-
.../statemachine-api/result-codes.md | 2 +-
.../statemachine-api/typescript-package.md | 10 +++----
.../Tests/SdkReferenceFrontMatterTests.cs | 2 +-
.../TypeScriptExportsAreDocumentedTests.cs | 5 ++--
Trax.Samples/AGENTS.md | 4 +--
Trax.Samples/samples/Recovery/README.md | 6 ++--
.../tsconfig.json | 6 ++--
.../vite.config.ts | 2 +-
.../samples/StateMachine/web/tsconfig.json | 6 ++--
.../samples/StateMachine/web/vite.config.ts | 2 +-
.../Fixtures/RecoveryClientBuild.cs | 7 +++--
.../conformance/PROTOCOL.md | 10 +++++--
.../conformance/canonical-wire.json | 0
.../conformance/ir.schema.json | 0
.../conformance/kit.mjs | 5 ++--
.../machines/checkout/checkout.ir.json | 0
.../machines/checkout/differential.json | 0
.../advance/01-cart-next-reviews.json | 0
.../02-cart-next-empty-guard-failed.json | 0
.../fixtures/advance/03-review-pay-pays.json | 0
...4-review-pay-no-receipt-invalid-input.json | 0
.../advance/05-review-back-to-cart.json | 0
.../advance/06-paid-restart-fresh.json | 0
.../fixtures/advance/pay-missing-input.json | 0
.../advance/pay-number-as-string.json | 0
.../fixtures/advance/pay-proto-key.json | 0
.../fixtures/advance/pay-unknown-field.json | 0
.../fixtures/rehydrate/01-valid-cart.json | 0
.../fixtures/rehydrate/02-valid-review.json | 0
.../fixtures/rehydrate/03-valid-paid.json | 0
.../rehydrate/04-invalid-paid-no-receipt.json | 0
.../05-invalid-review-empty-items.json | 0
.../rehydrate/06-version-mismatch.json | 0
.../fixtures/rehydrate/07-unknown-state.json | 0
.../machines/checkout/structure.json | 0
.../machines/checkout/wire-handoff.json | 0
.../machines/gauge/differential.json | 0
.../conformance}/machines/gauge/gauge.ir.json | 0
.../machines/ingest/differential.json | 0
.../machines/ingest/ingest.ir.json | 0
.../machines/reminder/differential.json | 0
.../machines/reminder/reminder.ir.json | 0
.../machines/turnstile/differential.json | 0
.../01-locked-coin-quarter-unlocks.json | 0
.../02-locked-coin-dollar-unlocks.json | 0
.../03-locked-coin-penny-guard-failed.json | 0
.../advance/04-locked-push-no-transition.json | 0
.../05-unlocked-coin-no-transition.json | 0
.../06-unlocked-push-locks-and-clears.json | 0
.../fixtures/advance/coin-missing-input.json | 0
.../advance/coin-number-as-string.json | 0
.../fixtures/advance/coin-proto-key.json | 0
.../fixtures/advance/coin-unknown-field.json | 0
.../fixtures/rehydrate/01-valid-locked.json | 0
.../fixtures/rehydrate/02-valid-unlocked.json | 0
.../fixtures/rehydrate/03-malformed.json | 0
.../rehydrate/04-unknown-machine.json | 0
.../rehydrate/05-version-mismatch.json | 0
.../fixtures/rehydrate/06-unknown-state.json | 0
.../rehydrate/07-invalid-context-missing.json | 0
.../08-invalid-context-forbidden.json | 0
.../machines/turnstile/migration.json | 0
.../machines/turnstile/structure.json | 0
.../machines/turnstile/turnstile.ir.json | 0
.../machines/turnstile/wire-handoff.json | 0
.../conformance/refusal-codes.json | 0
.../conformance/run.mjs | 2 +-
.../conformance/strict-input/cases.json | 0
.../conformance/strict-input/strict.ir.json | 0
.../Rules/IrExporter.cs | 2 +-
.../Conformance/ConformanceRunnerTests.cs | 3 +-
.../Conformance/FixturePathsTests.cs | 4 +--
.../Conformance/IrFormatParityTests.cs | 5 ++--
.../Conformance/IrSchemaTests.cs | 1 +
.../Differential/StrictInputParityTests.cs | 1 +
.../Differential/TwinSequenceParityTests.cs | 7 +++--
.../Fakes/IngestMachine.cs | 2 +-
.../Helpers/Categories.cs | 12 ++++++++
.../Helpers/ConformanceTestee.cs | 2 +-
.../Helpers/FixturePaths.cs | 18 +++++++----
.../Helpers/TwinEngine.cs | 18 +++++------
.../UnitTests/TriggerInputPropertyTests.cs | 1 +
.../ts}/.gitignore | 0
.../ts}/.prettierignore | 0
.../ts}/AGENTS.md | 0
.../ts}/README.md | 2 +-
.../ts}/docs/design/phase0-codegen-scope.md | 0
.../ts}/docs/design/tier1-machine-codegen.md | 0
.../ts}/package-lock.json | 0
.../ts}/package.json | 4 +--
.../src/__snapshots__/exports.test.ts.snap | 0
.../src/canonicalization.conformance.test.ts | 0
.../ts}/src/client/client.test.ts | 0
.../ts}/src/client/draftSession.ts | 0
.../ts}/src/client/index.ts | 0
.../ts}/src/client/machineServer.test.ts | 0
.../ts}/src/client/machineServer.ts | 0
.../ts}/src/client/machines.test.ts | 0
.../ts}/src/client/machines.ts | 0
.../ts}/src/client/transport.ts | 0
.../ts}/src/clientFormat.test.ts | 0
.../ts}/src/clientFormat.ts | 0
.../ts}/src/controller.ts | 0
.../ts}/src/dependencies.test.ts | 0
.../ts}/src/devtools.test.ts | 0
.../ts}/src/devtools.ts | 0
.../ts}/src/differential.entrypoints.test.ts | 0
.../ts}/src/differential.enumerate.test.ts | 0
.../ts}/src/differential.test.ts | 0
.../ts}/src/differential.timers.test.ts | 0
.../ts}/src/differential.ts | 0
.../ts}/src/duration.ts | 0
.../ts}/src/exports.test.ts | 0
.../ts}/src/fixtures.ts | 15 ++++------
.../ts}/src/formView.test.ts | 0
.../ts}/src/formView.ts | 0
.../ts}/src/index.ts | 0
.../ts}/src/irSchema.conformance.test.ts | 0
.../ts}/src/machine.contract.test.ts | 0
.../ts}/src/machine.inputTotality.test.ts | 0
.../ts}/src/machine.totality.test.ts | 0
.../ts}/src/machine.ts | 0
.../machines/checkout/checkout.contexts.g.ts | 0
.../machines/checkout/checkout.machine.g.ts | 0
.../ts}/src/machines/checkout/checkout.ts | 0
.../src/machines/checkout/conformance.test.ts | 0
.../src/machines/checkout/roundtrip.test.ts | 0
.../src/machines/gauge/gauge.contexts.g.ts | 0
.../ts}/src/machines/gauge/gauge.machine.g.ts | 0
.../ts}/src/machines/gauge/gauge.ts | 0
.../src/machines/ingest/ingest.contexts.g.ts | 0
.../src/machines/ingest/ingest.machine.g.ts | 0
.../ts}/src/machines/ingest/ingest.ts | 0
.../ts}/src/machines/ingest/outcomes.test.ts | 0
.../machines/reminder/reminder.contexts.g.ts | 0
.../machines/reminder/reminder.machine.g.ts | 0
.../ts}/src/machines/reminder/reminder.ts | 0
.../ts}/src/machines/reminder/timers.test.ts | 0
.../machines/turnstile/conformance.test.ts | 0
.../src/machines/turnstile/controller.test.ts | 0
.../src/machines/turnstile/migration.test.ts | 0
.../src/machines/turnstile/roundtrip.test.ts | 0
.../src/machines/turnstile/totality.test.ts | 0
.../turnstile/turnstile.contexts.g.ts | 0
.../machines/turnstile/turnstile.machine.g.ts | 0
.../ts}/src/machines/turnstile/turnstile.ts | 0
.../ts}/src/machines/turnstile/typed.test.ts | 0
.../ts}/src/problem.test.ts | 0
.../ts}/src/problem.ts | 0
.../ts}/src/react.ts | 0
.../ts}/src/refusalCodes.conformance.test.ts | 0
.../ts}/src/results.ts | 0
.../ts}/src/rules/formats.test.ts | 0
.../ts}/src/rules/formats.ts | 0
.../ts}/src/rules/generateTypes.test.ts | 0
.../ts}/src/rules/generateTypes.ts | 0
.../ts}/src/rules/interpreter.input.test.ts | 0
.../ts}/src/rules/interpreter.test.ts | 0
.../ts}/src/rules/interpreter.ts | 0
.../ts}/src/rules/irFormat.test.ts | 0
.../ts}/src/rules/irFormat.ts | 0
.../ts}/src/rules/irMachine.test.ts | 0
.../ts}/src/rules/irMachine.ts | 0
.../ts}/src/rules/schemaStrictness.test.ts | 0
.../ts}/src/rules/testing/rangeMachine.ts | 0
.../ts}/src/server/serverController.test.ts | 0
.../ts}/src/server/serverController.ts | 0
.../server/testing/FakeMachineServer.test.ts | 0
.../src/server/testing/FakeMachineServer.ts | 0
.../src/server/useRememberedMachine.test.tsx | 0
.../ts}/src/server/useRememberedMachine.ts | 0
.../ts}/src/server/useServerMachine.test.tsx | 0
.../ts}/src/server/useServerMachine.ts | 0
.../ts}/src/strictInput.conformance.test.ts | 0
.../ts}/src/typed.snapshot.test.ts | 0
.../ts}/src/typed.ts | 0
.../ts}/src/types.ts | 0
.../ts}/tools/bundle-cli.mjs | 0
.../ts}/tools/codegen.test.mjs | 12 ++++----
.../ts}/tools/conformance/ir-schema.mjs | 4 +--
.../ts}/tools/conformance/run.test.mjs | 7 +++--
.../ts}/tools/conformance/testee-ts.mjs | 0
.../ts}/tools/generate-corpus.mjs | 0
.../ts}/tools/generate-twin.mjs | 0
.../ts}/tools/lib/args.mjs | 0
.../ts}/tools/lib/engine-bundled.mjs | 0
.../ts}/tools/lib/engine-loader.mjs | 0
.../ts}/tools/replay-sequences.mjs | 0
.../ts}/tsconfig.json | 0
.../ts}/tsup.config.ts | 0
.../ts}/vitest.config.ts | 0
212 files changed, 164 insertions(+), 137 deletions(-)
rename {Trax.Api.StateMachine => Trax.StateMachine}/conformance/PROTOCOL.md (90%)
rename {Trax.Api.StateMachine => Trax.StateMachine}/conformance/canonical-wire.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine}/conformance/ir.schema.json (100%)
rename {Trax.Api.StateMachine/tools => Trax.StateMachine}/conformance/kit.mjs (97%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/checkout.ir.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/differential.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/advance/01-cart-next-reviews.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/advance/02-cart-next-empty-guard-failed.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/advance/03-review-pay-pays.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/advance/04-review-pay-no-receipt-invalid-input.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/advance/05-review-back-to-cart.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/advance/06-paid-restart-fresh.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/advance/pay-missing-input.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/advance/pay-number-as-string.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/advance/pay-proto-key.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/advance/pay-unknown-field.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/rehydrate/01-valid-cart.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/rehydrate/02-valid-review.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/rehydrate/03-valid-paid.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/rehydrate/04-invalid-paid-no-receipt.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/rehydrate/05-invalid-review-empty-items.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/rehydrate/06-version-mismatch.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/fixtures/rehydrate/07-unknown-state.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/structure.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/checkout/wire-handoff.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/gauge/differential.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/gauge/gauge.ir.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/ingest/differential.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/ingest/ingest.ir.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/reminder/differential.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/reminder/reminder.ir.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/differential.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/advance/01-locked-coin-quarter-unlocks.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/advance/02-locked-coin-dollar-unlocks.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/advance/03-locked-coin-penny-guard-failed.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/advance/04-locked-push-no-transition.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/advance/05-unlocked-coin-no-transition.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/advance/06-unlocked-push-locks-and-clears.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/advance/coin-missing-input.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/advance/coin-number-as-string.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/advance/coin-proto-key.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/advance/coin-unknown-field.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/rehydrate/01-valid-locked.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/rehydrate/02-valid-unlocked.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/rehydrate/03-malformed.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/rehydrate/04-unknown-machine.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/rehydrate/05-version-mismatch.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/rehydrate/06-unknown-state.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/rehydrate/07-invalid-context-missing.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/fixtures/rehydrate/08-invalid-context-forbidden.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/migration.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/structure.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/turnstile.ir.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/conformance}/machines/turnstile/wire-handoff.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine}/conformance/refusal-codes.json (100%)
rename {Trax.Api.StateMachine/tools => Trax.StateMachine}/conformance/run.mjs (97%)
rename {Trax.Api.StateMachine => Trax.StateMachine}/conformance/strict-input/cases.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine}/conformance/strict-input/strict.ir.json (100%)
create mode 100644 Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/Categories.cs
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/.gitignore (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/.prettierignore (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/AGENTS.md (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/README.md (98%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/docs/design/phase0-codegen-scope.md (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/docs/design/tier1-machine-codegen.md (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/package-lock.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/package.json (96%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/__snapshots__/exports.test.ts.snap (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/canonicalization.conformance.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/client/client.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/client/draftSession.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/client/index.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/client/machineServer.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/client/machineServer.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/client/machines.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/client/machines.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/client/transport.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/clientFormat.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/clientFormat.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/controller.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/dependencies.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/devtools.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/devtools.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/differential.entrypoints.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/differential.enumerate.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/differential.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/differential.timers.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/differential.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/duration.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/exports.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/fixtures.ts (84%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/formView.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/formView.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/index.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/irSchema.conformance.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machine.contract.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machine.inputTotality.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machine.totality.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machine.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/checkout/checkout.contexts.g.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/checkout/checkout.machine.g.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/checkout/checkout.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/checkout/conformance.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/checkout/roundtrip.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/gauge/gauge.contexts.g.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/gauge/gauge.machine.g.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/gauge/gauge.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/ingest/ingest.contexts.g.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/ingest/ingest.machine.g.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/ingest/ingest.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/ingest/outcomes.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/reminder/reminder.contexts.g.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/reminder/reminder.machine.g.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/reminder/reminder.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/reminder/timers.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/turnstile/conformance.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/turnstile/controller.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/turnstile/migration.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/turnstile/roundtrip.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/turnstile/totality.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/turnstile/turnstile.contexts.g.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/turnstile/turnstile.machine.g.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/turnstile/turnstile.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/machines/turnstile/typed.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/problem.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/problem.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/react.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/refusalCodes.conformance.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/results.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/rules/formats.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/rules/formats.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/rules/generateTypes.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/rules/generateTypes.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/rules/interpreter.input.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/rules/interpreter.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/rules/interpreter.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/rules/irFormat.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/rules/irFormat.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/rules/irMachine.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/rules/irMachine.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/rules/schemaStrictness.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/rules/testing/rangeMachine.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/server/serverController.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/server/serverController.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/server/testing/FakeMachineServer.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/server/testing/FakeMachineServer.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/server/useRememberedMachine.test.tsx (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/server/useRememberedMachine.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/server/useServerMachine.test.tsx (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/server/useServerMachine.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/strictInput.conformance.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/typed.snapshot.test.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/typed.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/src/types.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/tools/bundle-cli.mjs (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/tools/codegen.test.mjs (97%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/tools/conformance/ir-schema.mjs (92%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/tools/conformance/run.test.mjs (90%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/tools/conformance/testee-ts.mjs (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/tools/generate-corpus.mjs (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/tools/generate-twin.mjs (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/tools/lib/args.mjs (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/tools/lib/engine-bundled.mjs (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/tools/lib/engine-loader.mjs (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/tools/replay-sequences.mjs (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/tsconfig.json (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/tsup.config.ts (100%)
rename {Trax.Api.StateMachine => Trax.StateMachine/ts}/vitest.config.ts (100%)
diff --git a/.github/ci/packages.json b/.github/ci/packages.json
index e4be84971..83a5fdc52 100644
--- a/.github/ci/packages.json
+++ b/.github/ci/packages.json
@@ -1,5 +1,5 @@
{
- "_comment": "One entry per folder CI builds. 'upstream' names the folders whose change can break this one; the change detector runs a folder when it or anything upstream of it changes. 'dotnet' configures the .NET job (absent for a folder with no .NET build; 'release-pack' names the one project a release packs instead of the solution; 'state-machine' installs Trax.Api.StateMachine's npm packages first, for tests that run its generators under node; 'playwright' installs chromium, and the npm packages of Trax.Api.StateMachine and the Recovery page, which the browser tests build, Trax.Docs/adr/0049; 'api-dashboard' installs the npm packages of Trax.Api.Dashboard's React app before the build, which compiles it into the package); 'adr' configures the ADR guard over that folder's corpus. 'suites' are test projects carved out of a folder into a job of their own: one runs when anything in its 'upstream' (closed over like a folder's) or under one of its 'paths' changed, its folder's own job leaves it out with that row's 'test-args' filter, and its 'dotnet' takes the same keys as a folder's, with 'chromium' to install the browser, 'postgres-user'/'postgres-password' and 'rabbitmq-user'/'rabbitmq-password' for services that log in as someone other than trax, and 'web' for an npm folder (relative to the folder) whose tests and build run after the .NET tests.",
+ "_comment": "One entry per folder CI builds. 'upstream' names the folders whose change can break this one; the change detector runs a folder when it or anything upstream of it changes. 'dotnet' configures the .NET job (absent for a folder with no .NET build; 'release-pack' names the one project a release packs instead of the solution; 'state-machine' installs the npm packages of Trax.StateMachine/ts, the TypeScript engine, first, for tests that run its generators under node; 'playwright' installs chromium, and the npm packages of Trax.StateMachine/ts and the Recovery page, which the browser tests build, Trax.Docs/adr/0049; 'api-dashboard' installs the npm packages of Trax.Api.Dashboard's React app before the build, which compiles it into the package); 'adr' configures the ADR guard over that folder's corpus. 'suites' are test projects carved out of a folder into a job of their own: one runs when anything in its 'upstream' (closed over like a folder's) or under one of its 'paths' changed, its folder's own job leaves it out with that row's 'test-args' filter, and its 'dotnet' takes the same keys as a folder's, with 'chromium' to install the browser, 'postgres-user'/'postgres-password' and 'rabbitmq-user'/'rabbitmq-password' for services that log in as someone other than trax, and 'web' for an npm folder (relative to the folder) whose tests and build run after the .NET tests.",
"packages": [
{
"folder": "Trax.Core",
@@ -9,13 +9,13 @@
},
{
"folder": "Trax.Effect",
- "upstream": ["Trax.Core", "Trax.Api.StateMachine"],
- "dotnet": { "solution": "Trax.Effect.slnx", "state-machine": true, "pack": true, "coverage": true, "postgres": "trax_data_tests", "rabbitmq": true, "databases": [], "timeout": 15, "test-args": "" },
+ "upstream": ["Trax.Core"],
+ "dotnet": { "solution": "Trax.Effect.slnx", "pack": true, "coverage": true, "postgres": "trax_data_tests", "rabbitmq": true, "databases": [], "timeout": 15, "test-args": "" },
"adr": { "adr-root": "docs/adr", "known-areas": "migrations,providers,data-model,testing,platform,auth", "census-root": "tests/Trax.Effect.Tests.Meta" }
},
{
"folder": "Trax.StateMachine",
- "upstream": ["Trax.Effect", "Trax.Api.StateMachine"],
+ "upstream": ["Trax.Effect"],
"dotnet": { "solution": "dotnet/Trax.StateMachine.slnx", "state-machine": true, "pack": true, "coverage": true, "postgres": "trax_data_tests", "rabbitmq": false, "databases": [], "timeout": 15, "test-args": "" }
},
{
@@ -38,7 +38,7 @@
},
{
"folder": "Trax.Cli",
- "upstream": ["Trax.Scheduler", "Trax.Api.StateMachine"],
+ "upstream": ["Trax.Scheduler", "Trax.StateMachine"],
"dotnet": { "solution": "Trax.Cli.slnx", "state-machine": true, "pack": true, "coverage": true, "postgres": "", "rabbitmq": false, "databases": [], "timeout": 15, "test-args": "" },
"adr": { "adr-root": "docs/adr", "known-areas": "tooling,platform,testing", "census-root": "tests/Trax.Cli.Tests.Meta" }
},
@@ -54,8 +54,7 @@
"dotnet": { "solution": "Trax.Docs.slnx", "pack": false, "coverage": false, "postgres": "", "rabbitmq": false, "databases": [], "timeout": 15, "test-args": "" },
"adr": { "adr-root": "adr", "known-areas": "testing,platform,packaging,ci,naming,data-model,graphql,docs,migrations,providers", "known-repos": "core,effect,mediator,scheduler,dashboard,api,cli,samples,docs,website", "require-repos-key": "true", "census-root": "tests/Trax.Docs.Tests" }
},
- { "folder": "Trax.Website", "upstream": ["Trax.Docs", "Trax.Api"] },
- { "folder": "Trax.Api.StateMachine", "upstream": [] }
+ { "folder": "Trax.Website", "upstream": ["Trax.Docs", "Trax.Api"] }
],
"suites": [
{
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 47ae95c40..c16b88b85 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -75,7 +75,7 @@ updates:
directories:
# The release tooling.
- "/"
- - "/Trax.Api.StateMachine"
+ - "/Trax.StateMachine/ts"
# The operations dashboard that Trax.Api.Dashboard ships.
- "/Trax.Api/src/Trax.Api.Dashboard/ClientApp"
- "/Trax.Core/plugins/vscode/trax-hints"
diff --git a/.github/release/release-workflow.test.mjs b/.github/release/release-workflow.test.mjs
index ff0e6838f..658e1aa9f 100644
--- a/.github/release/release-workflow.test.mjs
+++ b/.github/release/release-workflow.test.mjs
@@ -80,12 +80,12 @@ describe('build job', () => {
it('packs the engine at the released version, without re-running the tests CI ran', () => {
const pack = step(build, 'Pack the TypeScript engine');
- assert.equal(pack['working-directory'], 'Trax.Api.StateMachine');
+ assert.equal(pack['working-directory'], 'Trax.StateMachine/ts');
assert.equal(pack.env.PKG_VERSION, '${{ needs.release.outputs.version }}');
assert.match(pack.run, /npm ci --ignore-scripts/);
assert.doesNotMatch(pack.run, /npm test|npm run typecheck/);
assert.match(pack.run, /npm version "\$PKG_VERSION" --no-git-tag-version/);
- assert.match(pack.run, /npm pack --pack-destination \.\.\/npm/);
+ assert.match(pack.run, /npm pack --pack-destination \.\.\/\.\.\/npm/);
});
it('versions the engine before the NuGet packs, which bundle it into Trax.Cli', () => {
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 3d7712a78..d52b268c2 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -164,16 +164,16 @@ jobs:
working-directory: ${{ matrix.package.folder }}
run: ../.github/scripts/check-deprecated-packages.sh
- name: Setup Node
- # Tests that drive Trax.Api.StateMachine's generators run them under node, packing Trax.Cli
+ # Tests that drive the TypeScript engine's generators (Trax.StateMachine/ts) run them under node, packing Trax.Cli
# bundles them into it, the browser tests build the page they drive with vite, and building
# Trax.Api.Dashboard compiles its React app. Before the build for that last reason.
if: matrix.package['state-machine'] || matrix.package.playwright || matrix.package['api-dashboard']
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: '24'
- - name: Install Trax.Api.StateMachine (locked, no install scripts)
+ - name: Install Trax.StateMachine/ts (locked, no install scripts)
if: matrix.package['state-machine'] || matrix.package.playwright
- working-directory: Trax.Api.StateMachine
+ working-directory: Trax.StateMachine/ts
run: npm ci --ignore-scripts
- name: Install the API dashboard (locked, no install scripts)
# With its packages installed, building Trax.Api.Dashboard compiles the app and embeds it,
@@ -200,7 +200,7 @@ jobs:
run: dotnet pack "$SOLUTION" --configuration Release --no-build --output "$RUNNER_TEMP/nupkg"
- name: Install the Recovery page (locked, no install scripts)
# The browser tests build the page with vite before they open it; it compiles the engine
- # from Trax.Api.StateMachine/src, installed above.
+ # from Trax.StateMachine/ts/src, installed above.
if: matrix.package.playwright
working-directory: Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client
run: npm ci --ignore-scripts
@@ -621,7 +621,7 @@ jobs:
run: npm audit --omit=dev --audit-level=high
# The Recovery sample's page (Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client), its own
- # npm project. It builds the engine from Trax.Api.StateMachine/src, which is upstream of
+ # npm project. It builds the engine from Trax.StateMachine/ts/src, which is upstream of
# Trax.Samples through Trax.Cli, so it runs whenever the Samples job does. Besides its lint, tests
# and build, it regenerates the topic map's twin and differential corpus from the C# machine with
# `trax machine generate`, as the sample's README says to, and fails when that changes a file: a
@@ -671,9 +671,9 @@ jobs:
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: '24'
- - name: Install Trax.Api.StateMachine (locked, no install scripts)
+ - name: Install Trax.StateMachine/ts (locked, no install scripts)
# The twin generator runs under node from this folder's tools.
- working-directory: Trax.Api.StateMachine
+ working-directory: Trax.StateMachine/ts
run: npm ci --ignore-scripts
- name: Install the API dashboard (locked, no install scripts)
# The Recovery host serves the console, and a build without the app refuses to start, so
@@ -706,7 +706,7 @@ jobs:
--assembly Trax.Samples/samples/Recovery/Trax.Samples.Recovery/bin/Release/net10.0/Trax.Samples.Recovery.dll \
--machine Trax.Samples.Recovery.Machines.TopicMapMachine \
--ir-out "$out" --twin-out "$out" --corpus-out "$out" \
- --engine-src Trax.Api.StateMachine/src --import-style specifier
+ --engine-src Trax.StateMachine/ts/src --import-style specifier
# Only the generated files: the folder also holds the page's own hook.
if [ -n "$(git status --porcelain -- "$out/topic-map.*" "$out/differential.json")" ]; then
git --no-pager diff -- "$out/topic-map.*" "$out/differential.json"
@@ -718,7 +718,7 @@ jobs:
run: |
api=Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Api
dotnet restore "$api" --locked-mode
- node Trax.Api.StateMachine/tools/bundle-cli.mjs --out "$RUNNER_TEMP/engine"
+ node Trax.StateMachine/ts/tools/bundle-cli.mjs --out "$RUNNER_TEMP/engine"
(cd "$api" && ConnectionStrings__TraxDatabase="Host=127.0.0.1;Port=1;Database=none;Username=none;Password=none" \
dotnet run --no-restore -- --trax-export-client "$RUNNER_TEMP/manifest.json")
# From the page's folder, so the documents' sources are the paths trax.documents.json records.
@@ -730,7 +730,7 @@ jobs:
# The StateMachine sample's page (Trax.Samples/samples/StateMachine/web), its own npm project on
# the client `trax client` generated from the host. It builds the engine from
- # Trax.Api.StateMachine/src, as the Recovery page does. Besides its build, it exports the host's
+ # Trax.StateMachine/ts/src, as the Recovery page does. Besides its build, it exports the host's
# client manifest and runs `trax client --check` over the committed client, and fails when they
# differ: a client out of step with the host sends ids the host answers CLIENT_OUTDATED.
statemachine-client:
@@ -778,9 +778,9 @@ jobs:
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: '24'
- - name: Install Trax.Api.StateMachine (locked, no install scripts)
+ - name: Install Trax.StateMachine/ts (locked, no install scripts)
# The page builds the engine from its source, and the twin generator is bundled from it.
- working-directory: Trax.Api.StateMachine
+ working-directory: Trax.StateMachine/ts
run: npm ci --ignore-scripts
- name: Install (locked, no install scripts)
working-directory: ${{ env.WEB }}
@@ -801,7 +801,7 @@ jobs:
api=Trax.Samples/samples/StateMachine/Trax.Samples.StateMachine.Api
dotnet restore "$api" --locked-mode
dotnet restore Trax.Cli/src/Trax.Cli --locked-mode
- node Trax.Api.StateMachine/tools/bundle-cli.mjs --out "$RUNNER_TEMP/engine"
+ node Trax.StateMachine/ts/tools/bundle-cli.mjs --out "$RUNNER_TEMP/engine"
dotnet run --project "$api" --no-restore -- --trax-export-client "$RUNNER_TEMP/manifest.json"
cli="$PWD/Trax.Cli/src/Trax.Cli"
(cd "$WEB" && dotnet run --project "$cli" --no-restore -- client \
@@ -814,14 +814,14 @@ jobs:
# folders list it upstream.
state-machine:
needs: changes
- if: contains(fromJSON(needs.changes.outputs.folders), 'Trax.Api.StateMachine')
+ if: contains(fromJSON(needs.changes.outputs.folders), 'Trax.StateMachine')
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
defaults:
run:
- working-directory: Trax.Api.StateMachine
+ working-directory: Trax.StateMachine/ts
steps:
- name: Harden runner
uses: step-security/harden-runner@ccd8616d44fd3846e67624a50d5aad6d37bf2d25 # v2.22.1
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index d0a14d252..4180827cb 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -192,18 +192,18 @@ jobs:
# into this checkout only, and never committed. prepack builds dist/ from this tree.
# build-test already typechecked and tested this commit's engine. It runs before the
# NuGet packs because packing Trax.Cli bundles the generators from this install.
- working-directory: Trax.Api.StateMachine
+ working-directory: Trax.StateMachine/ts
env:
PKG_VERSION: ${{ needs.release.outputs.version }}
run: |
npm ci --ignore-scripts
npm version "$PKG_VERSION" --no-git-tag-version
- mkdir -p ../npm
- npm pack --pack-destination ../npm
+ mkdir -p ../../npm
+ npm pack --pack-destination ../../npm
# Exactly one tarball, at the released version.
- if [ "$(cd ../npm && ls)" != "traxsharp-state-machine-$PKG_VERSION.tgz" ]; then
- echo "::error::Expected only traxsharp-state-machine-$PKG_VERSION.tgz, packed: $(ls ../npm)"
+ if [ "$(cd ../../npm && ls)" != "traxsharp-state-machine-$PKG_VERSION.tgz" ]; then
+ echo "::error::Expected only traxsharp-state-machine-$PKG_VERSION.tgz, packed: $(ls ../../npm)"
exit 1
fi
- name: Install the API dashboard (locked, no install scripts)
diff --git a/Trax.Cli/AGENTS.md b/Trax.Cli/AGENTS.md
index cd90fbaa4..ff6b52f1e 100644
--- a/Trax.Cli/AGENTS.md
+++ b/Trax.Cli/AGENTS.md
@@ -68,7 +68,7 @@ The machine unit tests drive a fake `INodeRunner` and spawn no process at all. O
byte-parity integration test and `MachineGenerateFromPackedToolTests` spawn real node, and they
skip themselves at runtime when node is not on PATH, which is what lets the suite run without
node installed. The second packs this folder's tool, which bundles the engine's generators
-into it, so it also skips until `npm ci --ignore-scripts` has run in `Trax.Api.StateMachine`.
+into it, so it also skips until `npm ci --ignore-scripts` has run in `Trax.StateMachine/ts`.
Under CI (`CI` set) both fail instead of skipping, since CI installs node and the engine.
Packing (`dotnet pack`, and CI's pack step) needs both, and fails saying so. `NodeRunnerTests` does
spawn a real process, using `dotnet` as a stand-in executable.
diff --git a/Trax.Cli/src/Trax.Cli/Clients/ClientGenerator.cs b/Trax.Cli/src/Trax.Cli/Clients/ClientGenerator.cs
index 179cdec6b..34313dd8c 100644
--- a/Trax.Cli/src/Trax.Cli/Clients/ClientGenerator.cs
+++ b/Trax.Cli/src/Trax.Cli/Clients/ClientGenerator.cs
@@ -40,7 +40,7 @@ internal sealed partial class ClientGenerator
{
///
/// The client format this generator writes, held equal to the runtime's clientFormat
- /// (Trax.Api.StateMachine/src/clientFormat.ts) by ClientFormatParityTests.
+ /// (Trax.StateMachine/ts/src/clientFormat.ts) by ClientFormatParityTests.
///
public const int ClientFormat = 2;
diff --git a/Trax.Cli/src/Trax.Cli/Machines/MachineGenerator.cs b/Trax.Cli/src/Trax.Cli/Machines/MachineGenerator.cs
index 62e5a1e67..27e376a95 100644
--- a/Trax.Cli/src/Trax.Cli/Machines/MachineGenerator.cs
+++ b/Trax.Cli/src/Trax.Cli/Machines/MachineGenerator.cs
@@ -434,7 +434,7 @@ private string ToolScript(MachineGenerateOptions o, string script, string what)
throw new InvalidOperationException(
$"Generating {what} needs the TypeScript engine, and this trax has none bundled ({bundled} is "
+ "missing): it was built from source, not installed from its package. Pass --engine-src "
- + "with the engine's src/ directory (Trax.Api.StateMachine/src, after `npm ci` there)."
+ + "with the engine's src/ directory (Trax.StateMachine/ts/src, after `npm ci` there)."
);
return bundled;
}
diff --git a/Trax.Cli/src/Trax.Cli/Trax.Cli.csproj b/Trax.Cli/src/Trax.Cli/Trax.Cli.csproj
index 678a0cf8c..cfa880922 100644
--- a/Trax.Cli/src/Trax.Cli/Trax.Cli.csproj
+++ b/Trax.Cli/src/Trax.Cli/Trax.Cli.csproj
@@ -41,7 +41,7 @@
needs neither. -->
$(TargetsForTfmSpecificContentInPackage);PackBundledEngine
- $([MSBuild]::NormalizeDirectory('$(MSBuildThisFileDirectory)', '..', '..', '..', 'Trax.Api.StateMachine'))
+ $([MSBuild]::NormalizeDirectory('$(MSBuildThisFileDirectory)', '..', '..', '..', 'Trax.StateMachine', 'ts'))
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeIngestMachine.cs b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeIngestMachine.cs
index 83a88878a..745dda134 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeIngestMachine.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeIngestMachine.cs
@@ -44,7 +44,7 @@ public enum IngestTrigger
///
/// A machine whose Fetching state invokes a train, identical to the committed ingest machine in
- /// Trax.Api.StateMachine, so the CLI's IR, twin and corpus for a machine with outcome triggers can be
+ /// Trax.StateMachine/ts, so the CLI's IR, twin and corpus for a machine with outcome triggers can be
/// byte-compared against the committed artifacts.
///
public sealed class DeclarativeIngestMachine : Machine
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeTurnstileMachine.cs b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeTurnstileMachine.cs
index 86e6e68ea..8437c3f17 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeTurnstileMachine.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeTurnstileMachine.cs
@@ -20,7 +20,7 @@ public enum TurnstileTrigger
///
/// A declaratively-authored turnstile, identical to the committed turnstile machine in
-/// Trax.Api.StateMachine, so the CLI's generated IR / twin / corpus can be byte-compared against the committed
+/// Trax.StateMachine/ts, so the CLI's generated IR / twin / corpus can be byte-compared against the committed
/// artifacts. The CLI test points --assembly at this test assembly and loads this machine by reflection,
/// exercising the exact path a real consumer uses.
///
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGenerateFromPackedToolTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGenerateFromPackedToolTests.cs
index 4f511d22e..9baef6ece 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGenerateFromPackedToolTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGenerateFromPackedToolTests.cs
@@ -28,11 +28,11 @@ public void SetUp()
);
if (
!Directory.Exists(
- Path.Combine(RepoFolder("Trax.Api.StateMachine"), "node_modules", "esbuild")
+ Path.Combine(RepoFolder(Path.Combine("Trax.StateMachine", "ts")), "node_modules", "esbuild")
)
)
NodePrerequisite.Missing(
- "Trax.Api.StateMachine has no node_modules; run `npm ci` there to pack the tool."
+ "Trax.StateMachine/ts has no node_modules; run `npm ci` there to pack the tool."
);
_root = Path.Combine(Path.GetTempPath(), $"trax-packed-tool-{Guid.NewGuid():N}");
@@ -90,7 +90,7 @@ public void The_packed_tool_generates_a_twin_and_a_corpus_the_CSharp_engine_repl
public void The_published_engine_and_tool_typecheck_together_in_an_empty_project()
{
var tool = PackAndUnpackTheTool();
- var work = OutsideProject(RepoFolder("Trax.Api.StateMachine"));
+ var work = OutsideProject(RepoFolder(Path.Combine("Trax.StateMachine", "ts")));
var (generated, generateOutput) = Run(
"dotnet",
@@ -196,7 +196,7 @@ export function useRunPage(runId: string | null) {
public void The_generated_client_typechecks_under_a_vite_react_ts_tsconfig()
{
var tool = PackAndUnpackTheTool();
- var work = OutsideProject(RepoFolder("Trax.Api.StateMachine"));
+ var work = OutsideProject(RepoFolder(Path.Combine("Trax.StateMachine", "ts")));
GenerateClient(tool, work);
File.WriteAllText(
Path.Combine(work, "main.ts"),
@@ -261,7 +261,7 @@ export function usePage(runId: string | null) {
public void The_generated_hooks_behave_in_an_outside_project()
{
var tool = PackAndUnpackTheTool();
- var engine = RepoFolder("Trax.Api.StateMachine");
+ var engine = RepoFolder(Path.Combine("Trax.StateMachine", "ts"));
var work = OutsideProject(
engine,
$"react-dom@{EngineDevDependency(engine, "react-dom")}",
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGeneratorNodeTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGeneratorNodeTests.cs
index e0fc644c8..306fada76 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGeneratorNodeTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGeneratorNodeTests.cs
@@ -6,7 +6,7 @@
namespace Trax.Cli.Tests.IntegrationTests;
///
-/// End-to-end byte-parity: the CLI, running real node against the sibling Trax.Api.StateMachine engine, must
+/// End-to-end byte-parity: the CLI, running real node against the sibling Trax.StateMachine/ts engine, must
/// reproduce the committed turnstile artifacts exactly. This is the whole point of the tool, so it is proven
/// against the real generators, not a fake. Skipped at runtime when node is unavailable or the sibling engine is
/// not checked out beside this repo, except under CI, where that fails the test.
@@ -29,7 +29,7 @@ public void SetUp()
var engineRoot = FindEngineRoot();
if (engineRoot is null)
NodePrerequisite.Missing(
- "Trax.Api.StateMachine is not checked out beside Trax.Cli; skipping byte-parity test."
+ "Trax.StateMachine/ts is not checked out beside Trax.Cli; skipping byte-parity test."
);
_engineSrc = Path.Combine(engineRoot!, "src");
@@ -146,9 +146,10 @@ private void AssertByteParityWithCommitted(IMachine machine, string id)
);
var engineRoot = Directory.GetParent(_engineSrc)!.FullName;
+ var machinesRoot = Path.Combine(engineRoot, "..", "conformance", "machines");
FilesShouldMatch(
Path.Combine(irOut, $"{id}.ir.json"),
- Path.Combine(engineRoot, "machines", id, $"{id}.ir.json")
+ Path.Combine(machinesRoot, id, $"{id}.ir.json")
);
FilesShouldMatch(
Path.Combine(twinOut, $"{id}.contexts.g.ts"),
@@ -160,7 +161,7 @@ private void AssertByteParityWithCommitted(IMachine machine, string id)
);
FilesShouldMatch(
Path.Combine(corpusOut, "differential.json"),
- Path.Combine(engineRoot, "machines", id, "differential.json")
+ Path.Combine(machinesRoot, id, "differential.json")
);
}
@@ -201,7 +202,7 @@ private static void FilesShouldMatch(string generated, string committed)
var dir = new DirectoryInfo(AppContext.BaseDirectory);
while (dir is not null)
{
- var candidate = Path.Combine(dir.FullName, "Trax.Api.StateMachine");
+ var candidate = Path.Combine(dir.FullName, "Trax.StateMachine", "ts");
if (Directory.Exists(Path.Combine(candidate, "src", "rules")))
return candidate;
dir = dir.Parent;
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/NodePrerequisite.cs b/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/NodePrerequisite.cs
index 61290a94d..b441c42c8 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/NodePrerequisite.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/NodePrerequisite.cs
@@ -11,7 +11,7 @@ public static void Missing(string why)
{
if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("CI")))
Assert.Fail(
- $"{why} CI installs node and runs `npm ci` in Trax.Api.StateMachine for this folder, so a "
+ $"{why} CI installs node and runs `npm ci` in Trax.StateMachine/ts for this folder, so a "
+ "test that skipped here would prove nothing."
);
Assert.Ignore(why);
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ClientGeneratorTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ClientGeneratorTests.cs
index 47434b8ea..3583dcca9 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ClientGeneratorTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ClientGeneratorTests.cs
@@ -792,11 +792,11 @@ private static string EngineSrc()
dir = dir.Parent
)
{
- var candidate = Path.Combine(dir.FullName, "Trax.Api.StateMachine", "src");
+ var candidate = Path.Combine(dir.FullName, "Trax.StateMachine", "ts", "src");
if (Directory.Exists(candidate))
return candidate;
}
- Assert.Ignore("Trax.Api.StateMachine not found (isolated build).");
+ Assert.Ignore("Trax.StateMachine/ts not found (isolated build).");
return "";
}
diff --git a/Trax.Docs/adr/0048-a-machine-is-served-as-a-typed-api-and-the-server-applies-every-transition.md b/Trax.Docs/adr/0048-a-machine-is-served-as-a-typed-api-and-the-server-applies-every-transition.md
index e1bf2a305..d77f24ddc 100644
--- a/Trax.Docs/adr/0048-a-machine-is-served-as-a-typed-api-and-the-server-applies-every-transition.md
+++ b/Trax.Docs/adr/0048-a-machine-is-served-as-a-typed-api-and-the-server-applies-every-transition.md
@@ -510,7 +510,7 @@ In `Trax.Scheduler.Tests.Integration`:
- `TimerVersionChangeTests`: `A_v2_without_the_timer_clears_a_stale_due_at_and_does_not_fire`, `A_changed_duration_keeps_the_due_at_set_at_entry`, `A_v1_host_does_not_fire_a_row_written_by_v2`, `A_migrated_snapshot_keeps_its_due_at_when_the_state_survives`
- `TimersModelTests`: `Generated_events_fires_and_races_keep_due_at_revision_and_row_id_in_step_with_the_model`
-In `Trax.Api.StateMachine` (vitest; each was written `it.fails` and is now an ordinary test):
+In `Trax.StateMachine/ts` (vitest; each was written `it.fails` and is now an ordinary test):
- `src/rules/interpreter.input.test.ts`: `validateInput refuses` a missing required field, a number sent as a string, an
unknown field, a PascalCase field, a non-object input, a constraint broken by the input, unknown fields on a trigger
without input, a fraction in an integer field, a number beyond double range, a lone surrogate, a nested record.
@@ -536,7 +536,7 @@ golden is committed, as it is).
## Exemplars
**Enforced elsewhere:** the tests listed under *Tests*, in each folder's test projects and in
-`Trax.Api.StateMachine`; `InteractionMatrixTests` in `Trax.Core.Tests.Meta`, which requires the `After` row of the
+`Trax.StateMachine/ts`; `InteractionMatrixTests` in `Trax.Core.Tests.Meta`, which requires the `After` row of the
machine-features table and the *Machine API features* table to name a test for every cell; and the startup refusals
themselves (an undeclared event, an unexposed raw-delegate machine, the opt-in without a policy), which stop a host
that breaks the rule from starting.
diff --git a/Trax.Docs/contributing/test-conventions.md b/Trax.Docs/contributing/test-conventions.md
index 0d818ecaf..3e8a82b95 100644
--- a/Trax.Docs/contributing/test-conventions.md
+++ b/Trax.Docs/contributing/test-conventions.md
@@ -127,7 +127,7 @@ One survives, on its exceptions list: a Trax.Samples E2E test waiting on an unre
scheduler feature. Do not read it as precedent for a second.
When CI provides what the test needs (a service in `.github/ci/packages.json`, node and the
-`Trax.Api.StateMachine` packages for `"state-machine": true`), the check fails instead of
+`Trax.StateMachine/ts` packages for `"state-machine": true`), the check fails instead of
skipping when the `CI` environment variable is set, so a broken job cannot report a skipped
suite as green. `PersistedOperationCrossNodeTests` and `TwinSequenceParityTests` do this.
diff --git a/Trax.Docs/samples/recovery/state-machines.md b/Trax.Docs/samples/recovery/state-machines.md
index 5aa5727c7..28d1014a7 100644
--- a/Trax.Docs/samples/recovery/state-machines.md
+++ b/Trax.Docs/samples/recovery/state-machines.md
@@ -155,7 +155,7 @@ dotnet run --project Trax.Cli/src/Trax.Cli -- machine generate \
--ir-out Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/src/topicMap \
--twin-out Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/src/topicMap \
--corpus-out Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/src/topicMap \
- --engine-src Trax.Api.StateMachine/src --import-style specifier
+ --engine-src Trax.StateMachine/ts/src --import-style specifier
```
The topic map is marked `[TraxMachine]`, so it is served as its own typed operations
diff --git a/Trax.Docs/samples/recovery/tests.md b/Trax.Docs/samples/recovery/tests.md
index 785dc3559..6083e1d22 100644
--- a/Trax.Docs/samples/recovery/tests.md
+++ b/Trax.Docs/samples/recovery/tests.md
@@ -84,7 +84,7 @@ database, never a delay, and `TraxInvariants` is checked after every one:
| `A_placed_order_is_delivered_and_its_run_followed_by_its_owner` | A placed order's delivery run is the one the order's answer names (`invokedRun`), followed to its end, with nothing under `operations` |
| `Built_bundle_holds_no_operator_key` | The built page holds no operator key and no retired `recovery_*` id |
-They need the page's npm packages (`npm ci` in `Trax.Samples.Recovery.Client` and in `Trax.Api.StateMachine`) and
+They need the page's npm packages (`npm ci` in `Trax.Samples.Recovery.Client` and in `Trax.StateMachine/ts`) and
chromium (`pwsh tests/Trax.Samples.Recovery.Browser/bin/Debug/net10.0/playwright.ps1 install chromium` after a
build):
diff --git a/Trax.Docs/sdk-reference/statemachine-api/ir-format.md b/Trax.Docs/sdk-reference/statemachine-api/ir-format.md
index 3b431e908..3e9eae209 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/ir-format.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/ir-format.md
@@ -128,7 +128,7 @@ reads, saying whether to upgrade the package or regenerate. An IR without `irFor
## The schema
The format is also written as a JSON Schema (draft 2020-12),
-[`conformance/ir.schema.json`](https://github.com/TraxSharp/Trax/blob/main/Trax.Api.StateMachine/conformance/ir.schema.json),
+[`conformance/ir.schema.json`](https://github.com/TraxSharp/Trax/blob/main/Trax.StateMachine/conformance/ir.schema.json),
and the schema is normative: an engine reads every document it accepts, and the exporter writes nothing it refuses.
Every object in it is closed, so a field it does not name is refused rather than ignored. Both runtimes' tests check
every IR the exporter writes against it, so a field added to the IR without the schema fails them.
diff --git a/Trax.Docs/sdk-reference/statemachine-api/migrations.md b/Trax.Docs/sdk-reference/statemachine-api/migrations.md
index f95215637..a2760883a 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/migrations.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/migrations.md
@@ -55,7 +55,7 @@ the current definition's schema. Every path that reads a snapshot rehydrates it:
A draft whose version has no migration path to the current definition, or is newer than it, rehydrates as
[`VERSION_MISMATCH`](/docs/sdk-reference/statemachine-api/result-codes).
-The machines in `Trax.Api.StateMachine/machines/` pin a migration with a migration golden,
+The machines in `Trax.StateMachine/conformance/machines/` pin a migration with a migration golden,
`machines//migration.json`: a committed set of stored older-version snapshots and the exact
[canonical wire](/docs/statemachine/canonical-wire) each must become. The tests of both runtimes replay it, so a migration that drops, renames or reorders a surviving field fails, and the two runtimes
cannot upgrade the same draft differently.
diff --git a/Trax.Docs/sdk-reference/statemachine-api/result-codes.md b/Trax.Docs/sdk-reference/statemachine-api/result-codes.md
index b478afb21..883f1c4b8 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/result-codes.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/result-codes.md
@@ -25,7 +25,7 @@ snake case (`GUARD_FAILED`), the spelling GraphQL gives the enum: `RefusalCode.G
`RefusalCode.GuardFailed` in TypeScript. `RefusalCodes.TryParse` also reads the kebab-case spelling the codes had
before (`guard-failed`), so a request id an older node recorded still replays. `RefusalCodes.All` lists the members
in order, and `RefusalCodeJsonConverter`, which the enum carries, writes and reads the wire spelling in
-`System.Text.Json`. The set is also written as data, `Trax.Api.StateMachine/conformance/refusal-codes.json`, and
+`System.Text.Json`. The set is also written as data, `Trax.StateMachine/conformance/refusal-codes.json`, and
every engine checks itself against that file, so the C# and TypeScript sets are equal member for member and in order.
## Members
diff --git a/Trax.Docs/sdk-reference/statemachine-api/typescript-package.md b/Trax.Docs/sdk-reference/statemachine-api/typescript-package.md
index aa62a2697..a446ea398 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/typescript-package.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/typescript-package.md
@@ -9,15 +9,15 @@ nav_order: 14
surface: typescript
package: "@traxsharp/state-machine"
source:
- - Trax.Api.StateMachine/src/index.ts
- - Trax.Api.StateMachine/src/client/index.ts
- - Trax.Api.StateMachine/src/react.ts
- - Trax.Api.StateMachine/package.json
+ - Trax.StateMachine/ts/src/index.ts
+ - Trax.StateMachine/ts/src/client/index.ts
+ - Trax.StateMachine/ts/src/react.ts
+ - Trax.StateMachine/ts/package.json
---
# TypeScript package
-`@traxsharp/state-machine` is the TypeScript twin of `Trax.Effect.StateMachine`, published from `Trax.Api.StateMachine`.
+`@traxsharp/state-machine` is the TypeScript twin of `Trax.Effect.StateMachine`, published from `Trax.StateMachine/ts`.
Its exports are pinned by a committed baseline (`src/exports.test.ts`).
```bash
diff --git a/Trax.Docs/tests/Trax.Docs.Tests/Tests/SdkReferenceFrontMatterTests.cs b/Trax.Docs/tests/Trax.Docs.Tests/Tests/SdkReferenceFrontMatterTests.cs
index b2b89a359..10bf6c546 100644
--- a/Trax.Docs/tests/Trax.Docs.Tests/Tests/SdkReferenceFrontMatterTests.cs
+++ b/Trax.Docs/tests/Trax.Docs.Tests/Tests/SdkReferenceFrontMatterTests.cs
@@ -453,7 +453,7 @@ public void Check_ReportsMissingFieldsApart_FromWrongOnes()
var typescript = Check(
FrontMatter.Of(
- "---\npackage: \"@traxsharp/state-machine\"\nsurface: typescript\nsource:\n - Trax.Api.StateMachine\n---\n"
+ "---\npackage: \"@traxsharp/state-machine\"\nsurface: typescript\nsource:\n - Trax.StateMachine/ts\n---\n"
),
npm
);
diff --git a/Trax.Docs/tests/Trax.Docs.Tests/Tests/TypeScriptExportsAreDocumentedTests.cs b/Trax.Docs/tests/Trax.Docs.Tests/Tests/TypeScriptExportsAreDocumentedTests.cs
index eceeabf5b..8c0ed7b93 100644
--- a/Trax.Docs/tests/Trax.Docs.Tests/Tests/TypeScriptExportsAreDocumentedTests.cs
+++ b/Trax.Docs/tests/Trax.Docs.Tests/Tests/TypeScriptExportsAreDocumentedTests.cs
@@ -7,7 +7,7 @@ namespace Trax.Docs.Tests.Tests;
/// The .NET packages are held to this by PublicApiIsDocumentedTests; the npm package has no public API
/// baseline that test reads, so an export, a type above all, could ship with nowhere to learn it but its
/// .d.ts. The exports are read from the package's committed snapshot
-/// (Trax.Api.StateMachine/src/__snapshots__/exports.test.ts.snap), which its own
+/// (Trax.StateMachine/ts/src/__snapshots__/exports.test.ts.snap), which its own
/// exports.test.ts keeps equal to what each entry point exports. An export counts as documented when its name
/// is a word inside a code span on that page. That proves the name appears, not that the page describing it is
/// right.
@@ -38,7 +38,8 @@ public void Every_export_of_the_npm_package_is_named_on_its_reference_page()
var snapshot = File.ReadAllText(
System.IO.Path.Combine(
RepoRoot.Monorepo,
- "Trax.Api.StateMachine",
+ "Trax.StateMachine",
+ "ts",
"src",
"__snapshots__",
"exports.test.ts.snap"
diff --git a/Trax.Samples/AGENTS.md b/Trax.Samples/AGENTS.md
index 0bf8288fc..361a40641 100644
--- a/Trax.Samples/AGENTS.md
+++ b/Trax.Samples/AGENTS.md
@@ -89,10 +89,10 @@ can drive goes in its exclusion list, with the reason.
`tests/Trax.Samples.Recovery.Browser/` drives the Recovery page in chromium with Playwright for .NET.
It builds the page with vite, so it needs `npm ci` in the page's folder and in
-`Trax.Api.StateMachine`, and chromium installed with the `playwright.ps1` beside its build output.
+`Trax.StateMachine/ts`, and chromium installed with the `playwright.ps1` beside its build output.
`samples/StateMachine/web` runs vitest (`npm test`) over its committed twins, after `npm ci` there and in
-`Trax.Api.StateMachine`.
+`Trax.StateMachine/ts`.
`tests/Trax.Samples.ApiDashboard.Browser/` opens the dashboard Trax.Api.Dashboard serves in
chromium, against a host it builds in-process on the in-memory provider, and fails on any
diff --git a/Trax.Samples/samples/Recovery/README.md b/Trax.Samples/samples/Recovery/README.md
index 49c65e256..a9f92817b 100644
--- a/Trax.Samples/samples/Recovery/README.md
+++ b/Trax.Samples/samples/Recovery/README.md
@@ -204,9 +204,9 @@ ChoosingFields ◀──StartOver── Building, Built, BuildFailed, BuildCance
```
The page's twin of the machine (`Trax.Samples.Recovery.Client/src/topicMap/`) is generated by the `trax machine`
-CLI from the C# machine, and the client builds the engine, `@traxsharp/state-machine`, from `Trax.Api.StateMachine/src`
+CLI from the C# machine, and the client builds the engine, `@traxsharp/state-machine`, from `Trax.StateMachine/ts/src`
in this repository. After changing the machine, build the sample and regenerate it from the repository root (the
-engine needs `npm ci` in `Trax.Api.StateMachine` once):
+engine needs `npm ci` in `Trax.StateMachine/ts` once):
```bash
dotnet run --project Trax.Cli/src/Trax.Cli -- machine generate \
@@ -215,7 +215,7 @@ dotnet run --project Trax.Cli/src/Trax.Cli -- machine generate \
--ir-out Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/src/topicMap \
--twin-out Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/src/topicMap \
--corpus-out Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/src/topicMap \
- --engine-src Trax.Api.StateMachine/src --import-style specifier
+ --engine-src Trax.StateMachine/ts/src --import-style specifier
```
The host runs only persisted documents, as a production host would: an ad-hoc document, and introspection, are
diff --git a/Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/tsconfig.json b/Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/tsconfig.json
index 56c804778..b253af29c 100644
--- a/Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/tsconfig.json
+++ b/Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/tsconfig.json
@@ -18,9 +18,9 @@
"noUncheckedSideEffectImports": true,
"resolveJsonModule": true,
"paths": {
- "@traxsharp/state-machine": ["../../../../Trax.Api.StateMachine/src/index.ts"],
- "@traxsharp/state-machine/client": ["../../../../Trax.Api.StateMachine/src/client/index.ts"],
- "@traxsharp/state-machine/react": ["../../../../Trax.Api.StateMachine/src/react.ts"]
+ "@traxsharp/state-machine": ["../../../../Trax.StateMachine/ts/src/index.ts"],
+ "@traxsharp/state-machine/client": ["../../../../Trax.StateMachine/ts/src/client/index.ts"],
+ "@traxsharp/state-machine/react": ["../../../../Trax.StateMachine/ts/src/react.ts"]
}
},
"include": ["src"]
diff --git a/Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/vite.config.ts b/Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/vite.config.ts
index d8472b55b..cfc472585 100644
--- a/Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/vite.config.ts
+++ b/Trax.Samples/samples/Recovery/Trax.Samples.Recovery.Client/vite.config.ts
@@ -5,7 +5,7 @@ import react from "@vitejs/plugin-react";
// The state-machine engine, @traxsharp/state-machine, built from its source in this repository. The topic
// map's generated twin imports it, and so do the draft's server and its React hook. The hook's source imports
// react from beside it, so react is deduplicated: the page and the hook share one copy.
-const engine = fileURLToPath(new URL("../../../../Trax.Api.StateMachine/src", import.meta.url));
+const engine = fileURLToPath(new URL("../../../../Trax.StateMachine/ts/src", import.meta.url));
export default defineConfig({
plugins: [react()],
diff --git a/Trax.Samples/samples/StateMachine/web/tsconfig.json b/Trax.Samples/samples/StateMachine/web/tsconfig.json
index 42aa67877..0a6889fc9 100644
--- a/Trax.Samples/samples/StateMachine/web/tsconfig.json
+++ b/Trax.Samples/samples/StateMachine/web/tsconfig.json
@@ -22,13 +22,13 @@
"resolveJsonModule": true,
"paths": {
"@traxsharp/state-machine": [
- "../../../../Trax.Api.StateMachine/src/index.ts"
+ "../../../../Trax.StateMachine/ts/src/index.ts"
],
"@traxsharp/state-machine/client": [
- "../../../../Trax.Api.StateMachine/src/client/index.ts"
+ "../../../../Trax.StateMachine/ts/src/client/index.ts"
],
"@traxsharp/state-machine/react": [
- "../../../../Trax.Api.StateMachine/src/react.ts"
+ "../../../../Trax.StateMachine/ts/src/react.ts"
]
}
},
diff --git a/Trax.Samples/samples/StateMachine/web/vite.config.ts b/Trax.Samples/samples/StateMachine/web/vite.config.ts
index 6b11ecc6e..e22d22731 100644
--- a/Trax.Samples/samples/StateMachine/web/vite.config.ts
+++ b/Trax.Samples/samples/StateMachine/web/vite.config.ts
@@ -5,7 +5,7 @@ import react from "@vitejs/plugin-react";
// The state-machine engine, @traxsharp/state-machine, built from its source in this repository. The generated client
// in src/trax imports it. The engine's source imports react from beside it, so react is deduplicated: the page and
// the engine share one copy.
-const engine = fileURLToPath(new URL("../../../../Trax.Api.StateMachine/src", import.meta.url));
+const engine = fileURLToPath(new URL("../../../../Trax.StateMachine/ts/src", import.meta.url));
export default defineConfig({
plugins: [react()],
diff --git a/Trax.Samples/tests/Trax.Samples.Recovery.Browser/Fixtures/RecoveryClientBuild.cs b/Trax.Samples/tests/Trax.Samples.Recovery.Browser/Fixtures/RecoveryClientBuild.cs
index 07c50eb7f..e1b5fea4b 100644
--- a/Trax.Samples/tests/Trax.Samples.Recovery.Browser/Fixtures/RecoveryClientBuild.cs
+++ b/Trax.Samples/tests/Trax.Samples.Recovery.Browser/Fixtures/RecoveryClientBuild.cs
@@ -5,7 +5,7 @@ namespace Trax.Samples.Recovery.Browser.Fixtures;
///
/// The Recovery page, built once per run with vite build into this project's output, as a deploy would
-/// build it. Its npm packages must be installed (npm ci in the client and in Trax.Api.StateMachine, whose
+/// build it. Its npm packages must be installed (npm ci in the client and in Trax.StateMachine/ts, whose
/// engine source the page compiles); CI installs them before the tests.
///
public static class RecoveryClientBuild
@@ -26,13 +26,14 @@ public static async Task BuildAsync()
"..",
"..",
"..",
- "Trax.Api.StateMachine",
+ "Trax.StateMachine",
+ "ts",
"node_modules"
);
if (!File.Exists(vite) || !Directory.Exists(engineModules))
throw new InvalidOperationException(
"The Recovery page's npm packages are not installed. Run `npm ci --ignore-scripts` in "
- + $"{ClientFolder} and in Trax.Api.StateMachine before the browser tests."
+ + $"{ClientFolder} and in Trax.StateMachine/ts before the browser tests."
);
var output = Path.Combine(AppContext.BaseDirectory, "recovery-client");
diff --git a/Trax.Api.StateMachine/conformance/PROTOCOL.md b/Trax.StateMachine/conformance/PROTOCOL.md
similarity index 90%
rename from Trax.Api.StateMachine/conformance/PROTOCOL.md
rename to Trax.StateMachine/conformance/PROTOCOL.md
index 4b005311c..ec640cee5 100644
--- a/Trax.Api.StateMachine/conformance/PROTOCOL.md
+++ b/Trax.StateMachine/conformance/PROTOCOL.md
@@ -1,17 +1,21 @@
# The conformance runner and its testee protocol
-`tools/conformance/run.mjs` turns every case in `machines/` and `conformance/` into requests, sends them to one
+`run.mjs`, in this directory, turns every case in `machines/` and the tables beside it into requests, sends them to one
engine, the **testee**, and compares what it answers with what the case expects. An engine in any language joins by
implementing the testee side of this protocol over its public API, not over its internals, so a bug in how a binding
marshals a value is caught too. Only codes and wire bytes are compared; messages are never sent.
## Running it
+From `Trax.StateMachine/`:
+
```bash
-node tools/conformance/run.mjs --testee node tools/conformance/testee-ts.mjs # spawn a testee command
-node tools/conformance/run.mjs --stdio # be spawned by one
+node conformance/run.mjs --testee node ts/tools/conformance/testee-ts.mjs # spawn a testee command
+node conformance/run.mjs --stdio # be spawned by one
```
+The runner and `kit.mjs` use only node's own modules, so they run without an `npm ci`.
+
With `--testee`, the runner starts the command and talks to it over the command's stdin and stdout. With `--stdio`,
the roles on the pipes are reversed: the runner writes requests on its own stdout and reads answers on its stdin, so a
test in another language (the C# `ConformanceRunnerTests`) can start the runner and answer from inside its own
diff --git a/Trax.Api.StateMachine/conformance/canonical-wire.json b/Trax.StateMachine/conformance/canonical-wire.json
similarity index 100%
rename from Trax.Api.StateMachine/conformance/canonical-wire.json
rename to Trax.StateMachine/conformance/canonical-wire.json
diff --git a/Trax.Api.StateMachine/conformance/ir.schema.json b/Trax.StateMachine/conformance/ir.schema.json
similarity index 100%
rename from Trax.Api.StateMachine/conformance/ir.schema.json
rename to Trax.StateMachine/conformance/ir.schema.json
diff --git a/Trax.Api.StateMachine/tools/conformance/kit.mjs b/Trax.StateMachine/conformance/kit.mjs
similarity index 97%
rename from Trax.Api.StateMachine/tools/conformance/kit.mjs
rename to Trax.StateMachine/conformance/kit.mjs
index 5dd139366..73f27ce21 100644
--- a/Trax.Api.StateMachine/tools/conformance/kit.mjs
+++ b/Trax.StateMachine/conformance/kit.mjs
@@ -5,9 +5,8 @@ import { fileURLToPath } from "node:url";
// The conformance kit as requests: every case in machines/ and conformance/, each a request for the testee and the
// answer it must give (conformance/PROTOCOL.md). Engine-independent: nothing here imports the engine.
-const root = fileURLToPath(new URL("../..", import.meta.url));
-const machinesDir = join(root, "machines");
-const conformanceDir = join(root, "conformance");
+const conformanceDir = fileURLToPath(new URL(".", import.meta.url));
+const machinesDir = join(conformanceDir, "machines");
const readJson = (path) => JSON.parse(readFileSync(path, "utf8"));
diff --git a/Trax.Api.StateMachine/machines/checkout/checkout.ir.json b/Trax.StateMachine/conformance/machines/checkout/checkout.ir.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/checkout.ir.json
rename to Trax.StateMachine/conformance/machines/checkout/checkout.ir.json
diff --git a/Trax.Api.StateMachine/machines/checkout/differential.json b/Trax.StateMachine/conformance/machines/checkout/differential.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/differential.json
rename to Trax.StateMachine/conformance/machines/checkout/differential.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/advance/01-cart-next-reviews.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/advance/01-cart-next-reviews.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/advance/01-cart-next-reviews.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/advance/01-cart-next-reviews.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/advance/02-cart-next-empty-guard-failed.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/advance/02-cart-next-empty-guard-failed.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/advance/02-cart-next-empty-guard-failed.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/advance/02-cart-next-empty-guard-failed.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/advance/03-review-pay-pays.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/advance/03-review-pay-pays.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/advance/03-review-pay-pays.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/advance/03-review-pay-pays.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/advance/04-review-pay-no-receipt-invalid-input.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/advance/04-review-pay-no-receipt-invalid-input.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/advance/04-review-pay-no-receipt-invalid-input.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/advance/04-review-pay-no-receipt-invalid-input.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/advance/05-review-back-to-cart.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/advance/05-review-back-to-cart.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/advance/05-review-back-to-cart.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/advance/05-review-back-to-cart.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/advance/06-paid-restart-fresh.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/advance/06-paid-restart-fresh.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/advance/06-paid-restart-fresh.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/advance/06-paid-restart-fresh.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/advance/pay-missing-input.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/advance/pay-missing-input.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/advance/pay-missing-input.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/advance/pay-missing-input.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/advance/pay-number-as-string.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/advance/pay-number-as-string.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/advance/pay-number-as-string.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/advance/pay-number-as-string.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/advance/pay-proto-key.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/advance/pay-proto-key.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/advance/pay-proto-key.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/advance/pay-proto-key.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/advance/pay-unknown-field.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/advance/pay-unknown-field.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/advance/pay-unknown-field.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/advance/pay-unknown-field.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/01-valid-cart.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/01-valid-cart.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/01-valid-cart.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/01-valid-cart.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/02-valid-review.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/02-valid-review.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/02-valid-review.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/02-valid-review.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/03-valid-paid.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/03-valid-paid.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/03-valid-paid.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/03-valid-paid.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/04-invalid-paid-no-receipt.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/04-invalid-paid-no-receipt.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/04-invalid-paid-no-receipt.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/04-invalid-paid-no-receipt.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/05-invalid-review-empty-items.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/05-invalid-review-empty-items.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/05-invalid-review-empty-items.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/05-invalid-review-empty-items.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/06-version-mismatch.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/06-version-mismatch.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/06-version-mismatch.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/06-version-mismatch.json
diff --git a/Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/07-unknown-state.json b/Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/07-unknown-state.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/fixtures/rehydrate/07-unknown-state.json
rename to Trax.StateMachine/conformance/machines/checkout/fixtures/rehydrate/07-unknown-state.json
diff --git a/Trax.Api.StateMachine/machines/checkout/structure.json b/Trax.StateMachine/conformance/machines/checkout/structure.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/structure.json
rename to Trax.StateMachine/conformance/machines/checkout/structure.json
diff --git a/Trax.Api.StateMachine/machines/checkout/wire-handoff.json b/Trax.StateMachine/conformance/machines/checkout/wire-handoff.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/checkout/wire-handoff.json
rename to Trax.StateMachine/conformance/machines/checkout/wire-handoff.json
diff --git a/Trax.Api.StateMachine/machines/gauge/differential.json b/Trax.StateMachine/conformance/machines/gauge/differential.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/gauge/differential.json
rename to Trax.StateMachine/conformance/machines/gauge/differential.json
diff --git a/Trax.Api.StateMachine/machines/gauge/gauge.ir.json b/Trax.StateMachine/conformance/machines/gauge/gauge.ir.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/gauge/gauge.ir.json
rename to Trax.StateMachine/conformance/machines/gauge/gauge.ir.json
diff --git a/Trax.Api.StateMachine/machines/ingest/differential.json b/Trax.StateMachine/conformance/machines/ingest/differential.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/ingest/differential.json
rename to Trax.StateMachine/conformance/machines/ingest/differential.json
diff --git a/Trax.Api.StateMachine/machines/ingest/ingest.ir.json b/Trax.StateMachine/conformance/machines/ingest/ingest.ir.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/ingest/ingest.ir.json
rename to Trax.StateMachine/conformance/machines/ingest/ingest.ir.json
diff --git a/Trax.Api.StateMachine/machines/reminder/differential.json b/Trax.StateMachine/conformance/machines/reminder/differential.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/reminder/differential.json
rename to Trax.StateMachine/conformance/machines/reminder/differential.json
diff --git a/Trax.Api.StateMachine/machines/reminder/reminder.ir.json b/Trax.StateMachine/conformance/machines/reminder/reminder.ir.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/reminder/reminder.ir.json
rename to Trax.StateMachine/conformance/machines/reminder/reminder.ir.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/differential.json b/Trax.StateMachine/conformance/machines/turnstile/differential.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/differential.json
rename to Trax.StateMachine/conformance/machines/turnstile/differential.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/advance/01-locked-coin-quarter-unlocks.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/01-locked-coin-quarter-unlocks.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/advance/01-locked-coin-quarter-unlocks.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/01-locked-coin-quarter-unlocks.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/advance/02-locked-coin-dollar-unlocks.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/02-locked-coin-dollar-unlocks.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/advance/02-locked-coin-dollar-unlocks.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/02-locked-coin-dollar-unlocks.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/advance/03-locked-coin-penny-guard-failed.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/03-locked-coin-penny-guard-failed.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/advance/03-locked-coin-penny-guard-failed.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/03-locked-coin-penny-guard-failed.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/advance/04-locked-push-no-transition.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/04-locked-push-no-transition.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/advance/04-locked-push-no-transition.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/04-locked-push-no-transition.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/advance/05-unlocked-coin-no-transition.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/05-unlocked-coin-no-transition.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/advance/05-unlocked-coin-no-transition.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/05-unlocked-coin-no-transition.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/advance/06-unlocked-push-locks-and-clears.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/06-unlocked-push-locks-and-clears.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/advance/06-unlocked-push-locks-and-clears.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/06-unlocked-push-locks-and-clears.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/advance/coin-missing-input.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/coin-missing-input.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/advance/coin-missing-input.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/coin-missing-input.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/advance/coin-number-as-string.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/coin-number-as-string.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/advance/coin-number-as-string.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/coin-number-as-string.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/advance/coin-proto-key.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/coin-proto-key.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/advance/coin-proto-key.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/coin-proto-key.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/advance/coin-unknown-field.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/coin-unknown-field.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/advance/coin-unknown-field.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/advance/coin-unknown-field.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/01-valid-locked.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/01-valid-locked.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/01-valid-locked.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/01-valid-locked.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/02-valid-unlocked.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/02-valid-unlocked.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/02-valid-unlocked.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/02-valid-unlocked.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/03-malformed.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/03-malformed.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/03-malformed.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/03-malformed.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/04-unknown-machine.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/04-unknown-machine.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/04-unknown-machine.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/04-unknown-machine.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/05-version-mismatch.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/05-version-mismatch.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/05-version-mismatch.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/05-version-mismatch.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/06-unknown-state.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/06-unknown-state.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/06-unknown-state.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/06-unknown-state.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/07-invalid-context-missing.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/07-invalid-context-missing.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/07-invalid-context-missing.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/07-invalid-context-missing.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/08-invalid-context-forbidden.json b/Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/08-invalid-context-forbidden.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/fixtures/rehydrate/08-invalid-context-forbidden.json
rename to Trax.StateMachine/conformance/machines/turnstile/fixtures/rehydrate/08-invalid-context-forbidden.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/migration.json b/Trax.StateMachine/conformance/machines/turnstile/migration.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/migration.json
rename to Trax.StateMachine/conformance/machines/turnstile/migration.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/structure.json b/Trax.StateMachine/conformance/machines/turnstile/structure.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/structure.json
rename to Trax.StateMachine/conformance/machines/turnstile/structure.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/turnstile.ir.json b/Trax.StateMachine/conformance/machines/turnstile/turnstile.ir.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/turnstile.ir.json
rename to Trax.StateMachine/conformance/machines/turnstile/turnstile.ir.json
diff --git a/Trax.Api.StateMachine/machines/turnstile/wire-handoff.json b/Trax.StateMachine/conformance/machines/turnstile/wire-handoff.json
similarity index 100%
rename from Trax.Api.StateMachine/machines/turnstile/wire-handoff.json
rename to Trax.StateMachine/conformance/machines/turnstile/wire-handoff.json
diff --git a/Trax.Api.StateMachine/conformance/refusal-codes.json b/Trax.StateMachine/conformance/refusal-codes.json
similarity index 100%
rename from Trax.Api.StateMachine/conformance/refusal-codes.json
rename to Trax.StateMachine/conformance/refusal-codes.json
diff --git a/Trax.Api.StateMachine/tools/conformance/run.mjs b/Trax.StateMachine/conformance/run.mjs
similarity index 97%
rename from Trax.Api.StateMachine/tools/conformance/run.mjs
rename to Trax.StateMachine/conformance/run.mjs
index fae79ef0c..16d2021c1 100644
--- a/Trax.Api.StateMachine/tools/conformance/run.mjs
+++ b/Trax.StateMachine/conformance/run.mjs
@@ -4,7 +4,7 @@ import { fileURLToPath } from "node:url";
import { canonical, kitCases } from "./kit.mjs";
const USAGE =
- "Usage: node tools/conformance/run.mjs [--only ] (--testee [args...] | --stdio)\n" +
+ "Usage: node conformance/run.mjs [--only ] (--testee [args...] | --stdio)\n" +
"See conformance/PROTOCOL.md.";
/**
diff --git a/Trax.Api.StateMachine/conformance/strict-input/cases.json b/Trax.StateMachine/conformance/strict-input/cases.json
similarity index 100%
rename from Trax.Api.StateMachine/conformance/strict-input/cases.json
rename to Trax.StateMachine/conformance/strict-input/cases.json
diff --git a/Trax.Api.StateMachine/conformance/strict-input/strict.ir.json b/Trax.StateMachine/conformance/strict-input/strict.ir.json
similarity index 100%
rename from Trax.Api.StateMachine/conformance/strict-input/strict.ir.json
rename to Trax.StateMachine/conformance/strict-input/strict.ir.json
diff --git a/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/IrExporter.cs b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/IrExporter.cs
index 21c62abe6..c9cdfe198 100644
--- a/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/IrExporter.cs
+++ b/Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/IrExporter.cs
@@ -16,7 +16,7 @@ public static class IrExporter
/// The IR format this exporter writes: the contract the TypeScript engine reads it by. A twin generated with
/// specifier imports records it, and the installed @traxsharp/state-machine refuses a format it cannot
/// read. It is not written into the IR, so it moves no committed ir.json and no schema hash. Bump it,
- /// with irFormatVersion in Trax.Api.StateMachine/src/rules/irFormat.ts, when the IR gains
+ /// with irFormatVersion in Trax.StateMachine/ts/src/rules/irFormat.ts, when the IR gains
/// something an engine reading the previous format would misread or ignore; IrFormatParityTests holds
/// the two equal.
///
diff --git a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceRunnerTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceRunnerTests.cs
index c0d0026d3..6a1a8ace2 100644
--- a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceRunnerTests.cs
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/ConformanceRunnerTests.cs
@@ -5,9 +5,10 @@ namespace Trax.Effect.StateMachine.Tests.Conformance;
///
/// The C# engine through the conformance runner, the same runner and the same cases every other engine is checked
-/// with (Trax.Api.StateMachine/conformance/PROTOCOL.md). The runner is started with --stdio and this
+/// with (Trax.StateMachine/conformance/PROTOCOL.md). The runner is started with --stdio and this
/// process answers its requests, so no separate C# executable is needed.
///
+[Category(Categories.CrossEngine)]
public class ConformanceRunnerTests
{
[Test]
diff --git a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/FixturePathsTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/FixturePathsTests.cs
index 84ce13939..4dfc66c5b 100644
--- a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/FixturePathsTests.cs
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/FixturePathsTests.cs
@@ -4,7 +4,7 @@
namespace Trax.Effect.StateMachine.Tests.Conformance;
///
-/// The conformance tests read Trax.Api.StateMachine/machines, which is part of the repository. A build that
+/// The conformance tests read Trax.StateMachine/conformance/machines, which is part of the repository. A build that
/// cannot find it must fail them rather than skip them, or every cross-engine check reports green unchecked.
///
public class FixturePathsTests
@@ -20,7 +20,7 @@ public void A_directory_with_no_machines_folder_above_it_throws_naming_where_it_
find.Should()
.Throw()
- .WithMessage($"*{Path.Combine(start, "Trax.Api.StateMachine", "machines")}*");
+ .WithMessage($"*{Path.Combine(start, "Trax.StateMachine", "conformance", "machines")}*");
}
finally
{
diff --git a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/IrFormatParityTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/IrFormatParityTests.cs
index 758457f8a..1b0d81569 100644
--- a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/IrFormatParityTests.cs
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/IrFormatParityTests.cs
@@ -6,17 +6,18 @@ namespace Trax.Effect.StateMachine.Tests.Conformance;
///
/// The IR format is the contract between the IR this engine exports and the TypeScript engine that reads it. A twin
-/// records the TypeScript side's irFormatVersion (in Trax.Api.StateMachine/src/rules/irFormat.ts), and
+/// records the TypeScript side's irFormatVersion (in Trax.StateMachine/ts/src/rules/irFormat.ts), and
/// an installed engine refuses a format it cannot read, so the two sides must name the same format: a change to
/// what writes that bumps one bumps both.
///
+[Category(Categories.CrossEngine)]
public partial class IrFormatParityTests
{
[Test]
public void The_TypeScript_engine_reads_the_IR_format_this_engine_exports()
{
var irFormatTs = Path.Combine(
- Directory.GetParent(FixturePaths.MachinesRoot)!.FullName,
+ FixturePaths.TypeScriptEngineRoot,
"src",
"rules",
"irFormat.ts"
diff --git a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/IrSchemaTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/IrSchemaTests.cs
index 0f54f7f08..d384b6e9e 100644
--- a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/IrSchemaTests.cs
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Conformance/IrSchemaTests.cs
@@ -13,6 +13,7 @@ namespace Trax.Effect.StateMachine.Tests.Conformance;
public class IrSchemaTests
{
[Test]
+ [Category(Categories.CrossEngine)]
public void Every_IR_the_exporter_writes_for_the_test_machines_validates()
{
var irs = ExportedIrs();
diff --git a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/StrictInputParityTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/StrictInputParityTests.cs
index 15cf86e53..f656df43c 100644
--- a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/StrictInputParityTests.cs
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/StrictInputParityTests.cs
@@ -13,6 +13,7 @@ namespace Trax.Effect.StateMachine.Tests.Differential;
/// refuse though the CLR reads it says why, and is checked to be one the CLR does read.
///
[Property("adr", Adr)]
+[Category(Categories.CrossEngine)]
public class StrictInputParityTests
{
private const string Adr =
diff --git a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/TwinSequenceParityTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/TwinSequenceParityTests.cs
index 758848dc2..618c9f43b 100644
--- a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/TwinSequenceParityTests.cs
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Differential/TwinSequenceParityTests.cs
@@ -11,11 +11,12 @@ namespace Trax.Effect.StateMachine.Tests.Differential;
///
/// Random sequences of events, outcomes and timers, run through the C# engine here and through the TypeScript
-/// twin by Trax.Api.StateMachine/tools/replay-sequences.mjs: the canonical snapshot and the answer agree
+/// twin by Trax.StateMachine/ts/tools/replay-sequences.mjs: the canonical snapshot and the answer agree
/// after every step, and both engines refuse an outcome or a timer trigger sent through advance. Skipped
/// at runtime when node, or the engine's installed dependencies, are absent.
///
[Property("adr", UnitTests.TriggerInputValidationTests.Adr)]
+[Category(Categories.CrossEngine)]
public class TwinSequenceParityTests
{
private const string Adr = UnitTests.TriggerInputValidationTests.Adr;
@@ -241,7 +242,7 @@ public void Random_event_sequences_with_timers_fired_at_random_points_agree()
if (!NodeIsAvailable())
Unavailable("node is not on PATH.");
var machinesRoot = FixturePaths.MachinesRoot;
- var engineRoot = Directory.GetParent(machinesRoot)!.FullName;
+ var engineRoot = FixturePaths.TypeScriptEngineRoot;
// An empty request first: it skips the test when the engine's dependencies are absent, which cannot be
// done from inside a sample.
@@ -389,7 +390,7 @@ private static string RunTool(string engineRoot, string request)
if (process.ExitCode == MissingDependencies)
Unavailable(
- "The engine's dependencies are not installed (npm ci in Trax.Api.StateMachine)."
+ "The engine's dependencies are not installed (npm ci in Trax.StateMachine/ts)."
);
process
.ExitCode.Should()
diff --git a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestMachine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestMachine.cs
index 10bc8125d..2cdab5f6b 100644
--- a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestMachine.cs
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Fakes/IngestMachine.cs
@@ -28,7 +28,7 @@ public enum IngestTrigger
/// One stage of an ingest: Fetching invokes , a sure output goes to
/// Fetched, an unsure one to NeedsReview, a failure to FetchFailed (retried by entering
/// Fetching again) and a cancel to Cancelled. Its IR is committed under
-/// Trax.Api.StateMachine/machines/ingest/, and the TypeScript twin's differential corpus of it is replayed
+/// Trax.StateMachine/conformance/machines/ingest/, and the TypeScript twin's differential corpus of it is replayed
/// here.
///
public static class IngestMachine
diff --git a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/Categories.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/Categories.cs
new file mode 100644
index 000000000..353ebb72b
--- /dev/null
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/Categories.cs
@@ -0,0 +1,12 @@
+namespace Trax.Effect.StateMachine.Tests.Helpers;
+
+/// The test categories CI selects on.
+public static class Categories
+{
+ ///
+ /// A test that runs or reads the TypeScript engine in Trax.StateMachine/ts, so a change on either side
+ /// can break it. CI runs these in the conformance suite, which runs for a change anywhere in the folder; the C#
+ /// suite leaves them out, so a change to the TypeScript engine alone does not rebuild the C# one.
+ ///
+ public const string CrossEngine = "CrossEngine";
+}
diff --git a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/ConformanceTestee.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/ConformanceTestee.cs
index d2760c87b..afa0ab145 100644
--- a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/ConformanceTestee.cs
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/ConformanceTestee.cs
@@ -4,7 +4,7 @@
namespace Trax.Effect.StateMachine.Tests.Helpers;
///
-/// The C# engine as a conformance testee (Trax.Api.StateMachine/conformance/PROTOCOL.md). It cannot build a
+/// The C# engine as a conformance testee (Trax.StateMachine/conformance/PROTOCOL.md). It cannot build a
/// machine from an IR, so it serves the test machines whose IRs the kit holds, by name, and a load checks that
/// the IR it is given is the one its machine exports, apart from the test-only differential block: a committed IR
/// that drifted from its C# source fails there.
diff --git a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/FixturePaths.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/FixturePaths.cs
index d2f661fe1..38f300f4f 100644
--- a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/FixturePaths.cs
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/FixturePaths.cs
@@ -1,7 +1,8 @@
namespace Trax.Effect.StateMachine.Tests.Helpers;
///
-/// Locates the shared, language-neutral fixtures in Trax.Api.StateMachine/machines, which both engines drive.
+/// Locates the shared, language-neutral fixtures in Trax.StateMachine/conformance/machines, which both engines
+/// drive, and the TypeScript engine beside them in Trax.StateMachine/ts.
/// The folder is part of the repository, so a build that cannot find it is broken: every member throws rather than
/// letting the conformance tests skip, which would report green without comparing the engines.
///
@@ -30,8 +31,13 @@ public static string IrFile(string machine) =>
/// The engine-neutral conformance kit beside machines/: tables and cases any engine, in any language,
/// replays.
///
- public static string ConformanceRoot =>
- Path.Combine(Directory.GetParent(MachinesRoot)!.FullName, "conformance");
+ public static string ConformanceRoot => Directory.GetParent(MachinesRoot)!.FullName;
+
+ /// The folder that holds the conformance kit and every engine, Trax.StateMachine/.
+ public static string FolderRoot => Directory.GetParent(ConformanceRoot)!.FullName;
+
+ /// The TypeScript engine, Trax.StateMachine/ts.
+ public static string TypeScriptEngineRoot => Path.Combine(FolderRoot, "ts");
/// The shared migration golden for a machine: stored older-version snapshots and the exact
/// canonical wire each must become after forward migration.
@@ -40,7 +46,7 @@ public static string MigrationFile(string machine) =>
///
/// Walks up from to the first directory holding
- /// Trax.Api.StateMachine/machines/turnstile/fixtures, and throws, naming every directory it tried, when
+ /// Trax.StateMachine/conformance/machines/turnstile/fixtures, and throws, naming every directory it tried, when
/// there is none.
///
public static string Find(string start)
@@ -49,7 +55,7 @@ public static string Find(string start)
var dir = new DirectoryInfo(start);
while (dir is not null)
{
- var candidate = Path.Combine(dir.FullName, "Trax.Api.StateMachine", "machines");
+ var candidate = Path.Combine(dir.FullName, "Trax.StateMachine", "conformance", "machines");
if (Directory.Exists(Path.Combine(candidate, "turnstile", "fixtures")))
return candidate;
searched.Add(candidate);
@@ -57,7 +63,7 @@ public static string Find(string start)
}
throw new DirectoryNotFoundException(
- "The shared state-machine fixtures (Trax.Api.StateMachine/machines) were not found. They are part of the "
+ "The shared state-machine fixtures (Trax.StateMachine/conformance/machines) were not found. They are part of the "
+ "repository, so the build or the copy that ran these tests left them out. Searched: "
+ string.Join(", ", searched)
);
diff --git a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/TwinEngine.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/TwinEngine.cs
index 0902d1c0e..66ff5e0b4 100644
--- a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/TwinEngine.cs
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/Helpers/TwinEngine.cs
@@ -6,7 +6,7 @@
namespace Trax.Effect.StateMachine.Tests.Helpers;
///
-/// The TypeScript twin, run from a C# test: Trax.Api.StateMachine/tools/replay-sequences.mjs bundles the
+/// The TypeScript twin, run from a C# test: Trax.StateMachine/ts/tools/replay-sequences.mjs bundles the
/// engine's source with esbuild and replays one-step-or-longer sequences against a machine built from its IR,
/// answering each step's outcome, reason and canonical wire. When node, the engine's source or its installed
/// dependencies are missing, the test is skipped on a developer's machine and fails under CI (the CI
@@ -114,16 +114,16 @@ public static IReadOnlyList> ValidateIrs(IReadOnlyList
- /// Runs the conformance runner (tools/conformance/run.mjs --stdio) with as its
+ /// Runs the conformance runner (conformance/run.mjs --stdio) with as its
/// testee: each request line the runner writes is answered with the line returns.
/// Returns the runner's exit code (0 when every case passed) and its report.
///
public static (int ExitCode, string Report) RunConformance(Func answer)
{
- var engineRoot = EngineRoot();
- var start = new ProcessStartInfo("node", "tools/conformance/run.mjs --stdio")
+ EngineRoot();
+ var start = new ProcessStartInfo("node", "conformance/run.mjs --stdio")
{
- WorkingDirectory = engineRoot,
+ WorkingDirectory = FixturePaths.FolderRoot,
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
@@ -144,7 +144,7 @@ public static (int ExitCode, string Report) RunConformance(Func
if (!conversation.Wait(NodeTimeout) || !process.WaitForExit(NodeTimeout))
{
process.Kill(entireProcessTree: true);
- Assert.Fail($"tools/conformance/run.mjs did not finish within {NodeTimeout}.");
+ Assert.Fail($"conformance/run.mjs did not finish within {NodeTimeout}.");
}
return (process.ExitCode, stderr.GetAwaiter().GetResult());
}
@@ -153,7 +153,7 @@ private static string EngineRoot()
{
if (!NodeIsAvailable())
Unavailable("node is not on PATH.");
- return Directory.GetParent(FixturePaths.MachinesRoot)!.FullName;
+ return FixturePaths.TypeScriptEngineRoot;
}
// Skips the test on a developer's machine; fails it under CI, where the engine is always installed.
@@ -161,7 +161,7 @@ private static void Unavailable(string why)
{
if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("CI")))
Assert.Fail(
- $"The TypeScript twin cannot run: {why} CI installs it (npm ci in Trax.Api.StateMachine), so a "
+ $"The TypeScript twin cannot run: {why} CI installs it (npm ci in Trax.StateMachine/ts), so a "
+ "parity test that skips there proves nothing."
);
Assert.Ignore($"The TypeScript twin cannot run: {why} Skipping the cross-engine check.");
@@ -191,7 +191,7 @@ private static string Run(string engineRoot, string script, string request)
}
if (process.ExitCode == MissingDependencies)
- Unavailable("its dependencies are not installed (npm ci in Trax.Api.StateMachine).");
+ Unavailable("its dependencies are not installed (npm ci in Trax.StateMachine/ts).");
process.ExitCode.Should().Be(0, $"{script} failed: {stderr.GetAwaiter().GetResult()}");
return stdout.GetAwaiter().GetResult();
}
diff --git a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputPropertyTests.cs b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputPropertyTests.cs
index 3aac1b48d..d933e8328 100644
--- a/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputPropertyTests.cs
+++ b/Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests/UnitTests/TriggerInputPropertyTests.cs
@@ -13,6 +13,7 @@ namespace Trax.Effect.StateMachine.Tests.UnitTests;
/// well, and gets the same verdict there.
///
[Property("adr", TriggerInputValidationTests.Adr)]
+[Category(Categories.CrossEngine)]
public class TriggerInputPropertyTests
{
private const string Adr = TriggerInputValidationTests.Adr;
diff --git a/Trax.Api.StateMachine/.gitignore b/Trax.StateMachine/ts/.gitignore
similarity index 100%
rename from Trax.Api.StateMachine/.gitignore
rename to Trax.StateMachine/ts/.gitignore
diff --git a/Trax.Api.StateMachine/.prettierignore b/Trax.StateMachine/ts/.prettierignore
similarity index 100%
rename from Trax.Api.StateMachine/.prettierignore
rename to Trax.StateMachine/ts/.prettierignore
diff --git a/Trax.Api.StateMachine/AGENTS.md b/Trax.StateMachine/ts/AGENTS.md
similarity index 100%
rename from Trax.Api.StateMachine/AGENTS.md
rename to Trax.StateMachine/ts/AGENTS.md
diff --git a/Trax.Api.StateMachine/README.md b/Trax.StateMachine/ts/README.md
similarity index 98%
rename from Trax.Api.StateMachine/README.md
rename to Trax.StateMachine/ts/README.md
index bf4aefa45..cf94e66f8 100644
--- a/Trax.Api.StateMachine/README.md
+++ b/Trax.StateMachine/ts/README.md
@@ -66,7 +66,7 @@ prediction at once and replaces it with what the server stored. The same machine
## Contributing
-Read [AGENTS.md](https://github.com/TraxSharp/Trax/blob/main/Trax.Api.StateMachine/AGENTS.md) before changing code.
+Read [AGENTS.md](https://github.com/TraxSharp/Trax/blob/main/Trax.StateMachine/ts/AGENTS.md) before changing code.
Report vulnerabilities privately as described in [SECURITY.md](https://github.com/TraxSharp/Trax/blob/main/SECURITY.md).
## License
diff --git a/Trax.Api.StateMachine/docs/design/phase0-codegen-scope.md b/Trax.StateMachine/ts/docs/design/phase0-codegen-scope.md
similarity index 100%
rename from Trax.Api.StateMachine/docs/design/phase0-codegen-scope.md
rename to Trax.StateMachine/ts/docs/design/phase0-codegen-scope.md
diff --git a/Trax.Api.StateMachine/docs/design/tier1-machine-codegen.md b/Trax.StateMachine/ts/docs/design/tier1-machine-codegen.md
similarity index 100%
rename from Trax.Api.StateMachine/docs/design/tier1-machine-codegen.md
rename to Trax.StateMachine/ts/docs/design/tier1-machine-codegen.md
diff --git a/Trax.Api.StateMachine/package-lock.json b/Trax.StateMachine/ts/package-lock.json
similarity index 100%
rename from Trax.Api.StateMachine/package-lock.json
rename to Trax.StateMachine/ts/package-lock.json
diff --git a/Trax.Api.StateMachine/package.json b/Trax.StateMachine/ts/package.json
similarity index 96%
rename from Trax.Api.StateMachine/package.json
rename to Trax.StateMachine/ts/package.json
index 7171d440b..f9a4ed03a 100644
--- a/Trax.Api.StateMachine/package.json
+++ b/Trax.StateMachine/ts/package.json
@@ -7,7 +7,7 @@
"repository": {
"type": "git",
"url": "git+https://github.com/TraxSharp/Trax.git",
- "directory": "Trax.Api.StateMachine"
+ "directory": "Trax.StateMachine/ts"
},
"bugs": {
"url": "https://github.com/TraxSharp/Trax/issues"
@@ -44,7 +44,7 @@
"scripts": {
"build": "tsup",
"bundle:cli": "node tools/bundle-cli.mjs",
- "prepack": "npm run build && node -e \"require('node:fs').copyFileSync('../LICENSE', 'LICENSE')\"",
+ "prepack": "npm run build && node -e \"require('node:fs').copyFileSync('../../LICENSE', 'LICENSE')\"",
"postpack": "node -e \"require('node:fs').rmSync('LICENSE', { force: true })\"",
"test": "vitest run",
"test:watch": "vitest",
diff --git a/Trax.Api.StateMachine/src/__snapshots__/exports.test.ts.snap b/Trax.StateMachine/ts/src/__snapshots__/exports.test.ts.snap
similarity index 100%
rename from Trax.Api.StateMachine/src/__snapshots__/exports.test.ts.snap
rename to Trax.StateMachine/ts/src/__snapshots__/exports.test.ts.snap
diff --git a/Trax.Api.StateMachine/src/canonicalization.conformance.test.ts b/Trax.StateMachine/ts/src/canonicalization.conformance.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/canonicalization.conformance.test.ts
rename to Trax.StateMachine/ts/src/canonicalization.conformance.test.ts
diff --git a/Trax.Api.StateMachine/src/client/client.test.ts b/Trax.StateMachine/ts/src/client/client.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/client/client.test.ts
rename to Trax.StateMachine/ts/src/client/client.test.ts
diff --git a/Trax.Api.StateMachine/src/client/draftSession.ts b/Trax.StateMachine/ts/src/client/draftSession.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/client/draftSession.ts
rename to Trax.StateMachine/ts/src/client/draftSession.ts
diff --git a/Trax.Api.StateMachine/src/client/index.ts b/Trax.StateMachine/ts/src/client/index.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/client/index.ts
rename to Trax.StateMachine/ts/src/client/index.ts
diff --git a/Trax.Api.StateMachine/src/client/machineServer.test.ts b/Trax.StateMachine/ts/src/client/machineServer.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/client/machineServer.test.ts
rename to Trax.StateMachine/ts/src/client/machineServer.test.ts
diff --git a/Trax.Api.StateMachine/src/client/machineServer.ts b/Trax.StateMachine/ts/src/client/machineServer.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/client/machineServer.ts
rename to Trax.StateMachine/ts/src/client/machineServer.ts
diff --git a/Trax.Api.StateMachine/src/client/machines.test.ts b/Trax.StateMachine/ts/src/client/machines.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/client/machines.test.ts
rename to Trax.StateMachine/ts/src/client/machines.test.ts
diff --git a/Trax.Api.StateMachine/src/client/machines.ts b/Trax.StateMachine/ts/src/client/machines.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/client/machines.ts
rename to Trax.StateMachine/ts/src/client/machines.ts
diff --git a/Trax.Api.StateMachine/src/client/transport.ts b/Trax.StateMachine/ts/src/client/transport.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/client/transport.ts
rename to Trax.StateMachine/ts/src/client/transport.ts
diff --git a/Trax.Api.StateMachine/src/clientFormat.test.ts b/Trax.StateMachine/ts/src/clientFormat.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/clientFormat.test.ts
rename to Trax.StateMachine/ts/src/clientFormat.test.ts
diff --git a/Trax.Api.StateMachine/src/clientFormat.ts b/Trax.StateMachine/ts/src/clientFormat.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/clientFormat.ts
rename to Trax.StateMachine/ts/src/clientFormat.ts
diff --git a/Trax.Api.StateMachine/src/controller.ts b/Trax.StateMachine/ts/src/controller.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/controller.ts
rename to Trax.StateMachine/ts/src/controller.ts
diff --git a/Trax.Api.StateMachine/src/dependencies.test.ts b/Trax.StateMachine/ts/src/dependencies.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/dependencies.test.ts
rename to Trax.StateMachine/ts/src/dependencies.test.ts
diff --git a/Trax.Api.StateMachine/src/devtools.test.ts b/Trax.StateMachine/ts/src/devtools.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/devtools.test.ts
rename to Trax.StateMachine/ts/src/devtools.test.ts
diff --git a/Trax.Api.StateMachine/src/devtools.ts b/Trax.StateMachine/ts/src/devtools.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/devtools.ts
rename to Trax.StateMachine/ts/src/devtools.ts
diff --git a/Trax.Api.StateMachine/src/differential.entrypoints.test.ts b/Trax.StateMachine/ts/src/differential.entrypoints.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/differential.entrypoints.test.ts
rename to Trax.StateMachine/ts/src/differential.entrypoints.test.ts
diff --git a/Trax.Api.StateMachine/src/differential.enumerate.test.ts b/Trax.StateMachine/ts/src/differential.enumerate.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/differential.enumerate.test.ts
rename to Trax.StateMachine/ts/src/differential.enumerate.test.ts
diff --git a/Trax.Api.StateMachine/src/differential.test.ts b/Trax.StateMachine/ts/src/differential.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/differential.test.ts
rename to Trax.StateMachine/ts/src/differential.test.ts
diff --git a/Trax.Api.StateMachine/src/differential.timers.test.ts b/Trax.StateMachine/ts/src/differential.timers.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/differential.timers.test.ts
rename to Trax.StateMachine/ts/src/differential.timers.test.ts
diff --git a/Trax.Api.StateMachine/src/differential.ts b/Trax.StateMachine/ts/src/differential.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/differential.ts
rename to Trax.StateMachine/ts/src/differential.ts
diff --git a/Trax.Api.StateMachine/src/duration.ts b/Trax.StateMachine/ts/src/duration.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/duration.ts
rename to Trax.StateMachine/ts/src/duration.ts
diff --git a/Trax.Api.StateMachine/src/exports.test.ts b/Trax.StateMachine/ts/src/exports.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/exports.test.ts
rename to Trax.StateMachine/ts/src/exports.test.ts
diff --git a/Trax.Api.StateMachine/src/fixtures.ts b/Trax.StateMachine/ts/src/fixtures.ts
similarity index 84%
rename from Trax.Api.StateMachine/src/fixtures.ts
rename to Trax.StateMachine/ts/src/fixtures.ts
index b1ee1e29e..fc2b66846 100644
--- a/Trax.Api.StateMachine/src/fixtures.ts
+++ b/Trax.StateMachine/ts/src/fixtures.ts
@@ -10,13 +10,10 @@ import { fileURLToPath } from "node:url";
function machinesRoot(): string {
let dir = path.dirname(fileURLToPath(import.meta.url));
for (let i = 0; i < 10; i++) {
- // The repo root is the directory that holds both package.json and the shared machines/ tree —
- // this disambiguates it from the src/machines/ code directory of the same shape.
- if (
- fs.existsSync(path.join(dir, "package.json")) &&
- fs.existsSync(path.join(dir, "machines"))
- ) {
- return path.join(dir, "machines");
+ // The folder that holds the conformance kit, whose machines/ tree is the shared one; src/machines/
+ // is the code directory of the same name.
+ if (fs.existsSync(path.join(dir, "conformance", "machines"))) {
+ return path.join(dir, "conformance", "machines");
}
const parent = path.dirname(dir);
if (parent === dir) break;
@@ -64,6 +61,6 @@ export function rehydrateInput(fixture: Record): string {
if (typeof fixture.raw === "string") return fixture.raw;
return JSON.stringify(fixture.json);
}
-/** A file of the engine-neutral conformance kit, `conformance/` beside `machines/`. */
+/** A file of the engine-neutral conformance kit, `conformance/`, which holds `machines/`. */
export const conformanceFile = (...parts: string[]): string =>
- path.join(path.dirname(machinesRoot()), "conformance", ...parts);
+ path.join(path.dirname(machinesRoot()), ...parts);
diff --git a/Trax.Api.StateMachine/src/formView.test.ts b/Trax.StateMachine/ts/src/formView.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/formView.test.ts
rename to Trax.StateMachine/ts/src/formView.test.ts
diff --git a/Trax.Api.StateMachine/src/formView.ts b/Trax.StateMachine/ts/src/formView.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/formView.ts
rename to Trax.StateMachine/ts/src/formView.ts
diff --git a/Trax.Api.StateMachine/src/index.ts b/Trax.StateMachine/ts/src/index.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/index.ts
rename to Trax.StateMachine/ts/src/index.ts
diff --git a/Trax.Api.StateMachine/src/irSchema.conformance.test.ts b/Trax.StateMachine/ts/src/irSchema.conformance.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/irSchema.conformance.test.ts
rename to Trax.StateMachine/ts/src/irSchema.conformance.test.ts
diff --git a/Trax.Api.StateMachine/src/machine.contract.test.ts b/Trax.StateMachine/ts/src/machine.contract.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machine.contract.test.ts
rename to Trax.StateMachine/ts/src/machine.contract.test.ts
diff --git a/Trax.Api.StateMachine/src/machine.inputTotality.test.ts b/Trax.StateMachine/ts/src/machine.inputTotality.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machine.inputTotality.test.ts
rename to Trax.StateMachine/ts/src/machine.inputTotality.test.ts
diff --git a/Trax.Api.StateMachine/src/machine.totality.test.ts b/Trax.StateMachine/ts/src/machine.totality.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machine.totality.test.ts
rename to Trax.StateMachine/ts/src/machine.totality.test.ts
diff --git a/Trax.Api.StateMachine/src/machine.ts b/Trax.StateMachine/ts/src/machine.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machine.ts
rename to Trax.StateMachine/ts/src/machine.ts
diff --git a/Trax.Api.StateMachine/src/machines/checkout/checkout.contexts.g.ts b/Trax.StateMachine/ts/src/machines/checkout/checkout.contexts.g.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/checkout/checkout.contexts.g.ts
rename to Trax.StateMachine/ts/src/machines/checkout/checkout.contexts.g.ts
diff --git a/Trax.Api.StateMachine/src/machines/checkout/checkout.machine.g.ts b/Trax.StateMachine/ts/src/machines/checkout/checkout.machine.g.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/checkout/checkout.machine.g.ts
rename to Trax.StateMachine/ts/src/machines/checkout/checkout.machine.g.ts
diff --git a/Trax.Api.StateMachine/src/machines/checkout/checkout.ts b/Trax.StateMachine/ts/src/machines/checkout/checkout.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/checkout/checkout.ts
rename to Trax.StateMachine/ts/src/machines/checkout/checkout.ts
diff --git a/Trax.Api.StateMachine/src/machines/checkout/conformance.test.ts b/Trax.StateMachine/ts/src/machines/checkout/conformance.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/checkout/conformance.test.ts
rename to Trax.StateMachine/ts/src/machines/checkout/conformance.test.ts
diff --git a/Trax.Api.StateMachine/src/machines/checkout/roundtrip.test.ts b/Trax.StateMachine/ts/src/machines/checkout/roundtrip.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/checkout/roundtrip.test.ts
rename to Trax.StateMachine/ts/src/machines/checkout/roundtrip.test.ts
diff --git a/Trax.Api.StateMachine/src/machines/gauge/gauge.contexts.g.ts b/Trax.StateMachine/ts/src/machines/gauge/gauge.contexts.g.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/gauge/gauge.contexts.g.ts
rename to Trax.StateMachine/ts/src/machines/gauge/gauge.contexts.g.ts
diff --git a/Trax.Api.StateMachine/src/machines/gauge/gauge.machine.g.ts b/Trax.StateMachine/ts/src/machines/gauge/gauge.machine.g.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/gauge/gauge.machine.g.ts
rename to Trax.StateMachine/ts/src/machines/gauge/gauge.machine.g.ts
diff --git a/Trax.Api.StateMachine/src/machines/gauge/gauge.ts b/Trax.StateMachine/ts/src/machines/gauge/gauge.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/gauge/gauge.ts
rename to Trax.StateMachine/ts/src/machines/gauge/gauge.ts
diff --git a/Trax.Api.StateMachine/src/machines/ingest/ingest.contexts.g.ts b/Trax.StateMachine/ts/src/machines/ingest/ingest.contexts.g.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/ingest/ingest.contexts.g.ts
rename to Trax.StateMachine/ts/src/machines/ingest/ingest.contexts.g.ts
diff --git a/Trax.Api.StateMachine/src/machines/ingest/ingest.machine.g.ts b/Trax.StateMachine/ts/src/machines/ingest/ingest.machine.g.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/ingest/ingest.machine.g.ts
rename to Trax.StateMachine/ts/src/machines/ingest/ingest.machine.g.ts
diff --git a/Trax.Api.StateMachine/src/machines/ingest/ingest.ts b/Trax.StateMachine/ts/src/machines/ingest/ingest.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/ingest/ingest.ts
rename to Trax.StateMachine/ts/src/machines/ingest/ingest.ts
diff --git a/Trax.Api.StateMachine/src/machines/ingest/outcomes.test.ts b/Trax.StateMachine/ts/src/machines/ingest/outcomes.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/ingest/outcomes.test.ts
rename to Trax.StateMachine/ts/src/machines/ingest/outcomes.test.ts
diff --git a/Trax.Api.StateMachine/src/machines/reminder/reminder.contexts.g.ts b/Trax.StateMachine/ts/src/machines/reminder/reminder.contexts.g.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/reminder/reminder.contexts.g.ts
rename to Trax.StateMachine/ts/src/machines/reminder/reminder.contexts.g.ts
diff --git a/Trax.Api.StateMachine/src/machines/reminder/reminder.machine.g.ts b/Trax.StateMachine/ts/src/machines/reminder/reminder.machine.g.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/reminder/reminder.machine.g.ts
rename to Trax.StateMachine/ts/src/machines/reminder/reminder.machine.g.ts
diff --git a/Trax.Api.StateMachine/src/machines/reminder/reminder.ts b/Trax.StateMachine/ts/src/machines/reminder/reminder.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/reminder/reminder.ts
rename to Trax.StateMachine/ts/src/machines/reminder/reminder.ts
diff --git a/Trax.Api.StateMachine/src/machines/reminder/timers.test.ts b/Trax.StateMachine/ts/src/machines/reminder/timers.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/reminder/timers.test.ts
rename to Trax.StateMachine/ts/src/machines/reminder/timers.test.ts
diff --git a/Trax.Api.StateMachine/src/machines/turnstile/conformance.test.ts b/Trax.StateMachine/ts/src/machines/turnstile/conformance.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/turnstile/conformance.test.ts
rename to Trax.StateMachine/ts/src/machines/turnstile/conformance.test.ts
diff --git a/Trax.Api.StateMachine/src/machines/turnstile/controller.test.ts b/Trax.StateMachine/ts/src/machines/turnstile/controller.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/turnstile/controller.test.ts
rename to Trax.StateMachine/ts/src/machines/turnstile/controller.test.ts
diff --git a/Trax.Api.StateMachine/src/machines/turnstile/migration.test.ts b/Trax.StateMachine/ts/src/machines/turnstile/migration.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/turnstile/migration.test.ts
rename to Trax.StateMachine/ts/src/machines/turnstile/migration.test.ts
diff --git a/Trax.Api.StateMachine/src/machines/turnstile/roundtrip.test.ts b/Trax.StateMachine/ts/src/machines/turnstile/roundtrip.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/turnstile/roundtrip.test.ts
rename to Trax.StateMachine/ts/src/machines/turnstile/roundtrip.test.ts
diff --git a/Trax.Api.StateMachine/src/machines/turnstile/totality.test.ts b/Trax.StateMachine/ts/src/machines/turnstile/totality.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/turnstile/totality.test.ts
rename to Trax.StateMachine/ts/src/machines/turnstile/totality.test.ts
diff --git a/Trax.Api.StateMachine/src/machines/turnstile/turnstile.contexts.g.ts b/Trax.StateMachine/ts/src/machines/turnstile/turnstile.contexts.g.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/turnstile/turnstile.contexts.g.ts
rename to Trax.StateMachine/ts/src/machines/turnstile/turnstile.contexts.g.ts
diff --git a/Trax.Api.StateMachine/src/machines/turnstile/turnstile.machine.g.ts b/Trax.StateMachine/ts/src/machines/turnstile/turnstile.machine.g.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/turnstile/turnstile.machine.g.ts
rename to Trax.StateMachine/ts/src/machines/turnstile/turnstile.machine.g.ts
diff --git a/Trax.Api.StateMachine/src/machines/turnstile/turnstile.ts b/Trax.StateMachine/ts/src/machines/turnstile/turnstile.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/turnstile/turnstile.ts
rename to Trax.StateMachine/ts/src/machines/turnstile/turnstile.ts
diff --git a/Trax.Api.StateMachine/src/machines/turnstile/typed.test.ts b/Trax.StateMachine/ts/src/machines/turnstile/typed.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/machines/turnstile/typed.test.ts
rename to Trax.StateMachine/ts/src/machines/turnstile/typed.test.ts
diff --git a/Trax.Api.StateMachine/src/problem.test.ts b/Trax.StateMachine/ts/src/problem.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/problem.test.ts
rename to Trax.StateMachine/ts/src/problem.test.ts
diff --git a/Trax.Api.StateMachine/src/problem.ts b/Trax.StateMachine/ts/src/problem.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/problem.ts
rename to Trax.StateMachine/ts/src/problem.ts
diff --git a/Trax.Api.StateMachine/src/react.ts b/Trax.StateMachine/ts/src/react.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/react.ts
rename to Trax.StateMachine/ts/src/react.ts
diff --git a/Trax.Api.StateMachine/src/refusalCodes.conformance.test.ts b/Trax.StateMachine/ts/src/refusalCodes.conformance.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/refusalCodes.conformance.test.ts
rename to Trax.StateMachine/ts/src/refusalCodes.conformance.test.ts
diff --git a/Trax.Api.StateMachine/src/results.ts b/Trax.StateMachine/ts/src/results.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/results.ts
rename to Trax.StateMachine/ts/src/results.ts
diff --git a/Trax.Api.StateMachine/src/rules/formats.test.ts b/Trax.StateMachine/ts/src/rules/formats.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/rules/formats.test.ts
rename to Trax.StateMachine/ts/src/rules/formats.test.ts
diff --git a/Trax.Api.StateMachine/src/rules/formats.ts b/Trax.StateMachine/ts/src/rules/formats.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/rules/formats.ts
rename to Trax.StateMachine/ts/src/rules/formats.ts
diff --git a/Trax.Api.StateMachine/src/rules/generateTypes.test.ts b/Trax.StateMachine/ts/src/rules/generateTypes.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/rules/generateTypes.test.ts
rename to Trax.StateMachine/ts/src/rules/generateTypes.test.ts
diff --git a/Trax.Api.StateMachine/src/rules/generateTypes.ts b/Trax.StateMachine/ts/src/rules/generateTypes.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/rules/generateTypes.ts
rename to Trax.StateMachine/ts/src/rules/generateTypes.ts
diff --git a/Trax.Api.StateMachine/src/rules/interpreter.input.test.ts b/Trax.StateMachine/ts/src/rules/interpreter.input.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/rules/interpreter.input.test.ts
rename to Trax.StateMachine/ts/src/rules/interpreter.input.test.ts
diff --git a/Trax.Api.StateMachine/src/rules/interpreter.test.ts b/Trax.StateMachine/ts/src/rules/interpreter.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/rules/interpreter.test.ts
rename to Trax.StateMachine/ts/src/rules/interpreter.test.ts
diff --git a/Trax.Api.StateMachine/src/rules/interpreter.ts b/Trax.StateMachine/ts/src/rules/interpreter.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/rules/interpreter.ts
rename to Trax.StateMachine/ts/src/rules/interpreter.ts
diff --git a/Trax.Api.StateMachine/src/rules/irFormat.test.ts b/Trax.StateMachine/ts/src/rules/irFormat.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/rules/irFormat.test.ts
rename to Trax.StateMachine/ts/src/rules/irFormat.test.ts
diff --git a/Trax.Api.StateMachine/src/rules/irFormat.ts b/Trax.StateMachine/ts/src/rules/irFormat.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/rules/irFormat.ts
rename to Trax.StateMachine/ts/src/rules/irFormat.ts
diff --git a/Trax.Api.StateMachine/src/rules/irMachine.test.ts b/Trax.StateMachine/ts/src/rules/irMachine.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/rules/irMachine.test.ts
rename to Trax.StateMachine/ts/src/rules/irMachine.test.ts
diff --git a/Trax.Api.StateMachine/src/rules/irMachine.ts b/Trax.StateMachine/ts/src/rules/irMachine.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/rules/irMachine.ts
rename to Trax.StateMachine/ts/src/rules/irMachine.ts
diff --git a/Trax.Api.StateMachine/src/rules/schemaStrictness.test.ts b/Trax.StateMachine/ts/src/rules/schemaStrictness.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/rules/schemaStrictness.test.ts
rename to Trax.StateMachine/ts/src/rules/schemaStrictness.test.ts
diff --git a/Trax.Api.StateMachine/src/rules/testing/rangeMachine.ts b/Trax.StateMachine/ts/src/rules/testing/rangeMachine.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/rules/testing/rangeMachine.ts
rename to Trax.StateMachine/ts/src/rules/testing/rangeMachine.ts
diff --git a/Trax.Api.StateMachine/src/server/serverController.test.ts b/Trax.StateMachine/ts/src/server/serverController.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/server/serverController.test.ts
rename to Trax.StateMachine/ts/src/server/serverController.test.ts
diff --git a/Trax.Api.StateMachine/src/server/serverController.ts b/Trax.StateMachine/ts/src/server/serverController.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/server/serverController.ts
rename to Trax.StateMachine/ts/src/server/serverController.ts
diff --git a/Trax.Api.StateMachine/src/server/testing/FakeMachineServer.test.ts b/Trax.StateMachine/ts/src/server/testing/FakeMachineServer.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/server/testing/FakeMachineServer.test.ts
rename to Trax.StateMachine/ts/src/server/testing/FakeMachineServer.test.ts
diff --git a/Trax.Api.StateMachine/src/server/testing/FakeMachineServer.ts b/Trax.StateMachine/ts/src/server/testing/FakeMachineServer.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/server/testing/FakeMachineServer.ts
rename to Trax.StateMachine/ts/src/server/testing/FakeMachineServer.ts
diff --git a/Trax.Api.StateMachine/src/server/useRememberedMachine.test.tsx b/Trax.StateMachine/ts/src/server/useRememberedMachine.test.tsx
similarity index 100%
rename from Trax.Api.StateMachine/src/server/useRememberedMachine.test.tsx
rename to Trax.StateMachine/ts/src/server/useRememberedMachine.test.tsx
diff --git a/Trax.Api.StateMachine/src/server/useRememberedMachine.ts b/Trax.StateMachine/ts/src/server/useRememberedMachine.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/server/useRememberedMachine.ts
rename to Trax.StateMachine/ts/src/server/useRememberedMachine.ts
diff --git a/Trax.Api.StateMachine/src/server/useServerMachine.test.tsx b/Trax.StateMachine/ts/src/server/useServerMachine.test.tsx
similarity index 100%
rename from Trax.Api.StateMachine/src/server/useServerMachine.test.tsx
rename to Trax.StateMachine/ts/src/server/useServerMachine.test.tsx
diff --git a/Trax.Api.StateMachine/src/server/useServerMachine.ts b/Trax.StateMachine/ts/src/server/useServerMachine.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/server/useServerMachine.ts
rename to Trax.StateMachine/ts/src/server/useServerMachine.ts
diff --git a/Trax.Api.StateMachine/src/strictInput.conformance.test.ts b/Trax.StateMachine/ts/src/strictInput.conformance.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/strictInput.conformance.test.ts
rename to Trax.StateMachine/ts/src/strictInput.conformance.test.ts
diff --git a/Trax.Api.StateMachine/src/typed.snapshot.test.ts b/Trax.StateMachine/ts/src/typed.snapshot.test.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/typed.snapshot.test.ts
rename to Trax.StateMachine/ts/src/typed.snapshot.test.ts
diff --git a/Trax.Api.StateMachine/src/typed.ts b/Trax.StateMachine/ts/src/typed.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/typed.ts
rename to Trax.StateMachine/ts/src/typed.ts
diff --git a/Trax.Api.StateMachine/src/types.ts b/Trax.StateMachine/ts/src/types.ts
similarity index 100%
rename from Trax.Api.StateMachine/src/types.ts
rename to Trax.StateMachine/ts/src/types.ts
diff --git a/Trax.Api.StateMachine/tools/bundle-cli.mjs b/Trax.StateMachine/ts/tools/bundle-cli.mjs
similarity index 100%
rename from Trax.Api.StateMachine/tools/bundle-cli.mjs
rename to Trax.StateMachine/ts/tools/bundle-cli.mjs
diff --git a/Trax.Api.StateMachine/tools/codegen.test.mjs b/Trax.StateMachine/ts/tools/codegen.test.mjs
similarity index 97%
rename from Trax.Api.StateMachine/tools/codegen.test.mjs
rename to Trax.StateMachine/ts/tools/codegen.test.mjs
index 7533cbfab..81cd63a40 100644
--- a/Trax.Api.StateMachine/tools/codegen.test.mjs
+++ b/Trax.StateMachine/ts/tools/codegen.test.mjs
@@ -17,9 +17,10 @@ import { generateTwin } from "./generate-twin.mjs";
// equals what the engine's own tests produce.
const repoRoot = fileURLToPath(new URL("..", import.meta.url));
const engineSrc = join(repoRoot, "src");
+// The shared corpus and fixtures, beside the engines in the folder's conformance kit.
+const machinesRoot = join(repoRoot, "..", "conformance", "machines");
const turnstileIr = join(
- repoRoot,
- "machines",
+ machinesRoot,
"turnstile",
"turnstile.ir.json",
);
@@ -38,8 +39,7 @@ const committedMachine = join(
"turnstile.machine.g.ts",
);
const committedCorpus = join(
- repoRoot,
- "machines",
+ machinesRoot,
"turnstile",
"differential.json",
);
@@ -48,7 +48,7 @@ const read = (path) => readFileSync(path, "utf8");
// A machine whose state invokes a train: its IR carries outcome triggers, which the twin and the corpus
// generators must carry through to the committed artifacts unchanged.
-const ingestIr = join(repoRoot, "machines", "ingest", "ingest.ir.json");
+const ingestIr = join(machinesRoot, "ingest", "ingest.ir.json");
const ingestTwin = join(repoRoot, "src", "machines", "ingest");
describe("generate-twin entrypoint", () => {
@@ -175,7 +175,7 @@ describe("generate-corpus entrypoint", () => {
const outPath = join(out, "differential.json");
await generateCorpus({ irPath: ingestIr, engineSrc, outPath });
expect(read(outPath)).toBe(
- read(join(repoRoot, "machines", "ingest", "differential.json")),
+ read(join(machinesRoot, "ingest", "differential.json")),
);
expect(read(outPath)).toContain(`"trigger": "Fetching.done"`);
});
diff --git a/Trax.Api.StateMachine/tools/conformance/ir-schema.mjs b/Trax.StateMachine/ts/tools/conformance/ir-schema.mjs
similarity index 92%
rename from Trax.Api.StateMachine/tools/conformance/ir-schema.mjs
rename to Trax.StateMachine/ts/tools/conformance/ir-schema.mjs
index 9f1e78212..5f45c62b8 100644
--- a/Trax.Api.StateMachine/tools/conformance/ir-schema.mjs
+++ b/Trax.StateMachine/ts/tools/conformance/ir-schema.mjs
@@ -13,11 +13,11 @@ try {
({ default: Ajv2020 } = await import("ajv/dist/2020.js"));
} catch (err) {
if (!invokedDirectly) throw err;
- console.error("ajv is not installed: run npm ci in Trax.Api.StateMachine.");
+ console.error("ajv is not installed: run npm ci in Trax.StateMachine/ts.");
process.exit(MISSING_DEPENDENCIES);
}
-const schemaPath = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "conformance", "ir.schema.json");
+const schemaPath = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "..", "conformance", "ir.schema.json");
/**
* Compiles conformance/ir.schema.json once and returns a function that checks one IR document, answering the
diff --git a/Trax.Api.StateMachine/tools/conformance/run.test.mjs b/Trax.StateMachine/ts/tools/conformance/run.test.mjs
similarity index 90%
rename from Trax.Api.StateMachine/tools/conformance/run.test.mjs
rename to Trax.StateMachine/ts/tools/conformance/run.test.mjs
index f6b141e97..4fb6ff967 100644
--- a/Trax.Api.StateMachine/tools/conformance/run.test.mjs
+++ b/Trax.StateMachine/ts/tools/conformance/run.test.mjs
@@ -1,8 +1,8 @@
import { spawnSync } from "node:child_process";
import { fileURLToPath } from "node:url";
import { beforeAll, describe, expect, it } from "vitest";
-import { kitCases } from "./kit.mjs";
-import { report, runCases } from "./run.mjs";
+import { kitCases } from "../../../conformance/kit.mjs";
+import { report, runCases } from "../../../conformance/run.mjs";
import { createTestee, loadEngine } from "./testee-ts.mjs";
// The conformance runner over the TypeScript engine: the kit passes through the engine's public exports, both
@@ -10,6 +10,7 @@ import { createTestee, loadEngine } from "./testee-ts.mjs";
// fails with that case named.
const here = (file) => fileURLToPath(new URL(file, import.meta.url));
+const runner = here("../../../conformance/run.mjs");
const cases = kitCases();
let engine;
@@ -58,7 +59,7 @@ describe("the conformance kit", () => {
it("drives a spawned testee over the protocol", () => {
const run = spawnSync(
process.execPath,
- [here("run.mjs"), "--testee", process.execPath, here("testee-ts.mjs")],
+ [runner, "--testee", process.execPath, here("testee-ts.mjs")],
{ encoding: "utf8", timeout: 120_000 },
);
expect(run.stderr).toContain(`${cases.length} of ${cases.length} cases passed.`);
diff --git a/Trax.Api.StateMachine/tools/conformance/testee-ts.mjs b/Trax.StateMachine/ts/tools/conformance/testee-ts.mjs
similarity index 100%
rename from Trax.Api.StateMachine/tools/conformance/testee-ts.mjs
rename to Trax.StateMachine/ts/tools/conformance/testee-ts.mjs
diff --git a/Trax.Api.StateMachine/tools/generate-corpus.mjs b/Trax.StateMachine/ts/tools/generate-corpus.mjs
similarity index 100%
rename from Trax.Api.StateMachine/tools/generate-corpus.mjs
rename to Trax.StateMachine/ts/tools/generate-corpus.mjs
diff --git a/Trax.Api.StateMachine/tools/generate-twin.mjs b/Trax.StateMachine/ts/tools/generate-twin.mjs
similarity index 100%
rename from Trax.Api.StateMachine/tools/generate-twin.mjs
rename to Trax.StateMachine/ts/tools/generate-twin.mjs
diff --git a/Trax.Api.StateMachine/tools/lib/args.mjs b/Trax.StateMachine/ts/tools/lib/args.mjs
similarity index 100%
rename from Trax.Api.StateMachine/tools/lib/args.mjs
rename to Trax.StateMachine/ts/tools/lib/args.mjs
diff --git a/Trax.Api.StateMachine/tools/lib/engine-bundled.mjs b/Trax.StateMachine/ts/tools/lib/engine-bundled.mjs
similarity index 100%
rename from Trax.Api.StateMachine/tools/lib/engine-bundled.mjs
rename to Trax.StateMachine/ts/tools/lib/engine-bundled.mjs
diff --git a/Trax.Api.StateMachine/tools/lib/engine-loader.mjs b/Trax.StateMachine/ts/tools/lib/engine-loader.mjs
similarity index 100%
rename from Trax.Api.StateMachine/tools/lib/engine-loader.mjs
rename to Trax.StateMachine/ts/tools/lib/engine-loader.mjs
diff --git a/Trax.Api.StateMachine/tools/replay-sequences.mjs b/Trax.StateMachine/ts/tools/replay-sequences.mjs
similarity index 100%
rename from Trax.Api.StateMachine/tools/replay-sequences.mjs
rename to Trax.StateMachine/ts/tools/replay-sequences.mjs
diff --git a/Trax.Api.StateMachine/tsconfig.json b/Trax.StateMachine/ts/tsconfig.json
similarity index 100%
rename from Trax.Api.StateMachine/tsconfig.json
rename to Trax.StateMachine/ts/tsconfig.json
diff --git a/Trax.Api.StateMachine/tsup.config.ts b/Trax.StateMachine/ts/tsup.config.ts
similarity index 100%
rename from Trax.Api.StateMachine/tsup.config.ts
rename to Trax.StateMachine/ts/tsup.config.ts
diff --git a/Trax.Api.StateMachine/vitest.config.ts b/Trax.StateMachine/ts/vitest.config.ts
similarity index 100%
rename from Trax.Api.StateMachine/vitest.config.ts
rename to Trax.StateMachine/ts/vitest.config.ts
From b0ace0495052575100b4df77a94c63ae55cfc363 Mon Sep 17 00:00:00 2001
From: Theauxm <43664045+Theauxm@users.noreply.github.com>
Date: Tue, 20 Oct 2026 10:59:33 -0600
Subject: [PATCH 3/6] refactor(machines): rename the packages and namespaces to
Trax.StateMachine
Trax.Effect.StateMachine, .Persistence and .Testing become
Trax.StateMachine, .Persistence and .Testing, with their namespaces and
test projects. The new ids have no release on nuget.org yet, so package
validation is off for them until their first one, and the old ids'
CompatibilitySuppressions go. Shipped migrations keep the old names in
their comments.
---
.github/workflows/ci.yml | 2 +-
AGENTS.md | 2 +-
.../Trax.Api.Auth.ApiKey/packages.lock.json | 20 +-
.../packages.lock.json | 24 +-
.../packages.lock.json | 24 +-
.../packages.lock.json | 20 +-
.../src/Trax.Api.Auth.Jwt/packages.lock.json | 20 +-
.../src/Trax.Api.Auth.Oidc/packages.lock.json | 20 +-
Trax.Api/src/Trax.Api.Auth/packages.lock.json | 20 +-
.../src/Trax.Api.Dashboard/packages.lock.json | 26 +-
.../Trax.Api.GraphQL.Audit/packages.lock.json | 26 +-
.../packages.lock.json | 24 +-
.../Middleware/MachineDocumentMiddleware.cs | 4 +-
.../Services/ClientManifestExport.cs | 4 +-
.../Services/MachineDocuments.cs | 2 +-
.../Startup/MachineDocumentRegistration.cs | 2 +-
.../packages.lock.json | 26 +-
.../packages.lock.json | 32 +-
.../Extensions/GraphQLServiceExtensions.cs | 2 +-
.../MachineRegistrationOrderValidator.cs | 2 +-
.../Subscriptions/LifecycleStreamRule.cs | 12 +-
.../TypeModules/MachineChanged.cs | 4 +-
.../TypeModules/MachineEnums.cs | 4 +-
.../TypeModules/MachineInvokedRun.cs | 2 +-
.../MachineJsonNamingInterceptor.cs | 2 +-
.../TypeModules/MachineResolvers.cs | 6 +-
.../TypeModules/MachineSurface.cs | 4 +-
.../TypeModules/MachineTypeModule.cs | 4 +-
.../TypeModules/RunProgress.cs | 4 +-
.../src/Trax.Api.GraphQL/packages.lock.json | 26 +-
.../Extensions/ApiServiceExtensions.cs | 2 +-
.../Authorization/HttpCallerAuthorization.cs | 2 +-
Trax.Api/src/Trax.Api/packages.lock.json | 26 +-
.../packages.lock.json | 32 +-
.../Trax.Api.Tests.Meta/packages.lock.json | 32 +-
.../ClientDocumentsE2ETests.cs | 2 +-
.../ClientManifestExportTests.cs | 2 +-
.../E2EHost.cs | 2 +-
.../Trax.Api.Tests.StateMachine.E2E/E2ESql.cs | 2 +-
.../Fakes/MemoMachine.cs | 6 +-
.../Fakes/ServedMachines.cs | 2 +-
.../Fakes/ShelfMachine.cs | 6 +-
.../Fakes/SnoozeMachine.cs | 6 +-
.../Fakes/TicketMachine.cs | 6 +-
.../Fakes/WizardMachine.cs | 6 +-
.../GeneratedTrainDocumentsRemovedE2ETests.cs | 2 +-
.../GenericOptInE2ETests.cs | 4 +-
.../MachineChangedE2ETests.cs | 4 +-
.../MachineClientResultE2ETests.cs | 4 +-
.../MachineDocumentCrossNodeTests.cs | 4 +-
.../MachineDocumentStorageTests.cs | 2 +-
.../MachineDocumentsE2ETests.cs | 4 +-
.../MachineEventsE2ETests.cs | 4 +-
.../MachinePushE2ETests.cs | 2 +-
.../MachineRegistrationE2ETests.cs | 2 +-
.../MachineRequestIdE2ETests.cs | 4 +-
.../MachineRulesE2ETests.cs | 4 +-
.../MachineRunRecordE2ETests.cs | 2 +-
.../Machines.cs | 4 +-
.../MachinesRootSchemaTests.cs | 2 +-
.../OperatorMachineDefinitionsE2ETests.cs | 2 +-
.../OperatorMachineFeedE2ETests.cs | 2 +-
.../OperatorMachineInstancesE2ETests.cs | 2 +-
.../ShelfHosts.cs | 2 +-
.../StateMachineGraphQLE2ETests.cs | 4 +-
.../Trax.Api.Tests.StateMachine.E2E.csproj | 4 +-
.../TraxCallerSnapshotPrincipal.cs | 2 +-
.../packages.lock.json | 26 +-
.../MachineChangedStressTests.cs | 2 +-
.../MachineEventStressTests.cs | 8 +-
.../Trax.Api.Tests.Stress/packages.lock.json | 32 +-
.../ClientManifestQueryModelsE2ETests.cs | 2 +-
.../AuthE2E/RunProgressE2ETests.cs | 2 +-
.../AuthE2E/RunProgressInvokedRunE2ETests.cs | 6 +-
.../Trax.Api.Tests/Fakes/EnumMachines.cs | 4 +-
.../tests/Trax.Api.Tests/Fakes/Machines.cs | 6 +-
.../MachineChangedOrderTests.cs | 4 +-
.../MachineExposureCensusTests.cs | 6 +-
.../MachineExposureStartupTests.cs | 2 +-
.../tests/Trax.Api.Tests/MachineSchemaHost.cs | 2 +-
.../Trax.Api.Tests/MachineTypeModuleTests.cs | 4 +-
.../MarkedMachineSchemaTests.cs | 2 +-
.../OperationCapUnderNamespacesTests.cs | 2 +-
.../UnitTests/ProgressDocumentsTests.cs | 2 +-
.../Trax.Api.Tests/RunProgressStreamTests.cs | 2 +-
.../Trax.Api.Tests/SchemaRebuildTests.cs | 2 +-
.../tests/Trax.Api.Tests/packages.lock.json | 32 +-
...he-machine-toolchain-is-half-in-process.md | 2 +-
.../src/Trax.Cli/Clients/ClientDocumentSet.cs | 2 +-
.../Clients/ClientGenerator.Documents.cs | 2 +-
.../src/Trax.Cli/Clients/ClientGenerator.cs | 2 +-
.../src/Trax.Cli/Commands/ClientCommand.cs | 2 +-
.../src/Trax.Cli/Commands/MachineCommand.cs | 6 +-
.../src/Trax.Cli/Machines/MachineGenerator.cs | 2 +-
.../src/Trax.Cli/Machines/MachineLoader.cs | 6 +-
.../src/Trax.Cli/Machines/MachineRenderer.cs | 2 +-
.../Trax.Cli/Templates/MachineScaffold.sbn | 6 +-
Trax.Cli/src/Trax.Cli/Trax.Cli.csproj | 2 +-
Trax.Cli/src/Trax.Cli/packages.lock.json | 6 +-
.../Trax.Cli.Tests.Meta/packages.lock.json | 8 +-
.../Trax.Cli.Tests/Fakes/ClientManifests.cs | 4 +-
.../Fakes/DeclarativeCheckoutMachine.cs | 6 +-
.../Fakes/DeclarativeGaugeMachine.cs | 6 +-
.../Fakes/DeclarativeIngestMachine.cs | 8 +-
.../Fakes/DeclarativeReminderMachine.cs | 4 +-
.../Fakes/DeclarativeTurnstileMachine.cs | 6 +-
.../MachineGenerateFromPackedToolTests.cs | 8 +-
.../MachineGeneratorNodeTests.cs | 2 +-
.../ClientDocumentsGeneratorTests.cs | 2 +-
.../UnitTests/ClientGeneratorTests.cs | 2 +-
.../UnitTests/MachineCommandTests.cs | 4 +-
.../UnitTests/MachineGeneratorTests.cs | 4 +-
.../UnitTests/MachineLoaderTests.cs | 2 +-
.../MachineLoaderUnloadableTypeTests.cs | 4 +-
.../UnitTests/MachineScaffolderTests.cs | 8 +-
.../UnitTests/ScaffoldCompilationTests.cs | 2 +-
.../UnitTests/SelectionTypesTests.cs | 2 +-
.../tests/Trax.Cli.Tests/packages.lock.json | 8 +-
...re-tables-ship-in-the-core-provider-set.md | 2 +-
...nd-only-that-entry-receives-its-outcome.md | 8 +-
...and-the-server-applies-every-transition.md | 12 +-
...s-a-child-machine-as-it-invokes-a-train.md | 4 +-
.../the-hub-serves-the-storefront.md | 2 +-
.../checkout-is-a-state-machine/packages.md | 10 +-
.../checkout-is-a-state-machine/serve-it.md | 4 +-
.../checkout-is-a-state-machine/test-it.md | 2 +-
.../the-machine.md | 6 +-
.../book/deploy/migrate-the-shops-schema.md | 6 +-
Trax.Docs/book/deploy/the-hub.md | 2 +-
.../make-the-hub-refuse.md | 2 +-
.../require-persisted-operations/test-it.md | 4 +-
.../the-checkout-invokes-and-spawns.md | 6 +-
.../the-parcel.md | 4 +-
.../what-an-invoked-run-is.md | 2 +-
Trax.Docs/effect/data-model.md | 2 +-
.../turn-off-snapshot-change-notices.md | 4 +-
Trax.Docs/reference/acknowledgments.md | 4 +-
Trax.Docs/reference/cli.md | 2 +-
Trax.Docs/reference/glossary.md | 2 +-
Trax.Docs/reference/packages.md | 6 +-
Trax.Docs/sdk-reference/statemachine-api.md | 6 +-
.../statemachine-api/add-state-machines.md | 14 +-
.../add-trax-state-machine-self-check.md | 10 +-
.../statemachine-api/client-manifest.md | 8 +-
.../declarative-data-model.md | 22 +-
.../statemachine-api/i-snapshot-effect.md | 10 +-
.../statemachine-api/invoked-run.md | 10 +-
.../statemachine-api/ir-format.md | 12 +-
.../statemachine-api/machine-conformance.md | 16 +-
.../statemachine-api/machine-instances.md | 8 +-
.../sdk-reference/statemachine-api/machine.md | 20 +-
.../statemachine-api/migrations.md | 10 +-
.../statemachine-api/persistence-ports.md | 24 +-
.../statemachine-api/result-codes.md | 8 +-
.../sdk-reference/statemachine-api/rules.md | 10 +-
.../statemachine-api/runtime-integrity.md | 10 +-
.../statemachine-api/typescript-package.md | 2 +-
Trax.Docs/sdk-reference/testing.md | 2 +-
.../testing/effect-statemachine-testing.md | 22 +-
Trax.Docs/statemachine.md | 12 +-
Trax.Docs/statemachine/authoring.md | 20 +-
Trax.Docs/statemachine/canonical-wire.md | 4 +-
Trax.Docs/statemachine/codegen-pipeline.md | 6 +-
Trax.Docs/statemachine/context-schemas.md | 4 +-
.../statemachine/declarative-authoring.md | 8 +-
Trax.Docs/statemachine/generic-mutations.md | 6 +-
Trax.Docs/statemachine/invoked-runs.md | 10 +-
Trax.Docs/statemachine/invoking-trains.md | 16 +-
.../statemachine/spawning-child-machines.md | 6 +-
Trax.Docs/statemachine/undo-an-effect.md | 8 +-
.../statemachine-api/_section.cs | 6 +-
.../Trax.Docs.Snippets.Tests.csproj | 6 +-
.../packages.lock.json | 52 +-
.../Tests/PackagesPageTests.cs | 6 +-
Trax.Docs/what-trax-does.md | 4 +-
Trax.Effect/AGENTS.md | 4 +-
...migrated-domain-tables-are-bootstrapped.md | 2 +-
.../Services/DataContext/DataContext.cs | 4 +-
.../Services/DataContext/IDataContext.cs | 6 +-
.../InvokedRunListener/IInvokedRunListener.cs | 2 +-
.../SnapshotNotices/ISnapshotNoticeSource.cs | 2 +-
.../Trax.Effect.Data/Trax.Effect.Data.csproj | 4 +-
.../Models/EffectClaim/EffectClaim.cs | 2 +-
.../Models/SnapshotDraft/SnapshotDraft.cs | 2 +-
.../SnapshotTransition/SnapshotTransition.cs | 2 +-
.../src/Trax.Effect/Trax.Effect.csproj | 6 +-
.../SqliteEveryTableIsModelledTests.cs | 2 +-
.../EveryTableIsModelledTests.cs | 2 +-
...fect.StateMachine.Persistence.received.txt | 601 ----------------
...x.Effect.StateMachine.Testing.received.txt | 16 -
.../Trax.Effect.StateMachine.received.txt | 643 ------------------
...Trax.StateMachine.Persistence.received.txt | 601 ++++++++++++++++
.../Trax.StateMachine.Testing.received.txt | 16 +
.../PublicApi/Trax.StateMachine.received.txt | 643 ++++++++++++++++++
.../Tests/PublicApiSurfaceTests.cs | 14 +-
.../Trax.Effect.Tests.Meta.csproj | 6 +-
.../Trax.Effect.Tests.Meta/packages.lock.json | 12 +-
.../Extensions/BuilderOrderExtensions.cs | 4 +-
.../Extensions/ServiceExtensions.cs | 2 +-
.../InvokedTrains/InvokedTrainLauncher.cs | 4 +-
.../TrainExecution/TrainExecutionService.cs | 2 +-
.../src/Trax.Mediator/Trax.Mediator.csproj | 2 +-
.../src/Trax.Mediator/packages.lock.json | 6 +-
.../packages.lock.json | 36 +-
.../Tests/BuilderOrderDiagnosticsTests.cs | 2 +-
.../Trax.Mediator.Tests.Meta.csproj | 2 +-
.../packages.lock.json | 36 +-
.../packages.lock.json | 36 +-
.../Fakes/Callers.cs | 2 +-
.../Fakes/Machines.cs | 4 +-
.../Fakes/ObservedLauncher.cs | 2 +-
.../Fakes/RuleMachines.cs | 4 +-
.../Fixtures/InvokeHost.cs | 4 +-
.../InvokedTrainOutboxTests.cs | 4 +-
.../InvokesAuthorizationTests.cs | 4 +-
.../InvokesRuntimeRefusalTests.cs | 4 +-
.../SnapshotChangeOutcomeNotifyTests.cs | 2 +-
.../SystemInstanceAdvanceTests.cs | 4 +-
.../SystemInstanceStartFailureTests.cs | 4 +-
...ator.Tests.StateMachine.Integration.csproj | 2 +-
.../packages.lock.json | 24 +-
.../book/Shopfront/Directory.Packages.props | 4 +-
.../Machines/Checkout/CheckoutMachine.cs | 6 +-
.../Shopfront.Core/Machines/InvokedRuns.cs | 2 +-
.../Machines/Parcel/ParcelMachine.cs | 4 +-
.../Shopfront.Core/Shopfront.Core.csproj | 2 +-
.../Shopfront.Core/packages.lock.json | 20 +-
.../Auth/TraxCallerSnapshotPrincipal.cs | 2 +-
.../book/Shopfront/Shopfront.Hub/Program.cs | 2 +-
.../Shopfront.Hub/packages.lock.json | 30 +-
.../Shopfront.Worker/packages.lock.json | 30 +-
.../PersistedOperationsTests.cs | 2 +-
.../Shopfront.Tests/Shopfront.Tests.csproj | 2 +-
.../UnitTests/CheckoutMachineTests.cs | 2 +-
.../tests/Shopfront.Tests/packages.lock.json | 50 +-
.../Auth/Trax.Samples.Auth/packages.lock.json | 26 +-
.../packages.lock.json | 34 +-
.../packages.lock.json | 38 +-
.../Trax.Samples.Bookworm/packages.lock.json | 38 +-
.../packages.lock.json | 34 +-
.../packages.lock.json | 30 +-
.../packages.lock.json | 34 +-
.../packages.lock.json | 34 +-
.../Trax.Samples.EnergyHub/packages.lock.json | 26 +-
.../packages.lock.json | 34 +-
.../packages.lock.json | 38 +-
.../packages.lock.json | 20 +-
.../packages.lock.json | 26 +-
.../packages.lock.json | 34 +-
.../packages.lock.json | 26 +-
.../packages.lock.json | 20 +-
.../packages.lock.json | 32 +-
.../packages.lock.json | 20 +-
.../Trax.Samples.Recovery.Api/Program.cs | 2 +-
.../TraxCallerSnapshotPrincipal.cs | 2 +-
.../packages.lock.json | 36 +-
.../Machines/OrderMachine.cs | 6 +-
.../Machines/SourcePartitionMachine.cs | 6 +-
.../Machines/TopicMapMachine.cs | 6 +-
.../Junctions/StartPartitionMachines.cs | 2 +-
.../Order/Junctions/SendToRestaurant.cs | 2 +-
.../Trains/OrderDemo/OrderTroubleTrain.cs | 2 +-
.../Trains/OrderDemo/TabletCallsTrain.cs | 2 +-
.../Junctions/AdvancePartition.cs | 4 +-
.../Trax.Samples.Recovery.csproj | 4 +-
.../Trax.Samples.Recovery/packages.lock.json | 26 +-
.../packages.lock.json | 32 +-
.../packages.lock.json | 26 +-
.../packages.lock.json | 20 +-
.../Trax.Samples.StateMachine.Api/Program.cs | 2 +-
.../Trax.Samples.StateMachine.Api.csproj | 2 +-
.../packages.lock.json | 34 +-
.../Trax.Samples.StateMachine/Machines.cs | 6 +-
.../MachinesQuery.cs | 2 +-
.../Trax.Samples.StateMachine/Payments.cs | 2 +-
.../SnapshotPrincipal.cs | 2 +-
.../Trax.Samples.StateMachine.csproj | 4 +-
.../packages.lock.json | 24 +-
.../Trax.Samples.Api/packages.lock.json | 26 +-
.../Trax.Samples.Api.Tests/packages.lock.json | 38 +-
.../Trax.Samples.Hub/packages.lock.json | 26 +-
.../Trax.Samples.Hub.Tests/packages.lock.json | 38 +-
.../Trax.Samples.Scheduler/packages.lock.json | 26 +-
.../packages.lock.json | 38 +-
.../Factories/ConsoleHost.cs | 2 +-
.../Fixtures/Seed.cs | 2 +-
.../Host/BrowserHostModel.cs | 4 +-
.../Tests/ApiDashboardBrowserTests.cs | 2 +-
.../packages.lock.json | 34 +-
.../Trax.Samples.Auth.E2E/packages.lock.json | 38 +-
.../packages.lock.json | 38 +-
.../packages.lock.json | 38 +-
.../packages.lock.json | 38 +-
.../packages.lock.json | 38 +-
.../packages.lock.json | 38 +-
.../packages.lock.json | 38 +-
.../packages.lock.json | 38 +-
.../Tests/TopicMapBrowserTests.cs | 2 +-
.../packages.lock.json | 44 +-
.../ClientManifestExportTests.cs | 2 +-
.../RecoveryTests/OrderMachineTests.cs | 2 +-
.../SourcePartitionMachineTests.cs | 2 +-
.../TopicMapDifferentialTests.cs | 2 +-
.../RecoveryTests/TopicMapDocumentsTests.cs | 4 +-
.../RecoveryTests/TopicMapMachineTests.cs | 4 +-
.../RecoveryTests/TriggerMetadataTests.cs | 4 +-
.../Trax.Samples.Recovery.E2E.csproj | 2 +-
.../Utilities/PartitionMachines.cs | 2 +-
.../Utilities/TopicMapArtifacts.cs | 2 +-
.../packages.lock.json | 58 +-
.../packages.lock.json | 38 +-
.../packages.lock.json | 36 +-
.../Fixtures/StateMachineTestFixture.cs | 4 +-
.../Tests/ForwardMigrationTests.cs | 4 +-
.../Utilities/RecordingCharge.cs | 2 +-
.../Utilities/StateMachineClient.cs | 2 +-
.../packages.lock.json | 46 +-
.../GlobalUsings.cs | 4 +-
.../UnitTests/TurnstileMachineTests.cs | 2 +-
.../packages.lock.json | 36 +-
.../packages.lock.json | 38 +-
.../MachineAuthorizationCensusTests.cs | 4 +-
.../packages.lock.json | 48 +-
.../packages.lock.json | 38 +-
.../src/Trax.Runner.Lambda/packages.lock.json | 26 +-
.../Trax.Scheduler.Lambda/packages.lock.json | 32 +-
.../src/Trax.Scheduler.Sqs/packages.lock.json | 32 +-
.../SchedulerConfigurationBuilder.Build.cs | 2 +-
.../Extensions/JobRunnerExtensions.cs | 2 +-
.../OperationsService.MachineInstances.cs | 2 +-
.../Operations/OperationsService.Machines.cs | 2 +-
.../Junctions/RunScheduledTrainJunction.cs | 2 +-
.../src/Trax.Scheduler/packages.lock.json | 20 +-
.../Fakes/InvokedTrains/FaultingLauncher.cs | 2 +-
.../InvokedTrains/InvokedFeatureMachine.cs | 6 +-
.../InvokedTrains/InvokedStepMachines.cs | 6 +-
.../Fakes/InvokedTrains/InvokedStepTrain.cs | 2 +-
.../Fakes/InvokedTrains/StaleReadStore.cs | 4 +-
.../Fakes/Timers/PausingSnapshotStore.cs | 4 +-
.../Fakes/Timers/TimerMachines.cs | 4 +-
.../Fixtures/InvokeCluster.cs | 2 +-
.../Fixtures/TimerRig.cs | 4 +-
.../InvokeOutcomeDeliveryTests.cs | 2 +-
.../InvokedTrains/InvokeOutcomeNoticeTests.cs | 2 +-
.../InvokeOutcomeReconcilerTests.cs | 2 +-
.../InvokedTrains/InvokedRunFeatureTests.cs | 2 +-
.../InvokedRunOperationsTests.cs | 2 +-
.../InvokedTrains/InvokedRunTests.cs | 2 +-
.../InvokedTrains/InvokesModelTests.cs | 4 +-
.../SnapshotChangeOutcomeNotifyTests.cs | 2 +-
.../Timers/TimerDraftLifetimeTests.cs | 2 +-
.../Timers/TimerFiringTests.cs | 4 +-
.../Timers/TimerVersionChangeTests.cs | 2 +-
.../Timers/TimersModelTests.cs | 4 +-
.../packages.lock.json | 38 +-
.../packages.lock.json | 38 +-
.../packages.lock.json | 38 +-
.../packages.lock.json | 38 +-
.../Trax.Scheduler.Tests/packages.lock.json | 38 +-
Trax.StateMachine/dotnet/README.md | 12 +-
.../dotnet/Trax.StateMachine.slnx | 12 +-
.../CompatibilitySuppressions.xml | 147 ----
.../CompatibilitySuppressions.xml | 63 --
.../Actor.cs | 2 +-
.../CallerAuthorization.cs | 2 +-
.../ChangeFeedStartupValidator.cs | 2 +-
.../DraftClaimHold.cs | 2 +-
.../DraftSweeper.cs | 2 +-
.../EfSnapshotStore.cs | 4 +-
.../EffectClaimStore.cs | 2 +-
.../ISnapshotChangeListener.cs | 2 +-
.../IdempotentEffect.cs | 2 +-
.../InvokeOutbox.cs | 2 +-
.../InvokeOutcomeDelivery.cs | 2 +-
.../InvokeOutcomeReconciler.cs | 2 +-
.../InvokedRun.cs | 2 +-
.../InvokedRunCancellation.cs | 2 +-
.../InvokedRunOutcomes.cs | 2 +-
.../InvokedTrainLauncher.cs | 2 +-
.../InvokesStartupValidator.cs | 2 +-
.../Machine.cs | 2 +-
.../MachineCensus.cs | 2 +-
.../MachineGraph.cs | 2 +-
.../MachineIdStartupValidator.cs | 2 +-
.../MachineInstanceStore.cs | 4 +-
.../MachineInstances.cs | 2 +-
.../MachineRulesStartupValidator.cs | 2 +-
.../MachineSchemaStartupValidator.cs | 2 +-
.../Mutations/GenericContracts.cs | 2 +-
.../Mutations/GenericJunctions.cs | 2 +-
.../Mutations/GenericMarkers.cs | 2 +-
.../Mutations/GenericTrains.cs | 2 +-
.../Mutations/StateMachineMutations.cs | 2 +-
.../Ports.cs | 4 +-
.../RequestIdRing.cs | 2 +-
.../SnapshotChangeListener.cs | 2 +-
.../SnapshotDraftService.cs | 4 +-
.../SnapshotEffectRunner.cs | 4 +-
.../SnapshotFingerprint.cs | 2 +-
.../SnapshotLimits.cs | 2 +-
.../SnapshotMachineRegistry.cs | 2 +-
.../SnapshotOwner.cs | 2 +-
.../SnapshotSelfCheck.cs | 2 +-
.../SnapshotWatchHub.cs | 2 +-
.../SnapshotWriteSignal.cs | 2 +-
.../SpawnedEnds.cs | 2 +-
.../SpawnsStartupValidator.cs | 2 +-
.../StartDeclarationValidator.cs | 2 +-
.../StateMachineInstruments.cs | 2 +-
.../StateMachineOptions.cs | 2 +-
.../StateMachineSelfCheckHealthCheck.cs | 2 +-
.../StateMachinesBuilderExtensions.cs | 4 +-
.../TimerFireResult.cs | 2 +-
.../TransitionNote.cs | 2 +-
.../Trax.StateMachine.Persistence.csproj} | 13 +-
.../packages.lock.json | 2 +-
.../DifferentialCorpus.cs | 2 +-
.../MachineConformance.cs | 4 +-
.../Trax.StateMachine.Testing.csproj} | 9 +-
.../packages.lock.json | 6 +-
.../CallerRule.cs | 2 +-
.../CanonicalJson.cs | 2 +-
.../ClientManifest.cs | 2 +-
.../CorpusReplay.cs | 2 +-
.../Fluent.cs | 2 +-
.../Invokes.cs | 6 +-
.../MachineDefinition.cs | 2 +-
.../MachineTrigger.cs | 2 +-
.../RefusalCode.cs | 2 +-
.../Results.cs | 2 +-
.../Rules/ContextSchema.cs | 2 +-
.../Rules/DeclarativeModel.cs | 2 +-
.../Rules/IrExporter.cs | 2 +-
.../Rules/MemberPath.cs | 2 +-
.../Rules/Reduction.cs | 2 +-
.../Rules/ReductionEvaluator.cs | 2 +-
.../Rules/Rule.cs | 2 +-
.../Rules/RuleEvaluator.cs | 2 +-
.../Rules/Rules.cs | 4 +-
.../Rules/SchemaReflection.cs | 2 +-
.../Rules/SchemaValidator.cs | 2 +-
.../Rules/ValueFormats.cs | 2 +-
.../Snapshot.cs | 2 +-
.../SnapshotMachine.cs | 2 +-
.../StartDeclaration.cs | 2 +-
.../StorableJson.cs | 2 +-
.../Timers.cs | 2 +-
.../TransitionDefinition.cs | 2 +-
.../Trax.StateMachine.csproj} | 11 +-
.../packages.lock.json | 0
.../ActorHierarchyTests.cs | 6 +-
.../AddStateMachinesBuilderTests.cs | 8 +-
.../ChangeFeedStartupValidatorTests.cs | 2 +-
.../ChangeFeedSwitchTests.cs | 6 +-
.../ClientDivergenceMeterTests.cs | 8 +-
.../DiscardEffectTests.cs | 6 +-
.../DiscardRuleTests.cs | 6 +-
.../DiscardTests.cs | 6 +-
.../DraftLifetimeTests.cs | 6 +-
.../DraftMachineScopeTests.cs | 6 +-
.../DraftWriteRulesTests.cs | 8 +-
.../EfSnapshotStoreTests.cs | 4 +-
.../EffectAndHandshakeDefectTests.cs | 8 +-
.../EffectClaimStoreTests.cs | 4 +-
.../EffectCommitIntegrityTests.cs | 8 +-
.../EffectPendingTests.cs | 8 +-
.../EventAuthorizationTests.cs | 6 +-
.../EventRuleStartupTests.cs | 8 +-
.../Fakes/BuildMachine.cs | 4 +-
.../Fakes/DeclarativeTurnstileMachine.cs | 4 +-
.../Fakes/Effects.cs | 2 +-
.../Fakes/FluentMachines.cs | 2 +-
.../Fakes/PendingEffectMachines.cs | 4 +-
.../Fakes/RecordingLauncher.cs | 2 +-
.../Fakes/RevisionMachines.cs | 4 +-
.../Fakes/RuledMachines.cs | 4 +-
.../Fakes/SpawnMachines.cs | 4 +-
.../Fakes/SystemMachines.cs | 2 +-
.../Fakes/TestOrder.cs | 2 +-
.../Fakes/TestTurnstile.cs | 2 +-
.../Fakes/TimerMachines.cs | 4 +-
.../Fakes/TimerSweepMachines.cs | 2 +-
.../Fixtures/CheckTraxInvariantsAttribute.cs | 4 +-
.../Fixtures/CountingDataContextFactory.cs | 2 +-
.../Fixtures/InstanceHost.cs | 4 +-
.../Fixtures/Marked.cs | 2 +-
.../Fixtures/PausingSnapshotStore.cs | 2 +-
.../Fixtures/PendingHarness.cs | 4 +-
.../Fixtures/PostgresSetup.cs | 4 +-
.../Fixtures/RawSql.cs | 2 +-
.../Fixtures/ScratchDatabase.cs | 2 +-
.../Fixtures/SkewedDatabaseClock.cs | 2 +-
.../Fixtures/SnapshotNotices.cs | 2 +-
.../Fixtures/SqliteDb.cs | 2 +-
.../Fixtures/StartingHost.cs | 4 +-
.../Fixtures/TestDb.cs | 2 +-
.../Fixtures/TestPostgres.cs | 2 +-
.../GenericRulesTests.cs | 8 +-
.../GenericSaveTimerTests.cs | 8 +-
.../IdempotentEffectTests.cs | 6 +-
.../InvokeTokenStoreTests.cs | 4 +-
.../InvokedRunLimitTests.cs | 4 +-
.../InvokedRunOutputTests.cs | 2 +-
.../InvokesDraftExpiryTests.cs | 6 +-
.../InvokesReservedStateTests.cs | 6 +-
.../MachineCensusTests.cs | 4 +-
.../MachineConformanceTests.cs | 6 +-
.../MachineEffectRunnerTests.cs | 6 +-
.../MachineExportIrTests.cs | 4 +-
.../MachineInterleavingModelTests.cs | 6 +-
.../MachineSchemaStartupTests.cs | 6 +-
.../MachineTrainHookOutputTests.cs | 4 +-
.../MarkedMachineTests.cs | 6 +-
.../MigrationSchemaTests.cs | 4 +-
.../MutationErrorMessageTests.cs | 8 +-
.../OrderAutosaveTests.cs | 6 +-
.../OrderSendTests.cs | 6 +-
.../PostgresChangeFeedTests.cs | 6 +-
.../RegistryCorruptDataTests.cs | 8 +-
.../RegistryJunctionTests.cs | 8 +-
.../RequestIdControlCharacterTests.cs | 8 +-
.../RequestIdRingSizeTests.cs | 6 +-
.../RequestIdRingTests.cs | 6 +-
.../RequestIdScopeTests.cs | 8 +-
.../RequestRetryAfterServerWriteTests.cs | 8 +-
.../RevisionTests.cs | 8 +-
.../ServerRecordTests.cs | 6 +-
.../ServerlessProviderTests.cs | 4 +-
.../SnapshotAdvanceGuardTests.cs | 8 +-
.../SnapshotChangeListenerTests.cs | 6 +-
.../SnapshotChangeNotifyTests.cs | 6 +-
.../SnapshotDraftExpiryTests.cs | 6 +-
.../SnapshotDraftServiceTests.cs | 6 +-
.../SnapshotDraftServiceTimerTests.cs | 8 +-
.../SnapshotMutationDefectTests.cs | 8 +-
.../SnapshotOwnerKeyTests.cs | 8 +-
.../SnapshotSelfCheckTests.cs | 4 +-
.../SnapshotStoreDefaultMembersTests.cs | 2 +-
.../SnapshotWatchHubTests.cs | 6 +-
.../SpawnedChildTests.cs | 6 +-
.../SpawnsStartupValidatorTests.cs | 6 +-
.../SqliteRevisionTriggerTests.cs | 6 +-
.../SqliteSnapshotChangePollTests.cs | 6 +-
.../SqliteStoreTests.cs | 4 +-
.../StartTests.cs | 6 +-
.../StateMachineSelfCheckHealthCheckTests.cs | 4 +-
.../SystemOwnedInstanceTests.cs | 6 +-
.../TimerDueAtAnswerTests.cs | 6 +-
.../TimerDueAtTests.cs | 6 +-
.../TimerFailureClassificationTests.cs | 2 +-
.../TimerFireConditionTests.cs | 6 +-
.../TimerSweepIsolationTests.cs | 6 +-
.../TransitionHistoryTests.cs | 6 +-
...ateMachine.Persistence.Integration.csproj} | 6 +-
.../TriggerInputValidationPathTests.cs | 8 +-
.../packages.lock.json | 12 +-
.../Fakes/CountingCharge.cs | 6 +-
.../Fakes/StressOrder.cs | 6 +-
.../Fixtures/StressFixture.cs | 2 +-
.../Fixtures/StressProfile.cs | 6 +-
.../Fixtures/TestPostgres.cs | 2 +-
.../ClaimContentionStressTests.cs | 6 +-
.../ExactlyOnceStressTests.cs | 8 +-
.../RevisionStoreModelTests.cs | 8 +-
.../IntegrationTests/ThroughputStressTests.cs | 8 +-
.../StressDb.cs | 6 +-
.../Trax.StateMachine.Tests.Stress.csproj} | 4 +-
.../packages.lock.json | 6 +-
.../Conformance/CheckoutConformanceTests.cs | 6 +-
.../Conformance/ConformanceRunnerTests.cs | 4 +-
.../Conformance/ConformanceTests.cs | 6 +-
.../Conformance/FixturePathsTests.cs | 8 +-
.../Conformance/FluentCheckoutTests.cs | 6 +-
.../Conformance/IrFormatParityTests.cs | 4 +-
.../Conformance/IrSchemaTests.cs | 4 +-
.../Conformance/MigrationGoldenTests.cs | 6 +-
.../Conformance/RefusalCodeParityTests.cs | 6 +-
.../Conformance/StrictInputGoldenTests.cs | 6 +-
.../Differential/DeclarativeTurnstileTests.cs | 8 +-
.../DifferentialConformanceTests.cs | 8 +-
.../DifferentialCorpusReplayTests.cs | 8 +-
.../Differential/StrictInputParityTests.cs | 6 +-
.../Differential/TwinSequenceParityTests.cs | 8 +-
.../Fakes/ConfiguredMachine.cs | 4 +-
.../Fakes/DeclarativeCheckout.cs | 4 +-
.../Fakes/DeclarativeTurnstile.cs | 4 +-
.../Fakes/FaultyMachine.cs | 2 +-
.../Fakes/FluentCheckout.cs | 2 +-
.../Fakes/GaugeMachine.cs | 4 +-
.../Fakes/IngestContracts.cs | 0
.../Fakes/IngestMachine.cs | 4 +-
.../Fakes/RangeMachine.cs | 4 +-
.../Fakes/ReminderMachine.cs | 2 +-
.../Fakes/RichExportMachine.cs | 4 +-
.../Fakes/StrictInputMachine.cs | 4 +-
.../Fakes/TestCheckout.cs | 2 +-
.../Fakes/TestTurnstile.cs | 2 +-
.../Fakes/TestTurnstileV2.cs | 2 +-
.../Fakes/WaitMachine.cs | 2 +-
.../Helpers/Categories.cs | 2 +-
.../Helpers/ConformanceTestee.cs | 4 +-
.../Helpers/FixturePaths.cs | 9 +-
.../Helpers/TwinEngine.cs | 2 +-
.../Helpers/TypedSurfaceJson.cs | 2 +-
.../Trax.StateMachine.Tests.csproj} | 6 +-
.../UnitTests/AdvanceTests.cs | 4 +-
.../CanonicalizationConformanceTests.cs | 6 +-
.../UnitTests/ClientManifestTests.cs | 2 +-
.../UnitTests/ComparisonRefusalTests.cs | 6 +-
.../DeclarativeAuthoringDefectTests.cs | 2 +-
.../UnitTests/DifferentialAuthoringTests.cs | 6 +-
.../UnitTests/DifferentialBuilderTests.cs | 4 +-
.../UnitTests/EngineContractTests.cs | 6 +-
.../UnitTests/EngineDefensiveTests.cs | 4 +-
.../UnitTests/EngineParityDefectTests.cs | 4 +-
.../UnitTests/EventWriteRuleTests.cs | 6 +-
.../UnitTests/IntrospectionTests.cs | 6 +-
.../UnitTests/InvokesDeclarationTests.cs | 8 +-
.../UnitTests/IrExporterTests.cs | 4 +-
.../UnitTests/MachineBuilderTests.cs | 2 +-
.../UnitTests/MachineInstanceIdTests.cs | 4 +-
.../UnitTests/MigrationTests.cs | 4 +-
.../UnitTests/ReductionEvaluatorTests.cs | 2 +-
.../UnitTests/RefusalPrecedenceTests.cs | 4 +-
.../UnitTests/RehydrateTests.cs | 4 +-
.../UnitTests/RuleEvaluatorTests.cs | 2 +-
.../UnitTests/RulesTests.cs | 4 +-
.../UnitTests/RulesVocabularyTests.cs | 8 +-
.../UnitTests/SchemaFormatTests.cs | 4 +-
.../UnitTests/SchemaStrictnessTests.cs | 4 +-
.../UnitTests/SchemaValidatorTests.cs | 2 +-
.../UnitTests/SerializationRoundTripTests.cs | 4 +-
.../UnitTests/SpawnDeclarationTests.cs | 4 +-
.../UnitTests/StateInvariantTests.cs | 4 +-
.../UnitTests/StorableJsonTests.cs | 4 +-
.../UnitTests/TimerDeclarationTests.cs | 6 +-
.../UnitTests/TotalityTests.cs | 4 +-
.../UnitTests/TriggerInputPropertyTests.cs | 6 +-
.../UnitTests/TriggerInputValidationTests.cs | 4 +-
.../UnitTests/TriggerMetadataTests.cs | 6 +-
.../UnitTests/TypedSchemaTests.cs | 2 +-
.../packages.lock.json | 12 +-
Trax.StateMachine/ts/AGENTS.md | 2 +-
Trax.StateMachine/ts/README.md | 2 +-
.../ts/docs/design/phase0-codegen-scope.md | 14 +-
.../ts/docs/design/tier1-machine-codegen.md | 2 +-
Trax.StateMachine/ts/package.json | 2 +-
Trax.StateMachine/ts/src/client/transport.ts | 2 +-
Trax.StateMachine/ts/src/index.ts | 4 +-
Trax.StateMachine/ts/src/machine.ts | 2 +-
Trax.StateMachine/ts/src/rules/interpreter.ts | 2 +-
Trax.StateMachine/ts/src/rules/irFormat.ts | 2 +-
Trax.StateMachine/ts/src/types.ts | 2 +-
.../src/components/landing/LayerDiagram.tsx | 2 +-
.../src/components/landing/PackageList.tsx | 6 +-
Trax.Website/src/data/order-recordings.json | 2 +-
656 files changed, 3848 insertions(+), 4042 deletions(-)
delete mode 100644 Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.Effect.StateMachine.Persistence.received.txt
delete mode 100644 Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.Effect.StateMachine.Testing.received.txt
delete mode 100644 Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.Effect.StateMachine.received.txt
create mode 100644 Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.StateMachine.Persistence.received.txt
create mode 100644 Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.StateMachine.Testing.received.txt
create mode 100644 Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.StateMachine.received.txt
delete mode 100644 Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/CompatibilitySuppressions.xml
delete mode 100644 Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CompatibilitySuppressions.xml
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/Actor.cs (97%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/CallerAuthorization.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/ChangeFeedStartupValidator.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/DraftClaimHold.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/DraftSweeper.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/EfSnapshotStore.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/EffectClaimStore.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/ISnapshotChangeListener.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/IdempotentEffect.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/InvokeOutbox.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/InvokeOutcomeDelivery.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/InvokeOutcomeReconciler.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/InvokedRun.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/InvokedRunCancellation.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/InvokedRunOutcomes.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/InvokedTrainLauncher.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/InvokesStartupValidator.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/Machine.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/MachineCensus.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/MachineGraph.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/MachineIdStartupValidator.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/MachineInstanceStore.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/MachineInstances.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/MachineRulesStartupValidator.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/MachineSchemaStartupValidator.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/Mutations/GenericContracts.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/Mutations/GenericJunctions.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/Mutations/GenericMarkers.cs (96%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/Mutations/GenericTrains.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/Mutations/StateMachineMutations.cs (93%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/Ports.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/RequestIdRing.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/SnapshotChangeListener.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/SnapshotDraftService.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/SnapshotEffectRunner.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/SnapshotFingerprint.cs (94%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/SnapshotLimits.cs (97%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/SnapshotMachineRegistry.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/SnapshotOwner.cs (97%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/SnapshotSelfCheck.cs (96%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/SnapshotWatchHub.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/SnapshotWriteSignal.cs (96%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/SpawnedEnds.cs (97%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/SpawnsStartupValidator.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/StartDeclarationValidator.cs (97%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/StateMachineInstruments.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/StateMachineOptions.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/StateMachineSelfCheckHealthCheck.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/StateMachinesBuilderExtensions.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/TimerFireResult.cs (97%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/TransitionNote.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence/Trax.Effect.StateMachine.Persistence.csproj => Trax.StateMachine.Persistence/Trax.StateMachine.Persistence.csproj} (84%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Persistence => Trax.StateMachine.Persistence}/packages.lock.json (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Testing => Trax.StateMachine.Testing}/DifferentialCorpus.cs (97%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Testing => Trax.StateMachine.Testing}/MachineConformance.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Testing/Trax.Effect.StateMachine.Testing.csproj => Trax.StateMachine.Testing/Trax.StateMachine.Testing.csproj} (62%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine.Testing => Trax.StateMachine.Testing}/packages.lock.json (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/CallerRule.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/CanonicalJson.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/ClientManifest.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/CorpusReplay.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Fluent.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Invokes.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/MachineDefinition.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/MachineTrigger.cs (97%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/RefusalCode.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Results.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Rules/ContextSchema.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Rules/DeclarativeModel.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Rules/IrExporter.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Rules/MemberPath.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Rules/Reduction.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Rules/ReductionEvaluator.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Rules/Rule.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Rules/RuleEvaluator.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Rules/Rules.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Rules/SchemaReflection.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Rules/SchemaValidator.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Rules/ValueFormats.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Snapshot.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/SnapshotMachine.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/StartDeclaration.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/StorableJson.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/Timers.cs (99%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/TransitionDefinition.cs (98%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine/Trax.Effect.StateMachine.csproj => Trax.StateMachine/Trax.StateMachine.csproj} (76%)
rename Trax.StateMachine/dotnet/src/{Trax.Effect.StateMachine => Trax.StateMachine}/packages.lock.json (100%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/ActorHierarchyTests.cs (94%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/AddStateMachinesBuilderTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/ChangeFeedStartupValidatorTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/ChangeFeedSwitchTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/ClientDivergenceMeterTests.cs (93%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/DiscardEffectTests.cs (94%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/DiscardRuleTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/DiscardTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/DraftLifetimeTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/DraftMachineScopeTests.cs (94%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/DraftWriteRulesTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/EfSnapshotStoreTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/EffectAndHandshakeDefectTests.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/EffectClaimStoreTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/EffectCommitIntegrityTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/EffectPendingTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/EventAuthorizationTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/EventRuleStartupTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/BuildMachine.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/DeclarativeTurnstileMachine.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/Effects.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/FluentMachines.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/PendingEffectMachines.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/RecordingLauncher.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/RevisionMachines.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/RuledMachines.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/SpawnMachines.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/SystemMachines.cs (91%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/TestOrder.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/TestTurnstile.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/TimerMachines.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fakes/TimerSweepMachines.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/CheckTraxInvariantsAttribute.cs (91%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/CountingDataContextFactory.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/InstanceHost.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/Marked.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/PausingSnapshotStore.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/PendingHarness.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/PostgresSetup.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/RawSql.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/ScratchDatabase.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/SkewedDatabaseClock.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/SnapshotNotices.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/SqliteDb.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/StartingHost.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/TestDb.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/Fixtures/TestPostgres.cs (86%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/GenericRulesTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/GenericSaveTimerTests.cs (93%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/IdempotentEffectTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/InvokeTokenStoreTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/InvokedRunLimitTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/InvokedRunOutputTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/InvokesDraftExpiryTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/InvokesReservedStateTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/MachineCensusTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/MachineConformanceTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/MachineEffectRunnerTests.cs (93%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/MachineExportIrTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/MachineInterleavingModelTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/MachineSchemaStartupTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/MachineTrainHookOutputTests.cs (93%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/MarkedMachineTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/MigrationSchemaTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/MutationErrorMessageTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/OrderAutosaveTests.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/OrderSendTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/PostgresChangeFeedTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/RegistryCorruptDataTests.cs (93%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/RegistryJunctionTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/RequestIdControlCharacterTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/RequestIdRingSizeTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/RequestIdRingTests.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/RequestIdScopeTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/RequestRetryAfterServerWriteTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/RevisionTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/ServerRecordTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/ServerlessProviderTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SnapshotAdvanceGuardTests.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SnapshotChangeListenerTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SnapshotChangeNotifyTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SnapshotDraftExpiryTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SnapshotDraftServiceTests.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SnapshotDraftServiceTimerTests.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SnapshotMutationDefectTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SnapshotOwnerKeyTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SnapshotSelfCheckTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SnapshotStoreDefaultMembersTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SnapshotWatchHubTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SpawnedChildTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SpawnsStartupValidatorTests.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SqliteRevisionTriggerTests.cs (92%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SqliteSnapshotChangePollTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SqliteStoreTests.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/StartTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/StateMachineSelfCheckHealthCheckTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/SystemOwnedInstanceTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/TimerDueAtAnswerTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/TimerDueAtTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/TimerFailureClassificationTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/TimerFireConditionTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/TimerSweepIsolationTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/TransitionHistoryTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration/Trax.Effect.StateMachine.Persistence.Integration.csproj => Trax.StateMachine.Persistence.Integration/Trax.StateMachine.Persistence.Integration.csproj} (88%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/TriggerInputValidationPathTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Persistence.Integration => Trax.StateMachine.Persistence.Integration}/packages.lock.json (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests.Stress => Trax.StateMachine.Tests.Stress}/Fakes/CountingCharge.cs (83%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests.Stress => Trax.StateMachine.Tests.Stress}/Fakes/StressOrder.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests.Stress => Trax.StateMachine.Tests.Stress}/Fixtures/StressFixture.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests.Stress => Trax.StateMachine.Tests.Stress}/Fixtures/StressProfile.cs (90%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests.Stress => Trax.StateMachine.Tests.Stress}/Fixtures/TestPostgres.cs (88%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests.Stress => Trax.StateMachine.Tests.Stress}/IntegrationTests/ClaimContentionStressTests.cs (94%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests.Stress => Trax.StateMachine.Tests.Stress}/IntegrationTests/ExactlyOnceStressTests.cs (94%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests.Stress => Trax.StateMachine.Tests.Stress}/IntegrationTests/RevisionStoreModelTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests.Stress => Trax.StateMachine.Tests.Stress}/IntegrationTests/ThroughputStressTests.cs (92%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests.Stress => Trax.StateMachine.Tests.Stress}/StressDb.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests.Stress/Trax.Effect.StateMachine.Tests.Stress.csproj => Trax.StateMachine.Tests.Stress/Trax.StateMachine.Tests.Stress.csproj} (86%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests.Stress => Trax.StateMachine.Tests.Stress}/packages.lock.json (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Conformance/CheckoutConformanceTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Conformance/ConformanceRunnerTests.cs (88%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Conformance/ConformanceTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Conformance/FixturePathsTests.cs (82%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Conformance/FluentCheckoutTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Conformance/IrFormatParityTests.cs (93%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Conformance/IrSchemaTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Conformance/MigrationGoldenTests.cs (93%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Conformance/RefusalCodeParityTests.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Conformance/StrictInputGoldenTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Differential/DeclarativeTurnstileTests.cs (90%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Differential/DifferentialConformanceTests.cs (90%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Differential/DifferentialCorpusReplayTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Differential/StrictInputParityTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Differential/TwinSequenceParityTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/ConfiguredMachine.cs (87%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/DeclarativeCheckout.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/DeclarativeTurnstile.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/FaultyMachine.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/FluentCheckout.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/GaugeMachine.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/IngestContracts.cs (100%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/IngestMachine.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/RangeMachine.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/ReminderMachine.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/RichExportMachine.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/StrictInputMachine.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/TestCheckout.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/TestTurnstile.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/TestTurnstileV2.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Fakes/WaitMachine.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Helpers/Categories.cs (91%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Helpers/ConformanceTestee.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Helpers/FixturePaths.cs (93%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Helpers/TwinEngine.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/Helpers/TypedSurfaceJson.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests/Trax.Effect.StateMachine.Tests.csproj => Trax.StateMachine.Tests/Trax.StateMachine.Tests.csproj} (76%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/AdvanceTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/CanonicalizationConformanceTests.cs (94%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/ClientManifestTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/ComparisonRefusalTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/DeclarativeAuthoringDefectTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/DifferentialAuthoringTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/DifferentialBuilderTests.cs (94%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/EngineContractTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/EngineDefensiveTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/EngineParityDefectTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/EventWriteRuleTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/IntrospectionTests.cs (93%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/InvokesDeclarationTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/IrExporterTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/MachineBuilderTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/MachineInstanceIdTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/MigrationTests.cs (93%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/ReductionEvaluatorTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/RefusalPrecedenceTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/RehydrateTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/RuleEvaluatorTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/RulesTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/RulesVocabularyTests.cs (93%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/SchemaFormatTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/SchemaStrictnessTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/SchemaValidatorTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/SerializationRoundTripTests.cs (97%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/SpawnDeclarationTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/StateInvariantTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/StorableJsonTests.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/TimerDeclarationTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/TotalityTests.cs (96%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/TriggerInputPropertyTests.cs (98%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/TriggerInputValidationTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/TriggerMetadataTests.cs (95%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/UnitTests/TypedSchemaTests.cs (99%)
rename Trax.StateMachine/dotnet/tests/{Trax.Effect.StateMachine.Tests => Trax.StateMachine.Tests}/packages.lock.json (97%)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d52b268c2..57fa5b72c 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -809,7 +809,7 @@ jobs:
--tools-dir "$RUNNER_TEMP/engine" --documents 'src/graphql/*.graphql' --check) \
|| { echo "::error::The StateMachine sample's generated client is out of date. Regenerate it with the commands at the top of $api/Program.cs and commit the result."; exit 1; }
- # The TypeScript twin of Trax.Effect.StateMachine. Its machines/ corpus is also read by the
+ # The TypeScript twin of Trax.StateMachine. Its machines/ corpus is also read by the
# Trax.Effect conformance tests and the Trax.Cli byte-parity tests, which is why those
# folders list it upstream.
state-machine:
diff --git a/AGENTS.md b/AGENTS.md
index 104103c47..e18610096 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -91,7 +91,7 @@ title, the body below it. A security change or an open hotspot uses GitHub's `>
| 🟨 | Data (`data`) | `Trax.Effect.Data.*` (Postgres, Sqlite, InMemory), migrations, SQL, the run-record tables |
| 🟫 | Plumbing (`plumbing`) | Effect providers, junction providers, broadcasters (RabbitMQ, SignalR), lifecycle hooks |
| 🟩 | Trains (`trains`) | `Train` (Core), `ServiceTrain` (Effect), junctions, chains, Memory, decisions, `Parallel` |
-| 🟪 | Machines (`machines`) | `Trax.Effect.StateMachine*` and `@traxsharp/state-machine`, its TypeScript twin |
+| 🟪 | Machines (`machines`) | `Trax.StateMachine*` and `@traxsharp/state-machine`, its TypeScript twin |
| 🟧 | Dispatch (`dispatch`) | Mediator (train bus, authorization), Scheduler (jobs, manifests, recovery), remote runners, Lambda |
| 🟦 | Surface (`surface`) | Api (GraphQL, auth, persisted operations, generated clients, the React operations console) |
| ⬛ | Tooling (`tooling`) | CLI, analyzers, architecture and ADR guards, CI, release, docs |
diff --git a/Trax.Api/src/Trax.Api.Auth.ApiKey/packages.lock.json b/Trax.Api/src/Trax.Api.Auth.ApiKey/packages.lock.json
index d73248f0f..4f3bda649 100644
--- a/Trax.Api/src/Trax.Api.Auth.ApiKey/packages.lock.json
+++ b/Trax.Api/src/Trax.Api.Auth.ApiKey/packages.lock.json
@@ -42,28 +42,28 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Microsoft.EntityFrameworkCore": {
diff --git a/Trax.Api/src/Trax.Api.Auth.Jwt.Cognito.Issuer/packages.lock.json b/Trax.Api/src/Trax.Api.Auth.Jwt.Cognito.Issuer/packages.lock.json
index 5f251b41a..a01a27b4f 100644
--- a/Trax.Api/src/Trax.Api.Auth.Jwt.Cognito.Issuer/packages.lock.json
+++ b/Trax.Api/src/Trax.Api.Auth.Jwt.Cognito.Issuer/packages.lock.json
@@ -186,31 +186,31 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Microsoft.AspNetCore.Authentication.JwtBearer": {
diff --git a/Trax.Api/src/Trax.Api.Auth.Jwt.Cognito/packages.lock.json b/Trax.Api/src/Trax.Api.Auth.Jwt.Cognito/packages.lock.json
index 7c6d555e8..91bfd46d6 100644
--- a/Trax.Api/src/Trax.Api.Auth.Jwt.Cognito/packages.lock.json
+++ b/Trax.Api/src/Trax.Api.Auth.Jwt.Cognito/packages.lock.json
@@ -174,31 +174,31 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Microsoft.AspNetCore.Authentication.JwtBearer": {
diff --git a/Trax.Api/src/Trax.Api.Auth.Jwt.Testing/packages.lock.json b/Trax.Api/src/Trax.Api.Auth.Jwt.Testing/packages.lock.json
index f4f05ae23..19a484c3c 100644
--- a/Trax.Api/src/Trax.Api.Auth.Jwt.Testing/packages.lock.json
+++ b/Trax.Api/src/Trax.Api.Auth.Jwt.Testing/packages.lock.json
@@ -104,28 +104,28 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Microsoft.AspNetCore.Authentication.JwtBearer": {
diff --git a/Trax.Api/src/Trax.Api.Auth.Jwt/packages.lock.json b/Trax.Api/src/Trax.Api.Auth.Jwt/packages.lock.json
index 3492c7326..800583b45 100644
--- a/Trax.Api/src/Trax.Api.Auth.Jwt/packages.lock.json
+++ b/Trax.Api/src/Trax.Api.Auth.Jwt/packages.lock.json
@@ -106,28 +106,28 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Microsoft.EntityFrameworkCore": {
diff --git a/Trax.Api/src/Trax.Api.Auth.Oidc/packages.lock.json b/Trax.Api/src/Trax.Api.Auth.Oidc/packages.lock.json
index 1f7e2cfe9..425da66b3 100644
--- a/Trax.Api/src/Trax.Api.Auth.Oidc/packages.lock.json
+++ b/Trax.Api/src/Trax.Api.Auth.Oidc/packages.lock.json
@@ -106,28 +106,28 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Microsoft.EntityFrameworkCore": {
diff --git a/Trax.Api/src/Trax.Api.Auth/packages.lock.json b/Trax.Api/src/Trax.Api.Auth/packages.lock.json
index f6806707d..3db8a9058 100644
--- a/Trax.Api/src/Trax.Api.Auth/packages.lock.json
+++ b/Trax.Api/src/Trax.Api.Auth/packages.lock.json
@@ -36,28 +36,28 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Microsoft.EntityFrameworkCore": {
diff --git a/Trax.Api/src/Trax.Api.Dashboard/packages.lock.json b/Trax.Api/src/Trax.Api.Dashboard/packages.lock.json
index f1358c1f0..85e128e80 100644
--- a/Trax.Api/src/Trax.Api.Dashboard/packages.lock.json
+++ b/Trax.Api/src/Trax.Api.Dashboard/packages.lock.json
@@ -533,37 +533,37 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.scheduler": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
+ "Cronos": "[0.13.0, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Mediator": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.scheduler": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
- "Cronos": "[0.13.0, )",
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Mediator": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Cronos": {
diff --git a/Trax.Api/src/Trax.Api.GraphQL.Audit/packages.lock.json b/Trax.Api/src/Trax.Api.GraphQL.Audit/packages.lock.json
index f1358c1f0..85e128e80 100644
--- a/Trax.Api/src/Trax.Api.GraphQL.Audit/packages.lock.json
+++ b/Trax.Api/src/Trax.Api.GraphQL.Audit/packages.lock.json
@@ -533,37 +533,37 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.scheduler": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
+ "Cronos": "[0.13.0, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Mediator": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.scheduler": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
- "Cronos": "[0.13.0, )",
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Mediator": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Cronos": {
diff --git a/Trax.Api/src/Trax.Api.GraphQL.Client.Trax/packages.lock.json b/Trax.Api/src/Trax.Api.GraphQL.Client.Trax/packages.lock.json
index 8c3cd87b9..0b13b9573 100644
--- a/Trax.Api/src/Trax.Api.GraphQL.Client.Trax/packages.lock.json
+++ b/Trax.Api/src/Trax.Api.GraphQL.Client.Trax/packages.lock.json
@@ -570,31 +570,31 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"GraphQL": {
diff --git a/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Middleware/MachineDocumentMiddleware.cs b/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Middleware/MachineDocumentMiddleware.cs
index f5e95b767..ab1e6cf19 100644
--- a/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Middleware/MachineDocumentMiddleware.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Middleware/MachineDocumentMiddleware.cs
@@ -4,8 +4,8 @@
using Microsoft.Extensions.DependencyInjection;
using Trax.Api.GraphQL.PersistedOperations.Services;
using Trax.Api.GraphQL.PersistedOperations.Storage;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.GraphQL.PersistedOperations.Middleware;
diff --git a/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Services/ClientManifestExport.cs b/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Services/ClientManifestExport.cs
index 760934540..4caa7018f 100644
--- a/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Services/ClientManifestExport.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Services/ClientManifestExport.cs
@@ -10,9 +10,9 @@
using Trax.Api.GraphQL.Configuration;
using Trax.Api.GraphQL.TypeModules;
using Trax.Effect.Configuration.ClientExport;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Mediator.Services.TrainDiscovery;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.GraphQL.PersistedOperations.Services;
diff --git a/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Services/MachineDocuments.cs b/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Services/MachineDocuments.cs
index 85f442989..7cc72bdfd 100644
--- a/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Services/MachineDocuments.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Services/MachineDocuments.cs
@@ -5,7 +5,7 @@
using HotChocolate.Types;
using Trax.Api.GraphQL.TypeModules;
using Trax.Effect.Attributes;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.GraphQL.PersistedOperations.Services;
diff --git a/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Startup/MachineDocumentRegistration.cs b/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Startup/MachineDocumentRegistration.cs
index 6c3eaf9cb..18e87774a 100644
--- a/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Startup/MachineDocumentRegistration.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Startup/MachineDocumentRegistration.cs
@@ -9,8 +9,8 @@
using Trax.Api.GraphQL.PersistedOperations.Services;
using Trax.Api.GraphQL.PersistedOperations.Storage;
using Trax.Api.GraphQL.TypeModules;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Mediator.Services.TrainDiscovery;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.GraphQL.PersistedOperations.Startup;
diff --git a/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/packages.lock.json b/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/packages.lock.json
index 0cfeb6ffd..0eedd2fac 100644
--- a/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/packages.lock.json
+++ b/Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/packages.lock.json
@@ -549,37 +549,37 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.scheduler": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
+ "Cronos": "[0.13.0, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Mediator": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.scheduler": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
- "Cronos": "[0.13.0, )",
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Mediator": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Cronos": {
diff --git a/Trax.Api/src/Trax.Api.GraphQL.Testing/packages.lock.json b/Trax.Api/src/Trax.Api.GraphQL.Testing/packages.lock.json
index 4a4326120..65b783618 100644
--- a/Trax.Api/src/Trax.Api.GraphQL.Testing/packages.lock.json
+++ b/Trax.Api/src/Trax.Api.GraphQL.Testing/packages.lock.json
@@ -655,40 +655,40 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.scheduler": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
+ "Cronos": "[0.13.0, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Mediator": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.scheduler": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
- "Cronos": "[0.13.0, )",
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Mediator": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Cronos": {
diff --git a/Trax.Api/src/Trax.Api.GraphQL/Extensions/GraphQLServiceExtensions.cs b/Trax.Api/src/Trax.Api.GraphQL/Extensions/GraphQLServiceExtensions.cs
index 0df0dfd36..23f866149 100644
--- a/Trax.Api/src/Trax.Api.GraphQL/Extensions/GraphQLServiceExtensions.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL/Extensions/GraphQLServiceExtensions.cs
@@ -40,10 +40,10 @@
using Trax.Effect.Services.ChangeSignal;
using Trax.Effect.Services.TrainEventBroadcaster;
using Trax.Effect.Services.TrainLifecycleHookFactory;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Mediator.Services.TrainDiscovery;
using Trax.Scheduler.Services.DeadLetterRequeue;
using Trax.Scheduler.Services.Effects;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.GraphQL.Extensions;
diff --git a/Trax.Api/src/Trax.Api.GraphQL/Startup/MachineRegistrationOrderValidator.cs b/Trax.Api/src/Trax.Api.GraphQL/Startup/MachineRegistrationOrderValidator.cs
index 93ca78ad8..4e61c227f 100644
--- a/Trax.Api/src/Trax.Api.GraphQL/Startup/MachineRegistrationOrderValidator.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL/Startup/MachineRegistrationOrderValidator.cs
@@ -1,5 +1,5 @@
using Trax.Api.Auth;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.GraphQL.Startup;
diff --git a/Trax.Api/src/Trax.Api.GraphQL/Subscriptions/LifecycleStreamRule.cs b/Trax.Api/src/Trax.Api.GraphQL/Subscriptions/LifecycleStreamRule.cs
index c6906edc0..f5b53cf00 100644
--- a/Trax.Api/src/Trax.Api.GraphQL/Subscriptions/LifecycleStreamRule.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL/Subscriptions/LifecycleStreamRule.cs
@@ -47,12 +47,12 @@ TrainLifecycleStreamOptions options
StringComparer.Ordinal
)
{
- typeof(Trax.Effect.StateMachine.Persistence.Mutations.ISaveSnapshot).FullName!,
- typeof(Trax.Effect.StateMachine.Persistence.Mutations.IAdvanceSnapshot).FullName!,
- typeof(Trax.Effect.StateMachine.Persistence.Mutations.ILoadSnapshot).FullName!,
- typeof(Trax.Effect.StateMachine.Persistence.Mutations.ISendSnapshot).FullName!,
- typeof(Trax.Effect.StateMachine.Persistence.Mutations.IStartSnapshot).FullName!,
- typeof(Trax.Effect.StateMachine.Persistence.Mutations.IDiscardSnapshot).FullName!,
+ typeof(Trax.StateMachine.Persistence.Mutations.ISaveSnapshot).FullName!,
+ typeof(Trax.StateMachine.Persistence.Mutations.IAdvanceSnapshot).FullName!,
+ typeof(Trax.StateMachine.Persistence.Mutations.ILoadSnapshot).FullName!,
+ typeof(Trax.StateMachine.Persistence.Mutations.ISendSnapshot).FullName!,
+ typeof(Trax.StateMachine.Persistence.Mutations.IStartSnapshot).FullName!,
+ typeof(Trax.StateMachine.Persistence.Mutations.IDiscardSnapshot).FullName!,
};
/// Whether events of the train named are published.
diff --git a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineChanged.cs b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineChanged.cs
index 16453254a..346eca11d 100644
--- a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineChanged.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineChanged.cs
@@ -8,8 +8,8 @@
using HotChocolate.Types;
using Microsoft.Extensions.DependencyInjection;
using Trax.Api.GraphQL.Authorization;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.GraphQL.TypeModules;
diff --git a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineEnums.cs b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineEnums.cs
index 670d33276..ed721b711 100644
--- a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineEnums.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineEnums.cs
@@ -2,8 +2,8 @@
using System.Text.Json;
using System.Text.RegularExpressions;
using HotChocolate.Types;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.GraphQL.TypeModules;
diff --git a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineInvokedRun.cs b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineInvokedRun.cs
index 8acfda79b..4e3a18954 100644
--- a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineInvokedRun.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineInvokedRun.cs
@@ -5,7 +5,7 @@
using Microsoft.Extensions.DependencyInjection;
using Trax.Effect.Data.Services.IDataContextFactory;
using Trax.Effect.Enums;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.GraphQL.TypeModules;
diff --git a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineJsonNamingInterceptor.cs b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineJsonNamingInterceptor.cs
index 210b8c4d8..34e38715b 100644
--- a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineJsonNamingInterceptor.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineJsonNamingInterceptor.cs
@@ -2,7 +2,7 @@
using System.Text.Json.Serialization;
using HotChocolate.Configuration;
using HotChocolate.Types.Descriptors.Configurations;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.GraphQL.TypeModules;
diff --git a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineResolvers.cs b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineResolvers.cs
index 2c21a3771..fbd7021dd 100644
--- a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineResolvers.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineResolvers.cs
@@ -6,11 +6,11 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Trax.Effect.Attributes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using Trax.Effect.StateMachine.Persistence.Mutations;
using Trax.Effect.Utils;
using Trax.Mediator.Services.TrainExecution;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using Trax.StateMachine.Persistence.Mutations;
namespace Trax.Api.GraphQL.TypeModules;
diff --git a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineSurface.cs b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineSurface.cs
index 3c975bf49..d647a0fbb 100644
--- a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineSurface.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineSurface.cs
@@ -2,8 +2,8 @@
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Text.Json.Serialization.Metadata;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.GraphQL.TypeModules;
diff --git a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineTypeModule.cs b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineTypeModule.cs
index eef698157..853f8aae5 100644
--- a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineTypeModule.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/MachineTypeModule.cs
@@ -8,8 +8,8 @@
using HotChocolate.Types;
using HotChocolate.Types.Descriptors;
using Trax.Api.GraphQL.Validation;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.GraphQL.TypeModules;
diff --git a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/RunProgress.cs b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/RunProgress.cs
index 31055f8f9..fc6447498 100644
--- a/Trax.Api/src/Trax.Api.GraphQL/TypeModules/RunProgress.cs
+++ b/Trax.Api/src/Trax.Api.GraphQL/TypeModules/RunProgress.cs
@@ -22,10 +22,10 @@
using Trax.Effect.Data.Services.IDataContextFactory;
using Trax.Effect.Enums;
using Trax.Effect.Models;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Mediator.Services.Principal;
using Trax.Mediator.Services.TrainDiscovery;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.GraphQL.TypeModules;
diff --git a/Trax.Api/src/Trax.Api.GraphQL/packages.lock.json b/Trax.Api/src/Trax.Api.GraphQL/packages.lock.json
index edaa9f1bc..79ed066aa 100644
--- a/Trax.Api/src/Trax.Api.GraphQL/packages.lock.json
+++ b/Trax.Api/src/Trax.Api.GraphQL/packages.lock.json
@@ -596,37 +596,37 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.scheduler": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
+ "Cronos": "[0.13.0, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Mediator": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.scheduler": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
- "Cronos": "[0.13.0, )",
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Mediator": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Cronos": {
diff --git a/Trax.Api/src/Trax.Api/Extensions/ApiServiceExtensions.cs b/Trax.Api/src/Trax.Api/Extensions/ApiServiceExtensions.cs
index 80eb8f7e3..7f60d5112 100644
--- a/Trax.Api/src/Trax.Api/Extensions/ApiServiceExtensions.cs
+++ b/Trax.Api/src/Trax.Api/Extensions/ApiServiceExtensions.cs
@@ -4,9 +4,9 @@
using Trax.Api.Services.HealthCheck;
using Trax.Api.Services.Metrics;
using Trax.Api.Services.Principal;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Mediator.Services.Principal;
using Trax.Mediator.Services.TrainAuthorization;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.Extensions;
diff --git a/Trax.Api/src/Trax.Api/Services/Authorization/HttpCallerAuthorization.cs b/Trax.Api/src/Trax.Api/Services/Authorization/HttpCallerAuthorization.cs
index 242bb0038..5199c0e8a 100644
--- a/Trax.Api/src/Trax.Api/Services/Authorization/HttpCallerAuthorization.cs
+++ b/Trax.Api/src/Trax.Api/Services/Authorization/HttpCallerAuthorization.cs
@@ -1,6 +1,6 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.Services.Authorization;
diff --git a/Trax.Api/src/Trax.Api/packages.lock.json b/Trax.Api/src/Trax.Api/packages.lock.json
index 954b13137..08ccc1ea8 100644
--- a/Trax.Api/src/Trax.Api/packages.lock.json
+++ b/Trax.Api/src/Trax.Api/packages.lock.json
@@ -36,37 +36,37 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.scheduler": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
+ "Cronos": "[0.13.0, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Mediator": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.scheduler": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
- "Cronos": "[0.13.0, )",
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Mediator": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Cronos": {
diff --git a/Trax.Api/tests/Trax.Api.GraphQL.Testing.Tests/packages.lock.json b/Trax.Api/tests/Trax.Api.GraphQL.Testing.Tests/packages.lock.json
index 3bf55f196..83eb15639 100644
--- a/Trax.Api/tests/Trax.Api.GraphQL.Testing.Tests/packages.lock.json
+++ b/Trax.Api/tests/Trax.Api.GraphQL.Testing.Tests/packages.lock.json
@@ -764,40 +764,40 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.scheduler": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
+ "Cronos": "[0.13.0, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Mediator": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.scheduler": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
- "Cronos": "[0.13.0, )",
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Mediator": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Cronos": {
diff --git a/Trax.Api/tests/Trax.Api.Tests.Meta/packages.lock.json b/Trax.Api/tests/Trax.Api.Tests.Meta/packages.lock.json
index 825bdcb3a..9ac43ad3d 100644
--- a/Trax.Api/tests/Trax.Api.Tests.Meta/packages.lock.json
+++ b/Trax.Api/tests/Trax.Api.Tests.Meta/packages.lock.json
@@ -942,40 +942,40 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.scheduler": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
+ "Cronos": "[0.13.0, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Mediator": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.scheduler": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
- "Cronos": "[0.13.0, )",
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Mediator": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Cronos": {
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/ClientDocumentsE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/ClientDocumentsE2ETests.cs
index e93b4d3e8..d88f1f572 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/ClientDocumentsE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/ClientDocumentsE2ETests.cs
@@ -7,7 +7,7 @@
using Trax.Api.GraphQL.PersistedOperations.Extensions;
using Trax.Api.GraphQL.PersistedOperations.Services;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/ClientManifestExportTests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/ClientManifestExportTests.cs
index 19f20f199..44a0889fe 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/ClientManifestExportTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/ClientManifestExportTests.cs
@@ -4,7 +4,7 @@
using Trax.Api.GraphQL.PersistedOperations.Services;
using Trax.Api.StateMachine.E2E.Fakes;
using Trax.Effect.Configuration.ClientExport;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/E2EHost.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/E2EHost.cs
index fde739765..caaed2a48 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/E2EHost.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/E2EHost.cs
@@ -21,7 +21,6 @@
using Trax.Effect.JunctionProvider.Progress.Extensions;
using Trax.Effect.Provider.Json.Extensions;
using Trax.Effect.Provider.Parameter.Extensions;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Mediator.Extensions;
using Trax.Mediator.Services.TrainDiscovery;
using Trax.Mediator.Services.TrainExecution;
@@ -29,6 +28,7 @@
using Trax.Scheduler.Services.JobSubmitter;
using Trax.Scheduler.Services.Operations;
using Trax.Scheduler.Services.TraxScheduler;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/E2ESql.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/E2ESql.cs
index 6efd6ac2b..f7ca15570 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/E2ESql.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/E2ESql.cs
@@ -1,5 +1,5 @@
using Npgsql;
-using Trax.Effect.StateMachine.Persistence.Mutations;
+using Trax.StateMachine.Persistence.Mutations;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/MemoMachine.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/MemoMachine.cs
index a56d203c3..b23987f45 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/MemoMachine.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/MemoMachine.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Nodes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
namespace Trax.Api.StateMachine.E2E.Fakes;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/ServedMachines.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/ServedMachines.cs
index b468020dc..9ef9c5d85 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/ServedMachines.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/ServedMachines.cs
@@ -1,6 +1,6 @@
using Microsoft.Extensions.DependencyInjection;
using Trax.Effect.Attributes;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E.Fakes;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/ShelfMachine.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/ShelfMachine.cs
index 1190929d6..a6188a7c6 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/ShelfMachine.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/ShelfMachine.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Nodes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
namespace Trax.Api.StateMachine.E2E.Fakes;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/SnoozeMachine.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/SnoozeMachine.cs
index f86a692f8..fff204bcd 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/SnoozeMachine.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/SnoozeMachine.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Nodes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
namespace Trax.Api.StateMachine.E2E.Fakes;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/TicketMachine.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/TicketMachine.cs
index 55430a401..b72294aaa 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/TicketMachine.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/TicketMachine.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Nodes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
namespace Trax.Api.StateMachine.E2E.Fakes;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/WizardMachine.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/WizardMachine.cs
index 5ad8bf0dd..32ee5f5b0 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/WizardMachine.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Fakes/WizardMachine.cs
@@ -5,9 +5,9 @@
using Trax.Effect.Attributes;
using Trax.Effect.Services.EffectJunction;
using Trax.Effect.Services.ServiceTrain;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
namespace Trax.Api.StateMachine.E2E.Fakes;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/GeneratedTrainDocumentsRemovedE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/GeneratedTrainDocumentsRemovedE2ETests.cs
index f052014e3..0ddf2de98 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/GeneratedTrainDocumentsRemovedE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/GeneratedTrainDocumentsRemovedE2ETests.cs
@@ -5,7 +5,7 @@
using Trax.Api.GraphQL.PersistedOperations.Extensions;
using Trax.Api.GraphQL.PersistedOperations.Services;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/GenericOptInE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/GenericOptInE2ETests.cs
index 737a821a7..d8b5edebc 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/GenericOptInE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/GenericOptInE2ETests.cs
@@ -176,9 +176,7 @@ await start
.Which.ToString()
.Should()
.Contain(
- nameof(
- Trax.Effect.StateMachine.Persistence.GenericStateMachineMutationOptions.Policy
- )
+ nameof(Trax.StateMachine.Persistence.GenericStateMachineMutationOptions.Policy)
);
}
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineChangedE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineChangedE2ETests.cs
index 7b87c3b7b..d0ec5976c 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineChangedE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineChangedE2ETests.cs
@@ -19,8 +19,8 @@
using Trax.Effect.Models.Metadata;
using Trax.Effect.Models.Metadata.DTOs;
using Trax.Effect.Models.WorkQueue.DTOs;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineClientResultE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineClientResultE2ETests.cs
index 75536829d..bab349215 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineClientResultE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineClientResultE2ETests.cs
@@ -8,8 +8,8 @@
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineDocumentCrossNodeTests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineDocumentCrossNodeTests.cs
index 0d5da36cb..77278ffc2 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineDocumentCrossNodeTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineDocumentCrossNodeTests.cs
@@ -8,8 +8,8 @@
using Trax.Api.GraphQL.PersistedOperations.Configuration;
using Trax.Api.GraphQL.PersistedOperations.Services;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineDocumentStorageTests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineDocumentStorageTests.cs
index 86ab59046..45a3dafd9 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineDocumentStorageTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineDocumentStorageTests.cs
@@ -4,7 +4,7 @@
using Trax.Api.GraphQL.PersistedOperations.Configuration;
using Trax.Api.GraphQL.PersistedOperations.Services;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineDocumentsE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineDocumentsE2ETests.cs
index c01a35417..105ce7452 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineDocumentsE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineDocumentsE2ETests.cs
@@ -8,8 +8,8 @@
using Trax.Api.GraphQL.PersistedOperations.Broadcasting;
using Trax.Api.GraphQL.PersistedOperations.Services;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineEventsE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineEventsE2ETests.cs
index 302d7f91c..1c9e245fb 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineEventsE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineEventsE2ETests.cs
@@ -2,8 +2,8 @@
using AwesomeAssertions;
using Microsoft.Extensions.Hosting;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence.Mutations;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence.Mutations;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachinePushE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachinePushE2ETests.cs
index 9fe31fee0..d76ee6669 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachinePushE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachinePushE2ETests.cs
@@ -4,7 +4,7 @@
using HotChocolate.Types;
using Microsoft.Extensions.Hosting;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRegistrationE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRegistrationE2ETests.cs
index 5b2db7e8e..f1c70c456 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRegistrationE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRegistrationE2ETests.cs
@@ -3,7 +3,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRequestIdE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRequestIdE2ETests.cs
index 506c461a3..1fbabfec7 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRequestIdE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRequestIdE2ETests.cs
@@ -9,8 +9,8 @@
using Trax.Effect.Models.Metadata;
using Trax.Effect.Models.Metadata.DTOs;
using Trax.Effect.Models.WorkQueue.DTOs;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRulesE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRulesE2ETests.cs
index c434d3159..4a08367c2 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRulesE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRulesE2ETests.cs
@@ -4,8 +4,8 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRunRecordE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRunRecordE2ETests.cs
index 00a572f67..a80cfae8a 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRunRecordE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachineRunRecordE2ETests.cs
@@ -2,7 +2,7 @@
using AwesomeAssertions;
using Microsoft.Extensions.Hosting;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine.Persistence.Mutations;
+using Trax.StateMachine.Persistence.Mutations;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Machines.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Machines.cs
index 709a9be39..bf455448c 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Machines.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Machines.cs
@@ -1,7 +1,7 @@
using System.Text.Json;
using System.Text.Json.Nodes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachinesRootSchemaTests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachinesRootSchemaTests.cs
index 02f5fa4f4..75c7938fe 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachinesRootSchemaTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/MachinesRootSchemaTests.cs
@@ -3,7 +3,7 @@
using HotChocolate.Types;
using Microsoft.Extensions.Hosting;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/OperatorMachineDefinitionsE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/OperatorMachineDefinitionsE2ETests.cs
index 3a7af9618..3839c613d 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/OperatorMachineDefinitionsE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/OperatorMachineDefinitionsE2ETests.cs
@@ -3,7 +3,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/OperatorMachineFeedE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/OperatorMachineFeedE2ETests.cs
index 69642fb89..0febb7d63 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/OperatorMachineFeedE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/OperatorMachineFeedE2ETests.cs
@@ -4,8 +4,8 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Scheduler.Services.Operations;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/OperatorMachineInstancesE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/OperatorMachineInstancesE2ETests.cs
index 49305a930..c044b9cd6 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/OperatorMachineInstancesE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/OperatorMachineInstancesE2ETests.cs
@@ -15,12 +15,12 @@
using Trax.Effect.Extensions;
using Trax.Effect.JunctionProvider.Progress.Extensions;
using Trax.Effect.Provider.Json.Extensions;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Mediator.Extensions;
using Trax.Mediator.Services.TrainDiscovery;
using Trax.Mediator.Services.TrainExecution;
using Trax.Scheduler.Configuration;
using Trax.Scheduler.Services.Operations;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/ShelfHosts.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/ShelfHosts.cs
index 71f006875..1b0b7a52b 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/ShelfHosts.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/ShelfHosts.cs
@@ -2,7 +2,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Trax.Api.StateMachine.E2E.Fakes;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/StateMachineGraphQLE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/StateMachineGraphQLE2ETests.cs
index f9a2bf399..edc0d6920 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/StateMachineGraphQLE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/StateMachineGraphQLE2ETests.cs
@@ -2,8 +2,8 @@
using AwesomeAssertions;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Trax.Api.Tests.StateMachine.E2E.csproj b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Trax.Api.Tests.StateMachine.E2E.csproj
index ab82f6a62..e11ca1ed2 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Trax.Api.Tests.StateMachine.E2E.csproj
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/Trax.Api.Tests.StateMachine.E2E.csproj
@@ -38,8 +38,8 @@
-
-
+
+
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/TraxCallerSnapshotPrincipal.cs b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/TraxCallerSnapshotPrincipal.cs
index a70c9f3eb..a8f28a8e9 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/TraxCallerSnapshotPrincipal.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/TraxCallerSnapshotPrincipal.cs
@@ -1,5 +1,5 @@
using Trax.Api.Auth;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.StateMachine.E2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/packages.lock.json b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/packages.lock.json
index f6725f5c1..dc188d2b8 100644
--- a/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/packages.lock.json
+++ b/Trax.Api/tests/Trax.Api.Tests.StateMachine.E2E/packages.lock.json
@@ -727,37 +727,37 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.scheduler": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
+ "Cronos": "[0.13.0, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Mediator": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.scheduler": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
- "Cronos": "[0.13.0, )",
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Mediator": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Cronos": {
diff --git a/Trax.Api/tests/Trax.Api.Tests.Stress/IntegrationTests/MachineChangedStressTests.cs b/Trax.Api/tests/Trax.Api.Tests.Stress/IntegrationTests/MachineChangedStressTests.cs
index a920563b4..24396e6ea 100644
--- a/Trax.Api/tests/Trax.Api.Tests.Stress/IntegrationTests/MachineChangedStressTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.Stress/IntegrationTests/MachineChangedStressTests.cs
@@ -22,7 +22,6 @@
using Trax.Effect.Data.Services.IDataContextFactory;
using Trax.Effect.Extensions;
using Trax.Effect.Provider.Json.Extensions;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Mediator.Extensions;
using Trax.Mediator.Services.TrainDiscovery;
using Trax.Mediator.Services.TrainExecution;
@@ -30,6 +29,7 @@
using Trax.Scheduler.Services.JobSubmitter;
using Trax.Scheduler.Services.Operations;
using Trax.Scheduler.Services.TraxScheduler;
+using Trax.StateMachine.Persistence;
using OperationResult = HotChocolate.Execution.OperationResult;
namespace Trax.Api.Tests.Stress.IntegrationTests;
diff --git a/Trax.Api/tests/Trax.Api.Tests.Stress/IntegrationTests/MachineEventStressTests.cs b/Trax.Api/tests/Trax.Api.Tests.Stress/IntegrationTests/MachineEventStressTests.cs
index 417995286..f3d6e0676 100644
--- a/Trax.Api/tests/Trax.Api.Tests.Stress/IntegrationTests/MachineEventStressTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests.Stress/IntegrationTests/MachineEventStressTests.cs
@@ -21,9 +21,6 @@
using Trax.Effect.Data.Services.IDataContextFactory;
using Trax.Effect.Extensions;
using Trax.Effect.Provider.Json.Extensions;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using Trax.Effect.StateMachine.Persistence.Mutations;
using Trax.Mediator.Extensions;
using Trax.Mediator.Services.TrainDiscovery;
using Trax.Mediator.Services.TrainExecution;
@@ -31,7 +28,10 @@
using Trax.Scheduler.Services.JobSubmitter;
using Trax.Scheduler.Services.Operations;
using Trax.Scheduler.Services.TraxScheduler;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using Trax.StateMachine.Persistence.Mutations;
+using static Trax.StateMachine.Rules;
using OperationResult = HotChocolate.Execution.OperationResult;
namespace Trax.Api.Tests.Stress.IntegrationTests;
diff --git a/Trax.Api/tests/Trax.Api.Tests.Stress/packages.lock.json b/Trax.Api/tests/Trax.Api.Tests.Stress/packages.lock.json
index 9821b7c7b..9aff602cd 100644
--- a/Trax.Api/tests/Trax.Api.Tests.Stress/packages.lock.json
+++ b/Trax.Api/tests/Trax.Api.Tests.Stress/packages.lock.json
@@ -793,40 +793,40 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.scheduler": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
+ "Cronos": "[0.13.0, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Mediator": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.scheduler": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
- "Cronos": "[0.13.0, )",
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Mediator": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Cronos": {
diff --git a/Trax.Api/tests/Trax.Api.Tests/AuthE2E/ClientManifestQueryModelsE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests/AuthE2E/ClientManifestQueryModelsE2ETests.cs
index 91be72ce3..690b78e7b 100644
--- a/Trax.Api/tests/Trax.Api.Tests/AuthE2E/ClientManifestQueryModelsE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/AuthE2E/ClientManifestQueryModelsE2ETests.cs
@@ -1,7 +1,7 @@
using AwesomeAssertions;
using Microsoft.Extensions.Hosting;
using Trax.Api.GraphQL.PersistedOperations.Services;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
using static Trax.Api.Tests.AuthE2E.AuthE2EHost;
namespace Trax.Api.Tests.AuthE2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests/AuthE2E/RunProgressE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests/AuthE2E/RunProgressE2ETests.cs
index 33252ed4f..2d1b7acf5 100644
--- a/Trax.Api/tests/Trax.Api.Tests/AuthE2E/RunProgressE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/AuthE2E/RunProgressE2ETests.cs
@@ -27,8 +27,8 @@
using Trax.Effect.Models.ManifestGroup;
using Trax.Effect.Services.EffectJunction;
using Trax.Effect.Services.ServiceTrain;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Mediator.Extensions;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.Tests.AuthE2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests/AuthE2E/RunProgressInvokedRunE2ETests.cs b/Trax.Api/tests/Trax.Api.Tests/AuthE2E/RunProgressInvokedRunE2ETests.cs
index b8f9d6861..3f18d4582 100644
--- a/Trax.Api/tests/Trax.Api.Tests/AuthE2E/RunProgressInvokedRunE2ETests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/AuthE2E/RunProgressInvokedRunE2ETests.cs
@@ -18,11 +18,11 @@
using Trax.Effect.Data.Services.IDataContextFactory;
using Trax.Effect.Extensions;
using Trax.Effect.JunctionProvider.Progress.Extensions;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Mediator.Extensions;
using Trax.Scheduler.Extensions;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
namespace Trax.Api.Tests.AuthE2E;
diff --git a/Trax.Api/tests/Trax.Api.Tests/Fakes/EnumMachines.cs b/Trax.Api/tests/Trax.Api.Tests/Fakes/EnumMachines.cs
index a8721ba48..a52171892 100644
--- a/Trax.Api/tests/Trax.Api.Tests/Fakes/EnumMachines.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/Fakes/EnumMachines.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Nodes;
using Trax.Effect.Attributes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.Tests.Fakes.Machines
{
diff --git a/Trax.Api/tests/Trax.Api.Tests/Fakes/Machines.cs b/Trax.Api/tests/Trax.Api.Tests/Fakes/Machines.cs
index cbfaad63b..92ec5f92c 100644
--- a/Trax.Api/tests/Trax.Api.Tests/Fakes/Machines.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/Fakes/Machines.cs
@@ -1,8 +1,8 @@
using System.Text.Json.Nodes;
using Trax.Effect.Attributes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
namespace Trax.Api.Tests.Fakes.Machines;
diff --git a/Trax.Api/tests/Trax.Api.Tests/MachineChangedOrderTests.cs b/Trax.Api/tests/Trax.Api.Tests/MachineChangedOrderTests.cs
index 9333282a0..e22a3508b 100644
--- a/Trax.Api/tests/Trax.Api.Tests/MachineChangedOrderTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/MachineChangedOrderTests.cs
@@ -1,8 +1,8 @@
using AwesomeAssertions;
using Trax.Api.GraphQL.TypeModules;
using Trax.Api.Tests.Fakes.Machines;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.Tests;
diff --git a/Trax.Api/tests/Trax.Api.Tests/MachineExposureCensusTests.cs b/Trax.Api/tests/Trax.Api.Tests/MachineExposureCensusTests.cs
index 0961c8c14..df95f4741 100644
--- a/Trax.Api/tests/Trax.Api.Tests/MachineExposureCensusTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/MachineExposureCensusTests.cs
@@ -1,7 +1,7 @@
using AwesomeAssertions;
using Trax.Api.Tests.Fakes.Machines;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.Tests;
@@ -45,7 +45,7 @@ public async Task The_GraphQL_exposure_census_covers_machines_as_their_own_kind(
message
.Should()
.NotContain(
- "Trax.Effect.StateMachine.Persistence.Mutations",
+ "Trax.StateMachine.Persistence.Mutations",
"the internal snapshot trains are not what a client reaches"
);
}
diff --git a/Trax.Api/tests/Trax.Api.Tests/MachineExposureStartupTests.cs b/Trax.Api/tests/Trax.Api.Tests/MachineExposureStartupTests.cs
index 7c6abcc36..d4686495a 100644
--- a/Trax.Api/tests/Trax.Api.Tests/MachineExposureStartupTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/MachineExposureStartupTests.cs
@@ -4,7 +4,7 @@
using Microsoft.Extensions.DependencyInjection;
using Trax.Api.Tests.Fakes.Machines;
using Trax.Effect.Attributes;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.Tests;
diff --git a/Trax.Api/tests/Trax.Api.Tests/MachineSchemaHost.cs b/Trax.Api/tests/Trax.Api.Tests/MachineSchemaHost.cs
index 8a5900d10..0c9bfdaff 100644
--- a/Trax.Api/tests/Trax.Api.Tests/MachineSchemaHost.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/MachineSchemaHost.cs
@@ -18,12 +18,12 @@
using Trax.Effect.Attributes;
using Trax.Effect.Data.InMemory.Extensions;
using Trax.Effect.Extensions;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Mediator.Services.TrainDiscovery;
using Trax.Mediator.Services.TrainExecution;
using Trax.Scheduler.Services.JobSubmitter;
using Trax.Scheduler.Services.Operations;
using Trax.Scheduler.Services.TraxScheduler;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.Tests;
diff --git a/Trax.Api/tests/Trax.Api.Tests/MachineTypeModuleTests.cs b/Trax.Api/tests/Trax.Api.Tests/MachineTypeModuleTests.cs
index 772706261..e529fbdbe 100644
--- a/Trax.Api/tests/Trax.Api.Tests/MachineTypeModuleTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/MachineTypeModuleTests.cs
@@ -4,7 +4,7 @@
using Trax.Api.GraphQL.PersistedOperations.Services;
using Trax.Api.GraphQL.Validation;
using Trax.Api.Tests.Fakes.Machines;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.Tests;
@@ -261,7 +261,7 @@ public void Census_ListsEachEventAndReadWithItsRule_ForTheSurfaceAndForHostCode(
var entries = MachineCensus.Describe([new ShopMachine()]);
entries
- .Where(e => e.Kind == nameof(Trax.Effect.StateMachine.TriggerKind.Client))
+ .Where(e => e.Kind == nameof(Trax.StateMachine.TriggerKind.Client))
.Select(e => e.Name)
.Should()
.BeEquivalentTo(
diff --git a/Trax.Api/tests/Trax.Api.Tests/MarkedMachineSchemaTests.cs b/Trax.Api/tests/Trax.Api.Tests/MarkedMachineSchemaTests.cs
index cb189894c..068e316ce 100644
--- a/Trax.Api/tests/Trax.Api.Tests/MarkedMachineSchemaTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/MarkedMachineSchemaTests.cs
@@ -4,7 +4,7 @@
using Microsoft.Extensions.DependencyInjection;
using Trax.Api.Tests.Fakes.Machines;
using Trax.Effect.Attributes;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.Tests;
diff --git a/Trax.Api/tests/Trax.Api.Tests/OperationCapUnderNamespacesTests.cs b/Trax.Api/tests/Trax.Api.Tests/OperationCapUnderNamespacesTests.cs
index c2dca48bf..15aa91608 100644
--- a/Trax.Api/tests/Trax.Api.Tests/OperationCapUnderNamespacesTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/OperationCapUnderNamespacesTests.cs
@@ -13,9 +13,9 @@
using Trax.Effect.Data.InMemory.Extensions;
using Trax.Effect.Extensions;
using Trax.Effect.Services.EffectRegistry;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Mediator.Services.TrainDiscovery;
using Trax.Scheduler.Services.TraxScheduler;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.Tests;
diff --git a/Trax.Api/tests/Trax.Api.Tests/PersistedOperations/UnitTests/ProgressDocumentsTests.cs b/Trax.Api/tests/Trax.Api.Tests/PersistedOperations/UnitTests/ProgressDocumentsTests.cs
index df706dba1..0168a0fec 100644
--- a/Trax.Api/tests/Trax.Api.Tests/PersistedOperations/UnitTests/ProgressDocumentsTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/PersistedOperations/UnitTests/ProgressDocumentsTests.cs
@@ -4,8 +4,8 @@
using Microsoft.Extensions.DependencyInjection;
using Trax.Api.GraphQL.PersistedOperations.Services;
using Trax.Api.GraphQL.TypeModules;
-using Trax.Effect.StateMachine;
using Trax.Mediator.Services.TrainDiscovery;
+using Trax.StateMachine;
namespace Trax.Api.Tests.PersistedOperations.UnitTests;
diff --git a/Trax.Api/tests/Trax.Api.Tests/RunProgressStreamTests.cs b/Trax.Api/tests/Trax.Api.Tests/RunProgressStreamTests.cs
index 79a32b3ee..9c9133130 100644
--- a/Trax.Api/tests/Trax.Api.Tests/RunProgressStreamTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/RunProgressStreamTests.cs
@@ -4,7 +4,7 @@
using Trax.Api.DTOs;
using Trax.Api.GraphQL.Subscriptions;
using Trax.Api.GraphQL.TypeModules;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Api.Tests;
diff --git a/Trax.Api/tests/Trax.Api.Tests/SchemaRebuildTests.cs b/Trax.Api/tests/Trax.Api.Tests/SchemaRebuildTests.cs
index cf25ad476..0ae452819 100644
--- a/Trax.Api/tests/Trax.Api.Tests/SchemaRebuildTests.cs
+++ b/Trax.Api/tests/Trax.Api.Tests/SchemaRebuildTests.cs
@@ -10,8 +10,8 @@
using Trax.Effect.Data.InMemory.Extensions;
using Trax.Effect.Extensions;
using Trax.Effect.Services.EffectRegistry;
-using Trax.Effect.StateMachine.Persistence;
using Trax.Mediator.Services.TrainDiscovery;
+using Trax.StateMachine.Persistence;
namespace Trax.Api.Tests;
diff --git a/Trax.Api/tests/Trax.Api.Tests/packages.lock.json b/Trax.Api/tests/Trax.Api.Tests/packages.lock.json
index fe550f368..4387682eb 100644
--- a/Trax.Api/tests/Trax.Api.Tests/packages.lock.json
+++ b/Trax.Api/tests/Trax.Api.Tests/packages.lock.json
@@ -1044,40 +1044,40 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.mediator": {
"type": "Project",
"dependencies": {
- "Trax.Effect": "[1.99.99, )"
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.scheduler": {
"type": "Project",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
+ "Cronos": "[0.13.0, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.Mediator": "[1.99.99, )"
}
},
- "trax.mediator": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.Effect": "[1.99.99, )"
}
},
- "trax.scheduler": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
- "Cronos": "[0.13.0, )",
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Mediator": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Cronos": {
diff --git a/Trax.Cli/docs/adr/0001-the-machine-toolchain-is-half-in-process.md b/Trax.Cli/docs/adr/0001-the-machine-toolchain-is-half-in-process.md
index 574e42610..3d8a83c9d 100644
--- a/Trax.Cli/docs/adr/0001-the-machine-toolchain-is-half-in-process.md
+++ b/Trax.Cli/docs/adr/0001-the-machine-toolchain-is-half-in-process.md
@@ -31,7 +31,7 @@ machine what it is, rather than guessing from syntax.
## Consequences
**The CLI is version-coupled to the engine, deliberately.** It references
-`Trax.Effect.StateMachine.Persistence` at compile time and loads the machine assembly into
+`Trax.StateMachine.Persistence` at compile time and loads the machine assembly into
the *default* `AssemblyLoadContext`, not an isolated one, so the machine's reference to that
package binds by simple name to the copy the CLI already has. Type identity is preserved, and
a machine built against an older engine than the CLI still unifies with the CLI's own
diff --git a/Trax.Cli/src/Trax.Cli/Clients/ClientDocumentSet.cs b/Trax.Cli/src/Trax.Cli/Clients/ClientDocumentSet.cs
index b915fe866..0577559e3 100644
--- a/Trax.Cli/src/Trax.Cli/Clients/ClientDocumentSet.cs
+++ b/Trax.Cli/src/Trax.Cli/Clients/ClientDocumentSet.cs
@@ -3,7 +3,7 @@
using GraphQLParser;
using GraphQLParser.AST;
using GraphQLParser.Visitors;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Cli.Clients;
diff --git a/Trax.Cli/src/Trax.Cli/Clients/ClientGenerator.Documents.cs b/Trax.Cli/src/Trax.Cli/Clients/ClientGenerator.Documents.cs
index 0655313a4..c8b83ee27 100644
--- a/Trax.Cli/src/Trax.Cli/Clients/ClientGenerator.Documents.cs
+++ b/Trax.Cli/src/Trax.Cli/Clients/ClientGenerator.Documents.cs
@@ -1,7 +1,7 @@
using System.Text;
using System.Text.Json;
using GraphQLParser.AST;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Cli.Clients;
diff --git a/Trax.Cli/src/Trax.Cli/Clients/ClientGenerator.cs b/Trax.Cli/src/Trax.Cli/Clients/ClientGenerator.cs
index 34313dd8c..12554bb41 100644
--- a/Trax.Cli/src/Trax.Cli/Clients/ClientGenerator.cs
+++ b/Trax.Cli/src/Trax.Cli/Clients/ClientGenerator.cs
@@ -4,7 +4,7 @@
using GraphQLParser;
using GraphQLParser.AST;
using Trax.Cli.Machines;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Cli.Clients;
diff --git a/Trax.Cli/src/Trax.Cli/Commands/ClientCommand.cs b/Trax.Cli/src/Trax.Cli/Commands/ClientCommand.cs
index fb1d04569..5dfacc237 100644
--- a/Trax.Cli/src/Trax.Cli/Commands/ClientCommand.cs
+++ b/Trax.Cli/src/Trax.Cli/Commands/ClientCommand.cs
@@ -1,7 +1,7 @@
using System.CommandLine;
using Trax.Cli.Clients;
using Trax.Cli.Machines;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Cli.Commands;
diff --git a/Trax.Cli/src/Trax.Cli/Commands/MachineCommand.cs b/Trax.Cli/src/Trax.Cli/Commands/MachineCommand.cs
index 92997d3fa..659f4139f 100644
--- a/Trax.Cli/src/Trax.Cli/Commands/MachineCommand.cs
+++ b/Trax.Cli/src/Trax.Cli/Commands/MachineCommand.cs
@@ -102,7 +102,7 @@ bool force
///
internal static string NewNextSteps()
{
- var version = typeof(Trax.Effect.StateMachine.Persistence.IMachine)
+ var version = typeof(Trax.StateMachine.Persistence.IMachine)
.Assembly.GetCustomAttributes(
typeof(System.Reflection.AssemblyInformationalVersionAttribute),
false
@@ -114,9 +114,9 @@ internal static string NewNextSteps()
return string.Join(
Environment.NewLine,
"Next steps:",
- " 1. The machine derives from Machine in Trax.Effect.StateMachine.Persistence. In the",
+ " 1. The machine derives from Machine in Trax.StateMachine.Persistence. In the",
" project that holds this file, reference the version this trax is built against:",
- $" dotnet add package Trax.Effect.StateMachine.Persistence{versionFlag}",
+ $" dotnet add package Trax.StateMachine.Persistence{versionFlag}",
" 2. Edit the states, triggers and context, then build the project.",
" 3. Export the IR from the built assembly:",
" trax machine generate --assembly --ir-out ",
diff --git a/Trax.Cli/src/Trax.Cli/Machines/MachineGenerator.cs b/Trax.Cli/src/Trax.Cli/Machines/MachineGenerator.cs
index 27e376a95..dc7c483ee 100644
--- a/Trax.Cli/src/Trax.Cli/Machines/MachineGenerator.cs
+++ b/Trax.Cli/src/Trax.Cli/Machines/MachineGenerator.cs
@@ -1,4 +1,4 @@
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Cli.Machines;
diff --git a/Trax.Cli/src/Trax.Cli/Machines/MachineLoader.cs b/Trax.Cli/src/Trax.Cli/Machines/MachineLoader.cs
index 3542ba1f8..ea7ee635b 100644
--- a/Trax.Cli/src/Trax.Cli/Machines/MachineLoader.cs
+++ b/Trax.Cli/src/Trax.Cli/Machines/MachineLoader.cs
@@ -1,12 +1,12 @@
using System.Reflection;
using System.Runtime.Loader;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Cli.Machines;
///
/// Loads a compiled machine assembly and hands back the to export. The assembly goes into
-/// the default , so its reference to Trax.Effect.StateMachine.Persistence
+/// the default , so its reference to Trax.StateMachine.Persistence
/// binds by simple name to the copy the CLI already has: type identity is preserved, and a machine built against
/// an older engine still unifies with the CLI's own . A machine built against a newer one
/// cannot: the default context already holds that simple name at a lower version. How that surfaces has not been
@@ -84,7 +84,7 @@ public static IMachine Load(string assemblyPath, string? machineFullName)
throw new InvalidOperationException(
$"No machines found in {Path.GetFileName(fullPath)}. A machine is a non-abstract "
+ "IMachine (a Machine subclass) with a parameterless constructor. "
- + "If the assembly references a different Trax.Effect.StateMachine version than this CLI, "
+ + "If the assembly references a different Trax.StateMachine version than this CLI, "
+ "its machines will not be recognized; rebuild it against the matching version."
+ DescribeLoaderExceptions(loaderExceptions)
);
diff --git a/Trax.Cli/src/Trax.Cli/Machines/MachineRenderer.cs b/Trax.Cli/src/Trax.Cli/Machines/MachineRenderer.cs
index c53b1d376..e7faab9b1 100644
--- a/Trax.Cli/src/Trax.Cli/Machines/MachineRenderer.cs
+++ b/Trax.Cli/src/Trax.Cli/Machines/MachineRenderer.cs
@@ -1,5 +1,5 @@
using System.Text;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Cli.Machines;
diff --git a/Trax.Cli/src/Trax.Cli/Templates/MachineScaffold.sbn b/Trax.Cli/src/Trax.Cli/Templates/MachineScaffold.sbn
index ce8e1684a..ac930b46c 100644
--- a/Trax.Cli/src/Trax.Cli/Templates/MachineScaffold.sbn
+++ b/Trax.Cli/src/Trax.Cli/Templates/MachineScaffold.sbn
@@ -5,9 +5,9 @@ using System;
using System.Threading;
using System.Threading.Tasks;
{{- end }}
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
namespace {{ Namespace }};
diff --git a/Trax.Cli/src/Trax.Cli/Trax.Cli.csproj b/Trax.Cli/src/Trax.Cli/Trax.Cli.csproj
index cfa880922..0e1c8d1e8 100644
--- a/Trax.Cli/src/Trax.Cli/Trax.Cli.csproj
+++ b/Trax.Cli/src/Trax.Cli/Trax.Cli.csproj
@@ -23,7 +23,7 @@
-
+
diff --git a/Trax.Cli/src/Trax.Cli/packages.lock.json b/Trax.Cli/src/Trax.Cli/packages.lock.json
index d60f9dd28..ddd27c751 100644
--- a/Trax.Cli/src/Trax.Cli/packages.lock.json
+++ b/Trax.Cli/src/Trax.Cli/packages.lock.json
@@ -144,13 +144,13 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
"Microsoft.EntityFrameworkCore": "[10.0.12, )",
@@ -159,7 +159,7 @@
"Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"Microsoft.EntityFrameworkCore": {
diff --git a/Trax.Cli/tests/Trax.Cli.Tests.Meta/packages.lock.json b/Trax.Cli/tests/Trax.Cli.Tests.Meta/packages.lock.json
index 3973bce4f..da1c813e6 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests.Meta/packages.lock.json
+++ b/Trax.Cli/tests/Trax.Cli.Tests.Meta/packages.lock.json
@@ -253,7 +253,7 @@
"Microsoft.OpenApi.Readers": "[1.6.31, )",
"Scriban": "[7.5.0, )",
"System.CommandLine": "[2.0.12, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
"trax.core": {
@@ -287,13 +287,13 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
"Microsoft.EntityFrameworkCore": "[10.0.12, )",
@@ -302,7 +302,7 @@
"Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"GraphQL-Parser": {
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/ClientManifests.cs b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/ClientManifests.cs
index 9afc1b5a7..c01ac8678 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/ClientManifests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/ClientManifests.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Nodes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Cli.Tests.Fakes;
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeCheckoutMachine.cs b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeCheckoutMachine.cs
index 8c84e9af7..e14541c1a 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeCheckoutMachine.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeCheckoutMachine.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Nodes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
namespace Trax.Cli.Tests.Fakes;
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeGaugeMachine.cs b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeGaugeMachine.cs
index d684f1ef9..b943d0c7b 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeGaugeMachine.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeGaugeMachine.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Nodes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
namespace Trax.Cli.Tests.Fakes;
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeIngestMachine.cs b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeIngestMachine.cs
index 745dda134..09bbdb6c2 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeIngestMachine.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeIngestMachine.cs
@@ -1,11 +1,11 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Nodes;
using Ingest.Contracts;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
-// The train's contract is declared as in Trax.Effect.StateMachine.Tests, so both describe the same machine and
+// The train's contract is declared as in Trax.StateMachine.Tests, so both describe the same machine and
// export the one committed ingest.ir.json.
namespace Ingest.Contracts
{
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeReminderMachine.cs b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeReminderMachine.cs
index 50b7482c9..c6c4f2617 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeReminderMachine.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeReminderMachine.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Nodes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Cli.Tests.Fakes;
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeTurnstileMachine.cs b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeTurnstileMachine.cs
index 8437c3f17..e4a8aeeba 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeTurnstileMachine.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/Fakes/DeclarativeTurnstileMachine.cs
@@ -1,8 +1,8 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Nodes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
namespace Trax.Cli.Tests.Fakes;
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGenerateFromPackedToolTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGenerateFromPackedToolTests.cs
index 9baef6ece..96d52a027 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGenerateFromPackedToolTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGenerateFromPackedToolTests.cs
@@ -28,7 +28,11 @@ public void SetUp()
);
if (
!Directory.Exists(
- Path.Combine(RepoFolder(Path.Combine("Trax.StateMachine", "ts")), "node_modules", "esbuild")
+ Path.Combine(
+ RepoFolder(Path.Combine("Trax.StateMachine", "ts")),
+ "node_modules",
+ "esbuild"
+ )
)
)
NodePrerequisite.Missing(
@@ -758,7 +762,7 @@ private static void GenerateClient(string tool, string work)
{
File.WriteAllText(
Path.Combine(work, "manifest.json"),
- Trax.Effect.StateMachine.ClientManifest.Write(Fakes.ClientManifests.Sample())
+ Trax.StateMachine.ClientManifest.Write(Fakes.ClientManifests.Sample())
);
// The page's own document of the train, from which its function is generated.
Directory.CreateDirectory(Path.Combine(work, "documents"));
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGeneratorNodeTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGeneratorNodeTests.cs
index 306fada76..f97f8aec9 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGeneratorNodeTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/IntegrationTests/MachineGeneratorNodeTests.cs
@@ -1,7 +1,7 @@
using AwesomeAssertions;
using Trax.Cli.Machines;
using Trax.Cli.Tests.Fakes;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Cli.Tests.IntegrationTests;
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ClientDocumentsGeneratorTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ClientDocumentsGeneratorTests.cs
index d45952bee..32dae3122 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ClientDocumentsGeneratorTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ClientDocumentsGeneratorTests.cs
@@ -3,7 +3,7 @@
using Trax.Cli.Clients;
using Trax.Cli.Commands;
using Trax.Cli.Tests.Fakes;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Cli.Tests.UnitTests;
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ClientGeneratorTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ClientGeneratorTests.cs
index 3583dcca9..ad6c2577d 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ClientGeneratorTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ClientGeneratorTests.cs
@@ -4,7 +4,7 @@
using Trax.Cli.Clients;
using Trax.Cli.Machines;
using Trax.Cli.Tests.Fakes;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Cli.Tests.UnitTests;
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineCommandTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineCommandTests.cs
index 85639b3d1..b9d02ae32 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineCommandTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineCommandTests.cs
@@ -254,9 +254,7 @@ public void New_names_the_package_and_the_prerequisites_of_generate()
MachineCommand.RunNew("checkout", _tempDir, "MyApp.Machines", false, false)
);
- stdout
- .Should()
- .Contain("dotnet add package Trax.Effect.StateMachine.Persistence --version ");
+ stdout.Should().Contain("dotnet add package Trax.StateMachine.Persistence --version ");
stdout.Should().Contain("--assembly").And.Contain("Node.js 22").And.Contain("--engine-src");
}
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineGeneratorTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineGeneratorTests.cs
index c20e9c48d..58b20fa39 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineGeneratorTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineGeneratorTests.cs
@@ -2,8 +2,8 @@
using AwesomeAssertions;
using Trax.Cli.Machines;
using Trax.Cli.Tests.Fakes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Trax.Cli.Tests.UnitTests;
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineLoaderTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineLoaderTests.cs
index 23a6a362c..49d2bebee 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineLoaderTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineLoaderTests.cs
@@ -1,7 +1,7 @@
using AwesomeAssertions;
using Trax.Cli.Machines;
using Trax.Cli.Tests.Fakes;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Cli.Tests.UnitTests;
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineLoaderUnloadableTypeTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineLoaderUnloadableTypeTests.cs
index 9d19cf3f1..f3f28d886 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineLoaderUnloadableTypeTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineLoaderUnloadableTypeTests.cs
@@ -89,8 +89,8 @@ protected override void Configure(IMachineBuilder m)
: "";
var source = $$"""
using System.Text.Json.Nodes;
- using Trax.Effect.StateMachine;
- using Trax.Effect.StateMachine.Persistence;
+ using Trax.StateMachine;
+ using Trax.StateMachine.Persistence;
namespace Consumer;
public class PlayersController : Missing.ControllerBase { }
{{machine}}
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineScaffolderTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineScaffolderTests.cs
index ce210cbeb..17d6a60bd 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineScaffolderTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/MachineScaffolderTests.cs
@@ -2,14 +2,14 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Trax.Cli.Machines;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Trax.Cli.Tests.UnitTests;
///
/// emits a machine's starter C# file. The scaffold's whole value is that it
/// compiles and runs through the rest of the pipeline as-is, so beyond the structural assertions these
-/// actually compile the generated source against the real Trax.Effect.StateMachine assemblies.
+/// actually compile the generated source against the real Trax.StateMachine assemblies.
///
public class MachineScaffolderTests
{
@@ -152,7 +152,7 @@ public void The_scaffold_compiles_against_the_real_engine_with_an_effect()
AssertCompiles(MachineScaffolder.Render("checkout", "Scaffolded", withEffect: true));
}
- // Compile the generated source against the real Trax.Effect.StateMachine assemblies. This is the honest
+ // Compile the generated source against the real Trax.StateMachine assemblies. This is the honest
// proof that the scaffold is not just well-shaped text but valid, buildable C#.
private static void AssertCompiles(string source)
{
@@ -186,7 +186,7 @@ private static void AssertCompiles(string source)
.BeEmpty(because: "the scaffold must compile:\n" + string.Join("\n", errors));
}
- // Referenced so the Trax.Effect.StateMachine.Persistence assembly is copied to the test output for the
+ // Referenced so the Trax.StateMachine.Persistence assembly is copied to the test output for the
// compile references above.
private static readonly Type _keepPersistenceReferenced = typeof(IMachine);
}
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ScaffoldCompilationTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ScaffoldCompilationTests.cs
index 9d5cd5d59..e47f4985e 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ScaffoldCompilationTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/ScaffoldCompilationTests.cs
@@ -15,7 +15,7 @@ namespace Trax.Cli.Tests.UnitTests;
/// with.
///
/// Those are not the Trax a new scaffold floats to. The tests reference no Trax.Core
-/// directly: it arrives transitively through the Trax.Effect.StateMachine.Persistence pin
+/// directly: it arrives transitively through the Trax.StateMachine.Persistence pin
/// in Directory.Packages.props, which currently resolves Trax.Core 1.6.0, and 1.6.0 still
/// has RunInternal and Activate. So in CI a template that goes back to the old shape
/// still compiles here, and this only catches that regression once the pin moves to a Trax.Core
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/SelectionTypesTests.cs b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/SelectionTypesTests.cs
index bcf5e1e7e..4c5feb94a 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/SelectionTypesTests.cs
+++ b/Trax.Cli/tests/Trax.Cli.Tests/UnitTests/SelectionTypesTests.cs
@@ -1,7 +1,7 @@
using AwesomeAssertions;
using Trax.Cli.Clients;
using Trax.Cli.Tests.Fakes;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Trax.Cli.Tests.UnitTests;
diff --git a/Trax.Cli/tests/Trax.Cli.Tests/packages.lock.json b/Trax.Cli/tests/Trax.Cli.Tests/packages.lock.json
index 1ea896288..127de79ec 100644
--- a/Trax.Cli/tests/Trax.Cli.Tests/packages.lock.json
+++ b/Trax.Cli/tests/Trax.Cli.Tests/packages.lock.json
@@ -233,7 +233,7 @@
"Microsoft.OpenApi.Readers": "[1.6.31, )",
"Scriban": "[7.5.0, )",
"System.CommandLine": "[2.0.12, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
"trax.core": {
@@ -260,13 +260,13 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
+ "trax.statemachine": {
"type": "Project",
"dependencies": {
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine.persistence": {
+ "trax.statemachine.persistence": {
"type": "Project",
"dependencies": {
"Microsoft.EntityFrameworkCore": "[10.0.12, )",
@@ -275,7 +275,7 @@
"Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
+ "Trax.StateMachine": "[1.99.99, )"
}
},
"GraphQL-Parser": {
diff --git a/Trax.Docs/adr/0009-feature-tables-ship-in-the-core-provider-set.md b/Trax.Docs/adr/0009-feature-tables-ship-in-the-core-provider-set.md
index de6d636d3..9affcef86 100644
--- a/Trax.Docs/adr/0009-feature-tables-ship-in-the-core-provider-set.md
+++ b/Trax.Docs/adr/0009-feature-tables-ship-in-the-core-provider-set.md
@@ -10,7 +10,7 @@ status: accepted
A higher-level feature package does not carry its own migrations. Its table DDL goes into
the core `Trax.Effect.Data.` migration set, alongside every other Trax table.
`035_persisted_operations.sql`, `040_state_machine_snapshots.sql` and `047_runner_nonce.sql` are
-all in the core Postgres provider, and `Trax.Effect.StateMachine.Persistence` has no `Migrations` folder at
+all in the core Postgres provider, and `Trax.StateMachine.Persistence` has no `Migrations` folder at
all.
## Status
diff --git a/Trax.Docs/adr/0046-a-machine-state-invokes-a-train-and-only-that-entry-receives-its-outcome.md b/Trax.Docs/adr/0046-a-machine-state-invokes-a-train-and-only-that-entry-receives-its-outcome.md
index 583602552..8c386e48d 100644
--- a/Trax.Docs/adr/0046-a-machine-state-invokes-a-train-and-only-that-entry-receives-its-outcome.md
+++ b/Trax.Docs/adr/0046-a-machine-state-invokes-a-train-and-only-that-entry-receives-its-outcome.md
@@ -44,7 +44,7 @@ an `OnCancelled(target)` that is required, so a cancel always has a declared edg
**There is no `OnDecisionUnsure`.** A run ends in one `Either`, so "unsure" is not an outcome of its own. A train that
can be unsure says so in its output, and a guarded `OnDone` routes it (`out is Unsure` to `NeedsReview`).
-**The machine package does not depend on the mediator.** Effect.StateMachine declares an `IInvokedTrainLauncher` port
+**The machine package does not depend on the mediator.** Trax.StateMachine declares an `IInvokedTrainLauncher` port
and Mediator implements it. A host that declares `Invokes` without registering Mediator fails at startup. A new
package above Scheduler was the other place it could live, and would have been one more package for a single port.
@@ -73,7 +73,7 @@ at most one live run per entry.
**A sweep guarantees delivery; the lifecycle hook is the fast path.** Lifecycle hooks run in the process that ran the
train and swallow exceptions, and a run failed by the reaper publishes nothing from a train at all, so a hook alone
-can lose an outcome. A reconciler, a hosted service in Effect.StateMachine.Persistence started on every host that
+can lose an outcome. A reconciler, a hosted service in Trax.StateMachine.Persistence started on every host that
registers machines (it needs their definitions), sweeps snapshots whose token names a finished run and applies the
outcome. Several hosts sweeping at once is harmless, because the conditional update applies once. A cancelled run maps
to `OnCancelled`; a reaped one reaches `OnFailed` through the sweep, and the reaper publishes its own terminal event
@@ -207,7 +207,7 @@ checkpoint.
Written first, red, before the code they cover. Each names the class and method it will have.
-In `Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests`:
+In `Trax.StateMachine/dotnet/tests/Trax.StateMachine.Tests`:
- `InvokesDeclarationTests.An_invoking_state_without_OnCancelled_is_refused_at_build`
- `InvokesDeclarationTests.A_guarded_OnDone_routes_an_unsure_output_to_its_own_target`
- `InvokesDeclarationTests.Outcomes_export_as_their_own_trigger_kind_per_invoke_edge_with_the_output_schema`
@@ -215,7 +215,7 @@ In `Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Tests`:
- `MachineInstanceIdTests.Keys_a_b_c_split_differently_give_different_ids`
- `DifferentialCorpusReplayTests.Outcome_triggers_apply_the_same_reduction_in_the_twin`
-In `Trax.StateMachine/dotnet/tests/Trax.Effect.StateMachine.Persistence.Integration`, on Postgres and Sqlite:
+In `Trax.StateMachine/dotnet/tests/Trax.StateMachine.Persistence.Integration`, on Postgres and Sqlite:
- `InvokesStartupRefusalTests`, one test per refusal, each naming the offending junction, train or member:
`A_plain_Junction_is_refused`, `An_IChain_over_a_non_effect_interface_is_refused`,
`A_train_that_is_not_a_ServiceTrain_is_refused`, `A_recorder_refusal_is_refused`,
diff --git a/Trax.Docs/adr/0048-a-machine-is-served-as-a-typed-api-and-the-server-applies-every-transition.md b/Trax.Docs/adr/0048-a-machine-is-served-as-a-typed-api-and-the-server-applies-every-transition.md
index d77f24ddc..87ffcc1cf 100644
--- a/Trax.Docs/adr/0048-a-machine-is-served-as-a-typed-api-and-the-server-applies-every-transition.md
+++ b/Trax.Docs/adr/0048-a-machine-is-served-as-a-typed-api-and-the-server-applies-every-transition.md
@@ -385,12 +385,12 @@ In `Trax.Api.Tests.StateMachine.E2E`:
- `MachinesRootSchemaTests`: `Machines_root_lists_each_exposed_machine_with_start_events_and_get`, `An_unexposed_declarative_machine_gets_no_field`, `An_event_without_WithInput_has_no_input_argument_and_no_json_scalar`, `Outcome_timer_and_effect_receipt_inputs_never_appear_as_client_arguments`, `Start_takes_its_declared_StartInput_never_the_context_type`, `A_misspelt_event_field_is_a_validation_error_not_a_runtime_problem`
- `OperatorMachineFeedE2ETests`: `The_operator_subscription_is_gated_and_shows_state_revision_and_runs`, `A_users_draft_change_appears_to_an_operator_without_its_context`, `Each_host_runs_one_listener_shared_by_the_dashboard_and_GraphQL`, `After_a_listener_reconnect_the_operator_feed_sends_a_reload`
-In `Trax.Effect.StateMachine.Persistence.Integration`, on Postgres and SQLite:
+In `Trax.StateMachine.Persistence.Integration`, on Postgres and SQLite:
- `EffectPendingTests`: `An_event_out_of_the_effects_state_while_it_is_pending_is_refused_effect_in_progress`, `A_reset_and_the_generic_save_are_refused_while_an_effect_is_pending`, `Discard_and_the_draft_sweep_leave_a_row_with_a_pending_effect`, `A_due_timer_waits_for_a_pending_effect_and_fires_after_it_fails`, `The_receipt_the_move_and_the_end_of_the_mark_are_one_write`, `A_failed_effect_leaves_the_row_as_it_was_and_takes_events_again`, `A_mark_past_its_lease_is_finished_by_the_next_send_under_the_same_key`, `A_mark_past_its_lease_is_finished_by_the_reconciler_under_the_same_key`, `A_host_without_the_effect_leaves_an_abandoned_mark_and_meters_it`, `A_completed_ledger_claim_from_before_the_upgrade_is_recorded_by_the_next_send`, `A_send_after_the_effect_was_recorded_and_the_draft_reset_runs_under_a_new_key`
- `ServerRecordTests`: `A_row_a_gated_event_moved_is_kept_and_refuses_discard`, `A_row_a_client_event_moved_into_the_same_state_is_a_draft`, `A_client_event_out_of_a_kept_row_makes_it_a_draft_again`, `A_timer_carries_the_record_over`, `Kept_rows_do_not_count_toward_the_draft_cap`, `The_upgrade_marks_rows_in_kept_states_as_kept`, `A_host_upsert_out_of_a_kept_row_leaves_it_judged_by_its_state`, `A_host_update_out_of_a_kept_row_leaves_it_judged_by_its_state`
- `MachineInterleavingModelTests`: `Seeded_interleavings_keep_every_invariant` (starts, events, sends, timers, discards, sweeps and a claimant that stops, in random order from a logged seed, with the invariants of *Effects and server records* checked after every step)
-In `Trax.Effect.StateMachine.Tests`:
+In `Trax.StateMachine.Tests`:
- `EventWriteRuleTests`: `An_open_event_copying_a_field_an_effect_writes_refuses_to_build`, `An_open_event_copying_a_field_an_invoked_runs_outcome_writes_refuses_to_build`
In `Trax.Api.Tests.Stress`:
@@ -423,7 +423,7 @@ In `Trax.Dashboard.Tests.Integration`:
In `Trax.Effect.Data.Testing.Tests`:
- `TraxInvariantsTests`: `ARevisionBelowOne_IsReportedWithItsRow`, `AUserDraftWithAnEmptyOrBlankOwner_IsReportedWithItsRow`, `TwoRowsWithOneRowId_AreReported`, `ADueTimeInAStateWithNoTimer_IsReportedWithItsRow`, `ATimedStateWithNoDueTime_IsReportedWithItsRow`, `ADueTimeOfAMachineWithNoTimerLeft_IsReportedOnceTheHostsStop`, `AUserDraftOlderThanTheMaximumLifetime_IsReportedWithItsRow`
-In `Trax.Effect.StateMachine.Persistence.Integration`:
+In `Trax.StateMachine.Persistence.Integration`:
- `ActorHierarchyTests`: `A_record_outside_Trax_cannot_derive_from_Actor`, `A_client_is_built_outside_Trax`, `Actor_offers_no_trusted_kind`
- `AddStateMachinesBuilderTests`: `Without_the_opt_in_the_internal_trains_route_but_are_not_exposed`, `A_second_AddStateMachines_call_is_refused_rather_than_replacing_the_first`, `A_host_that_registers_no_machine_refuses_to_start`, `A_machine_the_host_registered_before_the_scan_finds_it_is_registered_once`, `The_same_machine_type_registered_twice_is_one_machine_to_the_registry`
- `ClientDivergenceMeterTests`: `A_client_divergence_is_refused_and_metered`
@@ -461,10 +461,10 @@ In `Trax.Effect.StateMachine.Persistence.Integration`:
- `TimerFailureClassificationTests`: `A_fire_failure_is_the_databases_by_its_SQLSTATE_class`, `A_timeout_is_the_databases`, `Any_other_failure_is_the_rows`
- `TriggerInputValidationPathTests`: `Every_path_validates_trigger_input_and_refuses_unknown_fields`, `Input_size_is_capped_before_validation_on_every_path`, `An_invalid_input_records_no_request_id_so_a_corrected_retry_fires`, `The_effect_runner_receipt_still_commits_on_an_effect_bound_trigger_with_WithInput` (a guard, green today)
-In `Trax.Effect.StateMachine.Tests.Stress`:
+In `Trax.StateMachine.Tests.Stress`:
- `RevisionStoreModelTests`: `Every_incarnation_commits_revisions_one_to_n_and_replays_to_its_final_row`
-In `Trax.Effect.StateMachine.Tests`:
+In `Trax.StateMachine.Tests`:
- `CheckoutConformanceTests`: `Advance_matches_the_shared_fixture`, which replays the bad-input fixtures with the rest
- `ConformanceTests`: `Advance_matches_the_shared_fixture`, which replays the bad-input fixtures with the rest
- `DifferentialCorpusReplayTests`: `Timer_triggers_replay_through_AdvanceTimer`
@@ -542,7 +542,7 @@ themselves (an undeclared event, an unexposed raw-delegate machine, the opt-in w
that breaks the rule from starting.
Not covered: nothing can check that a host's own code forwards the right actor; a client is the only kind of actor
-(`Trax.Effect.StateMachine.Persistence.Integration.ActorHierarchyTests`, in Trax.Effect), trusted host code reaches only system-owned instances through the named host API, and the
+(`Trax.StateMachine.Persistence.Integration.ActorHierarchyTests`, in Trax.Effect), trusted host code reaches only system-owned instances through the named host API, and the
census lists what that code can send, but a host that drives a system-owned instance on a client's behalf has chosen
to trust it. The twin's prediction is checked against the server only where the differential corpus and
`clientResult` reach.
diff --git a/Trax.Docs/adr/0052-a-state-spawns-a-child-machine-as-it-invokes-a-train.md b/Trax.Docs/adr/0052-a-state-spawns-a-child-machine-as-it-invokes-a-train.md
index 953a7f577..92c73bf05 100644
--- a/Trax.Docs/adr/0052-a-state-spawns-a-child-machine-as-it-invokes-a-train.md
+++ b/Trax.Docs/adr/0052-a-state-spawns-a-child-machine-as-it-invokes-a-train.md
@@ -68,11 +68,11 @@ draft; once the parent has moved on it is an ordinary instance.
## Exemplars
-**Enforced elsewhere:** `SpawnedChildTests` in `Trax.Effect.StateMachine.Persistence.Integration` drives the flow on
+**Enforced elsewhere:** `SpawnedChildTests` in `Trax.StateMachine.Persistence.Integration` drives the flow on
Postgres and SQLite (the child is created for the parent's owner, its end and its failure move the parent, leaving
removes it and what it waits on, the sweep delivers an end its write did not and a child that disappeared, and a
waiting parent's child cannot be discarded, saved or answered for by a forged outcome); `SpawnsStartupValidatorTests`
-in the same project pins the startup refusals; `SpawnDeclarationTests` in `Trax.Effect.StateMachine.Tests` pins the
+in the same project pins the startup refusals; `SpawnDeclarationTests` in `Trax.StateMachine.Tests` pins the
builder and the IR export.
- [Spawn a child machine from a state](/docs/statemachine/spawning-child-machines) is the rule as published.
diff --git a/Trax.Docs/book/a-generated-client/the-hub-serves-the-storefront.md b/Trax.Docs/book/a-generated-client/the-hub-serves-the-storefront.md
index 4d9d2ae7a..e5863ae23 100644
--- a/Trax.Docs/book/a-generated-client/the-hub-serves-the-storefront.md
+++ b/Trax.Docs/book/a-generated-client/the-hub-serves-the-storefront.md
@@ -41,7 +41,7 @@ using Trax.Effect.JunctionProvider.Logging.Extensions;
using Trax.Effect.JunctionProvider.Progress.Extensions;
using Trax.Effect.Models.Manifest;
using Trax.Effect.Provider.Parameter.Extensions;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
using Trax.Mediator.Extensions;
using Trax.Scheduler.Extensions;
using Trax.Scheduler.Services.JobSubmitter;
diff --git a/Trax.Docs/book/checkout-is-a-state-machine/packages.md b/Trax.Docs/book/checkout-is-a-state-machine/packages.md
index c7b7fb478..49a88808d 100644
--- a/Trax.Docs/book/checkout-is-a-state-machine/packages.md
+++ b/Trax.Docs/book/checkout-is-a-state-machine/packages.md
@@ -12,7 +12,7 @@ follows: book/checkout-is-a-state-machine/where-it-lives
# 12.3 Packages
-The library takes `Trax.Effect.StateMachine.Persistence`, which holds machines and stores their
+The library takes `Trax.StateMachine.Persistence`, which holds machines and stores their
instances. The hub serves them, which needs persisted operations, and reports a run's progress
while a machine waits on it. The tests check the machine against its exported definition.
@@ -38,8 +38,8 @@ while a machine waits on it. The tests check the machine against its exported de
-
-
+
+
@@ -93,7 +93,7 @@ while a machine waits on it. The tests check the machine against its exported de
-
+
@@ -163,7 +163,7 @@ while a machine waits on it. The tests check the machine against its exported de
-
+
diff --git a/Trax.Docs/book/checkout-is-a-state-machine/serve-it.md b/Trax.Docs/book/checkout-is-a-state-machine/serve-it.md
index 5ab070077..419b1d65a 100644
--- a/Trax.Docs/book/checkout-is-a-state-machine/serve-it.md
+++ b/Trax.Docs/book/checkout-is-a-state-machine/serve-it.md
@@ -29,7 +29,7 @@ says how, in one class.
```csharp compile=app file=Shopfront.Hub/Auth/TraxCallerSnapshotPrincipal.cs
using Trax.Api.Auth;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Shopfront.Auth;
@@ -65,7 +65,7 @@ using Trax.Effect.JunctionProvider.Logging.Extensions;
using Trax.Effect.JunctionProvider.Progress.Extensions;
using Trax.Effect.Models.Manifest;
using Trax.Effect.Provider.Parameter.Extensions;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
using Trax.Mediator.Extensions;
using Trax.Scheduler.Extensions;
using Trax.Scheduler.Services.JobSubmitter;
diff --git a/Trax.Docs/book/checkout-is-a-state-machine/test-it.md b/Trax.Docs/book/checkout-is-a-state-machine/test-it.md
index d3a972786..5603bca38 100644
--- a/Trax.Docs/book/checkout-is-a-state-machine/test-it.md
+++ b/Trax.Docs/book/checkout-is-a-state-machine/test-it.md
@@ -19,7 +19,7 @@ a customer would.
```csharp compile=tests file=tests/Shopfront.Tests/UnitTests/CheckoutMachineTests.cs
using Shopfront.Machines.Checkout;
-using Trax.Effect.StateMachine.Testing;
+using Trax.StateMachine.Testing;
namespace Shopfront.Tests.UnitTests;
diff --git a/Trax.Docs/book/checkout-is-a-state-machine/the-machine.md b/Trax.Docs/book/checkout-is-a-state-machine/the-machine.md
index f62798eba..148987bb1 100644
--- a/Trax.Docs/book/checkout-is-a-state-machine/the-machine.md
+++ b/Trax.Docs/book/checkout-is-a-state-machine/the-machine.md
@@ -19,9 +19,9 @@ using System.Text.Json.Nodes;
using Shopfront.Auth;
using Shopfront.Machines.Checkout.Models;
using Trax.Effect.Attributes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
namespace Shopfront.Machines.Checkout;
diff --git a/Trax.Docs/book/deploy/migrate-the-shops-schema.md b/Trax.Docs/book/deploy/migrate-the-shops-schema.md
index 48d8660b6..148484d4a 100644
--- a/Trax.Docs/book/deploy/migrate-the-shops-schema.md
+++ b/Trax.Docs/book/deploy/migrate-the-shops-schema.md
@@ -49,8 +49,8 @@ dotnet tool install dotnet-ef --version 10.0.12
-
-
+
+
@@ -111,7 +111,7 @@ keeps it out of everything that references the library: only the tools use it.
-
+
diff --git a/Trax.Docs/book/deploy/the-hub.md b/Trax.Docs/book/deploy/the-hub.md
index 9da3aa513..5ca55a887 100644
--- a/Trax.Docs/book/deploy/the-hub.md
+++ b/Trax.Docs/book/deploy/the-hub.md
@@ -40,7 +40,7 @@ using Trax.Effect.JunctionProvider.Logging.Extensions;
using Trax.Effect.JunctionProvider.Progress.Extensions;
using Trax.Effect.Models.Manifest;
using Trax.Effect.Provider.Parameter.Extensions;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
using Trax.Mediator.Extensions;
using Trax.Scheduler.Extensions;
using Trax.Scheduler.Services.JobSubmitter;
diff --git a/Trax.Docs/book/require-persisted-operations/make-the-hub-refuse.md b/Trax.Docs/book/require-persisted-operations/make-the-hub-refuse.md
index fda792cd8..083f2fa81 100644
--- a/Trax.Docs/book/require-persisted-operations/make-the-hub-refuse.md
+++ b/Trax.Docs/book/require-persisted-operations/make-the-hub-refuse.md
@@ -38,7 +38,7 @@ using Trax.Effect.JunctionProvider.Logging.Extensions;
using Trax.Effect.JunctionProvider.Progress.Extensions;
using Trax.Effect.Models.Manifest;
using Trax.Effect.Provider.Parameter.Extensions;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
using Trax.Mediator.Extensions;
using Trax.Scheduler.Extensions;
using Trax.Scheduler.Services.JobSubmitter;
diff --git a/Trax.Docs/book/require-persisted-operations/test-it.md b/Trax.Docs/book/require-persisted-operations/test-it.md
index 7e6d9f15d..86d670bfc 100644
--- a/Trax.Docs/book/require-persisted-operations/test-it.md
+++ b/Trax.Docs/book/require-persisted-operations/test-it.md
@@ -74,7 +74,7 @@ test project copies it beside the tests.
-
+
@@ -90,7 +90,7 @@ using System.Text.Json;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc.Testing;
using Shopfront.Auth;
-using Trax.Effect.StateMachine;
+using Trax.StateMachine;
namespace Shopfront.Tests.IntegrationTests;
diff --git a/Trax.Docs/book/the-machine-places-the-order/the-checkout-invokes-and-spawns.md b/Trax.Docs/book/the-machine-places-the-order/the-checkout-invokes-and-spawns.md
index f4ab8dec1..bcc0e5dcf 100644
--- a/Trax.Docs/book/the-machine-places-the-order/the-checkout-invokes-and-spawns.md
+++ b/Trax.Docs/book/the-machine-places-the-order/the-checkout-invokes-and-spawns.md
@@ -97,9 +97,9 @@ using Shopfront.Machines.Parcel.Models;
using Shopfront.Trains.PlaceOrder;
using Shopfront.Trains.PlaceOrder.Models;
using Trax.Effect.Attributes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
namespace Shopfront.Machines.Checkout;
diff --git a/Trax.Docs/book/the-machine-places-the-order/the-parcel.md b/Trax.Docs/book/the-machine-places-the-order/the-parcel.md
index fb2af3be8..2d11306fe 100644
--- a/Trax.Docs/book/the-machine-places-the-order/the-parcel.md
+++ b/Trax.Docs/book/the-machine-places-the-order/the-parcel.md
@@ -75,8 +75,8 @@ public sealed record ParcelResult;
```csharp compile=app file=Shopfront.Core/Machines/Parcel/ParcelMachine.cs
using System.Text.Json.Nodes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
namespace Shopfront.Machines.Parcel;
diff --git a/Trax.Docs/book/the-machine-places-the-order/what-an-invoked-run-is.md b/Trax.Docs/book/the-machine-places-the-order/what-an-invoked-run-is.md
index 825bdef19..b0c81d321 100644
--- a/Trax.Docs/book/the-machine-places-the-order/what-an-invoked-run-is.md
+++ b/Trax.Docs/book/the-machine-places-the-order/what-an-invoked-run-is.md
@@ -92,7 +92,7 @@ A small helper finds it, or nothing.
`Shopfront.Core/Machines/InvokedRuns.cs`:
```csharp compile=app file=Shopfront.Core/Machines/InvokedRuns.cs
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
namespace Shopfront.Machines;
diff --git a/Trax.Docs/effect/data-model.md b/Trax.Docs/effect/data-model.md
index 73204630d..35573fc9d 100644
--- a/Trax.Docs/effect/data-model.md
+++ b/Trax.Docs/effect/data-model.md
@@ -31,7 +31,7 @@ The Postgres and Sqlite data providers create these tables in the `trax` schema
| `checkpoint` | `Checkpoint` | One row per run and declared node a run can [resume](/docs/sdk-reference/train-methods/checkpoint) from |
| `effect_claim` | `EffectClaim` | An idempotency claim for an exactly-once side effect, with a lease and fence token |
| `runner_nonce` | `RunnerNonce` | Nonces a runner accepted on signed requests, so instances sharing the database accept a request once |
-| `snapshot_draft` | `SnapshotDraft` | State machine instance drafts, used by `Trax.Effect.StateMachine.Persistence` |
+| `snapshot_draft` | `SnapshotDraft` | State machine instance drafts, used by `Trax.StateMachine.Persistence` |
| `snapshot_transition` | `SnapshotTransition` | Each state-machine instance's history, one row per snapshot write, deleted with the instance |
| `persisted_operation` | `PersistedOperation` | Stored GraphQL operations served by id |
| `persisted_operation_history` | `PersistedOperationHistory` | One row per change to a persisted operation |
diff --git a/Trax.Docs/migration-guides/turn-off-snapshot-change-notices.md b/Trax.Docs/migration-guides/turn-off-snapshot-change-notices.md
index f936a73ff..03ec1747f 100644
--- a/Trax.Docs/migration-guides/turn-off-snapshot-change-notices.md
+++ b/Trax.Docs/migration-guides/turn-off-snapshot-change-notices.md
@@ -6,7 +6,7 @@ area: data
nav_order: 12
source:
- Trax.Effect/src/Trax.Effect.Data.Postgres/Migrations/080_snapshot_draft_change_notify_switch.sql
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/ChangeFeedStartupValidator.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/ChangeFeedStartupValidator.cs
---
# Turn off state-machine change notices
@@ -28,7 +28,7 @@ serves state machines from this database:
```csharp compile
using Trax.Effect.Data.Postgres.Extensions;
using Trax.Effect.Extensions;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
using Trax.Mediator.Extensions;
services.AddTrax(trax =>
diff --git a/Trax.Docs/reference/acknowledgments.md b/Trax.Docs/reference/acknowledgments.md
index c80b4c32c..7fb6b1027 100644
--- a/Trax.Docs/reference/acknowledgments.md
+++ b/Trax.Docs/reference/acknowledgments.md
@@ -16,7 +16,7 @@ packages and the .NET shared framework: `Trax.Api`, `Trax.Api.Auth`, `Trax.Api.A
`Trax.Api.GraphQL.Audit`, `Trax.Api.GraphQL.Client.Typed`, `Trax.Effect.Broadcaster.SignalR`,
`Trax.Effect.Decisions.SystemOne`, `Trax.Effect.JunctionProvider.Logging`,
`Trax.Effect.JunctionProvider.Progress`, `Trax.Effect.Provider.Parameter`,
-`Trax.Effect.StateMachine`, `Trax.Effect.StateMachine.Testing` and `Trax.Samples.Templates`.
+`Trax.StateMachine`, `Trax.StateMachine.Testing` and `Trax.Samples.Templates`.
## Trax.Core
@@ -98,7 +98,7 @@ packages and the .NET shared framework: `Trax.Api`, `Trax.Api.Auth`, `Trax.Api.A
|---|---|---|
| [RabbitMQ.Client](https://github.com/rabbitmq/rabbitmq-dotnet-client) | Apache 2.0 or MPL 2.0 | RabbitMQ client for cross-process lifecycle events |
-## Trax.Effect.StateMachine.Persistence
+## Trax.StateMachine.Persistence
| Package | Licence | Used for |
|---|---|---|
diff --git a/Trax.Docs/reference/cli.md b/Trax.Docs/reference/cli.md
index ba5a1f034..a24b6cb35 100644
--- a/Trax.Docs/reference/cli.md
+++ b/Trax.Docs/reference/cli.md
@@ -344,7 +344,7 @@ trax machine check --assembly ./bin/MyApp.dll \
Scaffolds one declarative C# file, `Machine.cs`: the state and trigger enums, a context record, a
guarded transition, and the differential wiring, ready for `trax machine generate`. The machine derives from
-`Machine` in `Trax.Effect.StateMachine.Persistence`, so the project holding the file needs
+`Machine` in `Trax.StateMachine.Persistence`, so the project holding the file needs
that package, at the version the CLI prints (the one it is built against). `generate` then reads the built
assembly, not the source.
diff --git a/Trax.Docs/reference/glossary.md b/Trax.Docs/reference/glossary.md
index 668731cee..238056db9 100644
--- a/Trax.Docs/reference/glossary.md
+++ b/Trax.Docs/reference/glossary.md
@@ -208,4 +208,4 @@ An EF entity marked `[TraxQueryModel]` (in `Trax.Effect.Attributes`), which `Add
*Roughly:* a long-lived record that moves between named states.
-A machine deriving `Machine` in `Trax.Effect.StateMachine.Persistence`: states, triggers and a context record, stored as a language-neutral snapshot that the C# engine and its TypeScript twin both read. See [State Machines](/docs/statemachine).
+A machine deriving `Machine` in `Trax.StateMachine.Persistence`: states, triggers and a context record, stored as a language-neutral snapshot that the C# engine and its TypeScript twin both read. See [State Machines](/docs/statemachine).
diff --git a/Trax.Docs/reference/packages.md b/Trax.Docs/reference/packages.md
index ad374a64d..4468c4341 100644
--- a/Trax.Docs/reference/packages.md
+++ b/Trax.Docs/reference/packages.md
@@ -87,9 +87,9 @@ dotnet add package Trax.Api.Dashboard
| [Trax.Effect.Provider.Parameter](https://www.nuget.org/packages/Trax.Effect.Provider.Parameter) | `SaveTrainParameters()`: serializes each train's input and output into its Metadata row, masking members marked `[TraxSensitive]`. See [Parameter Effect](/docs/effect/effect-providers/parameter-effect). | `Trax.Effect.Provider.Parameter.Extensions` | `Trax.Effect` and a data provider. |
| [Trax.Effect.Broadcaster.RabbitMQ](https://www.nuget.org/packages/Trax.Effect.Broadcaster.RabbitMQ) | `UseRabbitMq(connectionString)` on the `UseBroadcaster` builder, so lifecycle events raised in one process reach handlers in every other. See [Broadcaster Sinks](/docs/effect/broadcaster-sinks). | `Trax.Effect.Broadcaster.RabbitMQ.Extensions` | `Trax.Effect`. |
| [Trax.Effect.Broadcaster.SignalR](https://www.nuget.org/packages/Trax.Effect.Broadcaster.SignalR) | `UseSignalRHub()` on the `UseBroadcaster` builder and `MapTraxTrainEventHub()` for the endpoint, so browser and Blazor clients see train events as they happen. See [UseSignalRHub](/docs/sdk-reference/configuration/use-signalr-hub). | `Trax.Effect.Broadcaster.SignalR.Extensions` | `Trax.Effect`. |
-| [Trax.Effect.StateMachine](https://www.nuget.org/packages/Trax.Effect.StateMachine) | The snapshot state-machine engine: state as language-neutral JSON that a C# backend and a TypeScript client agree on, authored through `IMachineBuilder`. No dependencies. See [State Machines](/docs/statemachine). | `Trax.Effect.StateMachine` | Usually `Trax.Effect.StateMachine.Persistence`. |
-| [Trax.Effect.StateMachine.Persistence](https://www.nuget.org/packages/Trax.Effect.StateMachine.Persistence) | `Machine`, the user-scoped snapshot store, the draft service, the exactly-once effect primitive, `AddStateMachines` and `AddTraxStateMachineSelfCheck`. See [AddStateMachines](/docs/sdk-reference/statemachine-api/add-state-machines). | `Trax.Effect.StateMachine.Persistence` | `Trax.Effect` and a data provider; `AddStateMachines` refuses to register without one. |
-| [Trax.Effect.StateMachine.Testing](https://www.nuget.org/packages/Trax.Effect.StateMachine.Testing) | Replays the differential corpus produced by the TypeScript engine through the C# engine and returns the cases it fails to reproduce, proving the two engines agree. See [Codegen Pipeline](/docs/statemachine/codegen-pipeline). | `Trax.Effect.StateMachine.Testing` | A test project, and the corpus `trax machine generate` writes. |
+| [Trax.StateMachine](https://www.nuget.org/packages/Trax.StateMachine) | The snapshot state-machine engine: state as language-neutral JSON that a C# backend and a TypeScript client agree on, authored through `IMachineBuilder`. No dependencies. See [State Machines](/docs/statemachine). | `Trax.StateMachine` | Usually `Trax.StateMachine.Persistence`. |
+| [Trax.StateMachine.Persistence](https://www.nuget.org/packages/Trax.StateMachine.Persistence) | `Machine`, the user-scoped snapshot store, the draft service, the exactly-once effect primitive, `AddStateMachines` and `AddTraxStateMachineSelfCheck`. See [AddStateMachines](/docs/sdk-reference/statemachine-api/add-state-machines). | `Trax.StateMachine.Persistence` | `Trax.Effect` and a data provider; `AddStateMachines` refuses to register without one. |
+| [Trax.StateMachine.Testing](https://www.nuget.org/packages/Trax.StateMachine.Testing) | Replays the differential corpus produced by the TypeScript engine through the C# engine and returns the cases it fails to reproduce, proving the two engines agree. See [Codegen Pipeline](/docs/statemachine/codegen-pipeline). | `Trax.StateMachine.Testing` | A test project, and the corpus `trax machine generate` writes. |
## Trax.Mediator
diff --git a/Trax.Docs/sdk-reference/statemachine-api.md b/Trax.Docs/sdk-reference/statemachine-api.md
index f67ab0424..14fb0085d 100644
--- a/Trax.Docs/sdk-reference/statemachine-api.md
+++ b/Trax.Docs/sdk-reference/statemachine-api.md
@@ -15,7 +15,7 @@ Reference for authoring and hosting portable snapshot state machines. The concep
[State machines](/docs/statemachine); the walkthroughs are [Authoring a machine](/docs/statemachine/authoring) and
[Declarative authoring](/docs/statemachine/declarative-authoring).
-## Trax.Effect.StateMachine
+## Trax.StateMachine
- [Rules](/docs/sdk-reference/statemachine-api/rules): the string-free vocabulary for declarative guards and reducers.
- [Declarative data model](/docs/sdk-reference/statemachine-api/declarative-data-model): `Rule`, `Reduction`, `ContextSchema`, `DeclarativeModel` and the engine definition.
@@ -23,7 +23,7 @@ Reference for authoring and hosting portable snapshot state machines. The concep
- [Migrations](/docs/sdk-reference/statemachine-api/migrations): `MigrateFrom` and forward-migrating stored drafts.
- [Result codes](/docs/sdk-reference/statemachine-api/result-codes): the typed outcomes of advance, rehydrate and the draft operations.
-## Trax.Effect.StateMachine.Persistence
+## Trax.StateMachine.Persistence
- [AddStateMachines](/docs/sdk-reference/statemachine-api/add-state-machines): discovering machines and wiring the subsystem in one call.
- [Machine](/docs/sdk-reference/statemachine-api/machine): `Machine` and its builders.
@@ -34,7 +34,7 @@ Reference for authoring and hosting portable snapshot state machines. The concep
- [Runtime integrity](/docs/sdk-reference/statemachine-api/runtime-integrity): the schema-hash handshake, divergence detection and the self-check.
- [AddTraxStateMachineSelfCheck](/docs/sdk-reference/statemachine-api/add-trax-state-machine-self-check): the self-check as an ASP.NET Core health check.
-## Trax.Effect.StateMachine.Testing
+## Trax.StateMachine.Testing
- [MachineConformance](/docs/sdk-reference/statemachine-api/machine-conformance): checking a machine against its committed IR and corpus in a test.
diff --git a/Trax.Docs/sdk-reference/statemachine-api/add-state-machines.md b/Trax.Docs/sdk-reference/statemachine-api/add-state-machines.md
index 25e35b962..25a64419d 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/add-state-machines.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/add-state-machines.md
@@ -6,13 +6,13 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 1
-package: Trax.Effect.StateMachine.Persistence
-namespace: Trax.Effect.StateMachine.Persistence
+package: Trax.StateMachine.Persistence
+namespace: Trax.StateMachine.Persistence
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachinesBuilderExtensions.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineOptions.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineCensus.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineInstruments.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/StateMachinesBuilderExtensions.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/StateMachineOptions.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/MachineCensus.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/StateMachineInstruments.cs
redirect_from:
- /docs/sdk-reference/statemachine-api/add-trax-state-machines
---
@@ -29,7 +29,7 @@ contributes to the mediator scan so Trax routes them by input type. The stores r
## Signatures
```csharp fragment
-namespace Trax.Effect.StateMachine.Persistence;
+namespace Trax.StateMachine.Persistence;
public static class StateMachinesBuilderExtensions
{
diff --git a/Trax.Docs/sdk-reference/statemachine-api/add-trax-state-machine-self-check.md b/Trax.Docs/sdk-reference/statemachine-api/add-trax-state-machine-self-check.md
index 7acc77239..6644b5571 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/add-trax-state-machine-self-check.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/add-trax-state-machine-self-check.md
@@ -6,11 +6,11 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 12
-package: Trax.Effect.StateMachine.Persistence
-namespace: Trax.Effect.StateMachine.Persistence
+package: Trax.StateMachine.Persistence
+namespace: Trax.StateMachine.Persistence
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineSelfCheckHealthCheck.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotSelfCheck.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/StateMachineSelfCheckHealthCheck.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/SnapshotSelfCheck.cs
---
# AddTraxStateMachineSelfCheck
@@ -22,7 +22,7 @@ with every diff when a machine no longer reproduces it.
## Signature
```csharp fragment
-namespace Trax.Effect.StateMachine.Persistence;
+namespace Trax.StateMachine.Persistence;
public static class StateMachineHealthCheckExtensions
{
diff --git a/Trax.Docs/sdk-reference/statemachine-api/client-manifest.md b/Trax.Docs/sdk-reference/statemachine-api/client-manifest.md
index f0d25a2d1..ef749d7a4 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/client-manifest.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/client-manifest.md
@@ -6,10 +6,10 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 16
-package: Trax.Effect.StateMachine
-namespace: Trax.Effect.StateMachine
+package: Trax.StateMachine
+namespace: Trax.StateMachine
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/ClientManifest.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/ClientManifest.cs
- Trax.Effect/src/Trax.Effect/Configuration/ClientExport/TraxClientExport.cs
- Trax.Effect/src/Trax.Effect/Configuration/ClientExport/ITraxStartupCheck.cs
- Trax.Api/src/Trax.Api.GraphQL.PersistedOperations/Extensions/TraxClientManifestExtensions.cs
@@ -24,7 +24,7 @@ a frontend's build needs no running server, no database and no credential, and T
## Members
-Three namespaces: `ClientManifest` and its records are in `Trax.Effect.StateMachine`; `TraxClientExport` and
+Three namespaces: `ClientManifest` and its records are in `Trax.StateMachine`; `TraxClientExport` and
`ITraxStartupCheck` in `Trax.Effect.Configuration.ClientExport`; `RunTraxAsync` in
`Trax.Api.GraphQL.PersistedOperations.Extensions`.
diff --git a/Trax.Docs/sdk-reference/statemachine-api/declarative-data-model.md b/Trax.Docs/sdk-reference/statemachine-api/declarative-data-model.md
index 189501bbf..ee1af6212 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/declarative-data-model.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/declarative-data-model.md
@@ -6,18 +6,18 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 4
-package: Trax.Effect.StateMachine
-namespace: Trax.Effect.StateMachine
+package: Trax.StateMachine
+namespace: Trax.StateMachine
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/Rule.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/Reduction.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ContextSchema.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/DeclarativeModel.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/RuleEvaluator.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ReductionEvaluator.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/MachineDefinition.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Fluent.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/StorableJson.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/Rule.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/Reduction.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/ContextSchema.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/DeclarativeModel.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/RuleEvaluator.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/ReductionEvaluator.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/MachineDefinition.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Fluent.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/StorableJson.cs
---
# Declarative data model
diff --git a/Trax.Docs/sdk-reference/statemachine-api/i-snapshot-effect.md b/Trax.Docs/sdk-reference/statemachine-api/i-snapshot-effect.md
index 79d2df69e..4f061a8be 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/i-snapshot-effect.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/i-snapshot-effect.md
@@ -6,11 +6,11 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 7
-package: Trax.Effect.StateMachine.Persistence
-namespace: Trax.Effect.StateMachine.Persistence
+package: Trax.StateMachine.Persistence
+namespace: Trax.StateMachine.Persistence
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Ports.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotEffectRunner.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/Ports.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/SnapshotEffectRunner.cs
redirect_from:
- /docs/sdk-reference/statemachine-api/effects
---
@@ -24,7 +24,7 @@ its receipt in the snapshot, and does not run it again, a crash and retry includ
## Signature
```csharp fragment
-namespace Trax.Effect.StateMachine.Persistence;
+namespace Trax.StateMachine.Persistence;
public interface ISnapshotEffect
{
diff --git a/Trax.Docs/sdk-reference/statemachine-api/invoked-run.md b/Trax.Docs/sdk-reference/statemachine-api/invoked-run.md
index ca68f44fb..fe520ffc4 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/invoked-run.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/invoked-run.md
@@ -6,10 +6,10 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 11
-package: Trax.Effect.StateMachine.Persistence
-namespace: Trax.Effect.StateMachine.Persistence
+package: Trax.StateMachine.Persistence
+namespace: Trax.StateMachine.Persistence
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedRun.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/InvokedRun.cs
---
# InvokedRun
@@ -19,7 +19,7 @@ The machine instance whose invoking state queued the run going on, and who owns
## Signature
```csharp fragment
-namespace Trax.Effect.StateMachine.Persistence;
+namespace Trax.StateMachine.Persistence;
public sealed record InvokedRun(
string Machine,
@@ -50,7 +50,7 @@ public sealed record InvokedRun(
```csharp compile
using Trax.Core.Exceptions;
using Trax.Effect.Services.EffectJunction;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
public record PlayCard(Guid GameId, int Slot);
diff --git a/Trax.Docs/sdk-reference/statemachine-api/ir-format.md b/Trax.Docs/sdk-reference/statemachine-api/ir-format.md
index 3e9eae209..2de83621b 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/ir-format.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/ir-format.md
@@ -6,12 +6,12 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 5
-package: Trax.Effect.StateMachine
-namespace: Trax.Effect.StateMachine
+package: Trax.StateMachine
+namespace: Trax.StateMachine
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/IrExporter.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/SchemaReflection.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ValueFormats.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/IrExporter.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/SchemaReflection.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/ValueFormats.cs
---
# IR format
@@ -25,7 +25,7 @@ transition's guard and reducer as data. The per-language generators read it. The
## Signature
```csharp fragment
-namespace Trax.Effect.StateMachine;
+namespace Trax.StateMachine;
public static class IrExporter
{
diff --git a/Trax.Docs/sdk-reference/statemachine-api/machine-conformance.md b/Trax.Docs/sdk-reference/statemachine-api/machine-conformance.md
index d0b290ba9..e1a5aec63 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/machine-conformance.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/machine-conformance.md
@@ -6,12 +6,12 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 15
-package: Trax.Effect.StateMachine.Testing
-namespace: Trax.Effect.StateMachine.Testing
+package: Trax.StateMachine.Testing
+namespace: Trax.StateMachine.Testing
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/MachineConformance.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/DifferentialCorpus.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CorpusReplay.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Testing/MachineConformance.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Testing/DifferentialCorpus.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/CorpusReplay.cs
---
# MachineConformance
@@ -23,7 +23,7 @@ test framework.
## Signature
```csharp fragment
-namespace Trax.Effect.StateMachine.Testing;
+namespace Trax.StateMachine.Testing;
public static class MachineConformance
{
@@ -57,13 +57,13 @@ public static class DifferentialCorpus
- The comparisons ignore a trailing newline: committed files carry one, the in-memory forms do not.
- `Replay` compares reason codes and canonical wire, never rejection detail. `CorpusReplay.Replay` in
- `Trax.Effect.StateMachine` is the same replay, shipped in the engine so a host can run it at startup;
+ `Trax.StateMachine` is the same replay, shipped in the engine so a host can run it at startup;
`IMachine.SelfCheck()` calls it.
## Example
```csharp compile
-using Trax.Effect.StateMachine.Testing;
+using Trax.StateMachine.Testing;
var problems = MachineConformance.Check(
new CheckoutMachine(),
diff --git a/Trax.Docs/sdk-reference/statemachine-api/machine-instances.md b/Trax.Docs/sdk-reference/statemachine-api/machine-instances.md
index a3aa9e0c3..71917985a 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/machine-instances.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/machine-instances.md
@@ -6,10 +6,10 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 13
-package: Trax.Effect.StateMachine.Persistence
-namespace: Trax.Effect.StateMachine.Persistence
+package: Trax.StateMachine.Persistence
+namespace: Trax.StateMachine.Persistence
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/MachineInstances.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/MachineInstances.cs
---
# IMachineInstances
@@ -22,7 +22,7 @@ scoped.
## Signature
```csharp fragment
-namespace Trax.Effect.StateMachine.Persistence;
+namespace Trax.StateMachine.Persistence;
public interface IMachineInstances
{
diff --git a/Trax.Docs/sdk-reference/statemachine-api/machine.md b/Trax.Docs/sdk-reference/statemachine-api/machine.md
index bd2fc9a20..74b1372b9 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/machine.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/machine.md
@@ -6,14 +6,14 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 2
-package: Trax.Effect.StateMachine.Persistence
-namespace: Trax.Effect.StateMachine.Persistence
+package: Trax.StateMachine.Persistence
+namespace: Trax.StateMachine.Persistence
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Machine.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Fluent.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Invokes.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Timers.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/MachineTrigger.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/Machine.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Fluent.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Invokes.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Timers.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/MachineTrigger.cs
redirect_from:
- /docs/sdk-reference/statemachine-api/fluent-authoring
---
@@ -22,13 +22,13 @@ redirect_from:
A machine is a subclass of `Machine` that declares itself in `Configure`. `TState` and `TTrigger`
are the host's own enums. The builder compiles to the same total engine (`SnapshotMachine`) the
-conformance fixtures drive. `Machine` ships in `Trax.Effect.StateMachine.Persistence`; the builder
-interfaces ship in `Trax.Effect.StateMachine`.
+conformance fixtures drive. `Machine` ships in `Trax.StateMachine.Persistence`; the builder
+interfaces ship in `Trax.StateMachine`.
## Signature
```csharp fragment
-namespace Trax.Effect.StateMachine.Persistence;
+namespace Trax.StateMachine.Persistence;
public abstract class Machine : IMachine
where TState : struct, Enum
diff --git a/Trax.Docs/sdk-reference/statemachine-api/migrations.md b/Trax.Docs/sdk-reference/statemachine-api/migrations.md
index a2760883a..c328c7616 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/migrations.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/migrations.md
@@ -6,12 +6,12 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 6
-package: Trax.Effect.StateMachine
-namespace: Trax.Effect.StateMachine
+package: Trax.StateMachine
+namespace: Trax.StateMachine
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Fluent.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/SnapshotMachine.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/MachineDefinition.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Fluent.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/SnapshotMachine.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/MachineDefinition.cs
---
# Migrations
diff --git a/Trax.Docs/sdk-reference/statemachine-api/persistence-ports.md b/Trax.Docs/sdk-reference/statemachine-api/persistence-ports.md
index df0c14594..12529249f 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/persistence-ports.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/persistence-ports.md
@@ -6,19 +6,19 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 8
-package: Trax.Effect.StateMachine.Persistence
-namespace: Trax.Effect.StateMachine.Persistence
+package: Trax.StateMachine.Persistence
+namespace: Trax.StateMachine.Persistence
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Ports.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotDraftService.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Actor.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/CallerAuthorization.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/EfSnapshotStore.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/EffectClaimStore.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/IdempotentEffect.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/RequestIdRing.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotLimits.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotMachineRegistry.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/Ports.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/SnapshotDraftService.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/Actor.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/CallerAuthorization.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/EfSnapshotStore.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/EffectClaimStore.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/IdempotentEffect.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/RequestIdRing.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/SnapshotLimits.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/SnapshotMachineRegistry.cs
---
# Persistence ports
diff --git a/Trax.Docs/sdk-reference/statemachine-api/result-codes.md b/Trax.Docs/sdk-reference/statemachine-api/result-codes.md
index 883f1c4b8..7984076d2 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/result-codes.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/result-codes.md
@@ -6,11 +6,11 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 9
-package: Trax.Effect.StateMachine
-namespace: Trax.Effect.StateMachine
+package: Trax.StateMachine
+namespace: Trax.StateMachine
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/RefusalCode.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Results.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/RefusalCode.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Results.cs
---
# Result codes
diff --git a/Trax.Docs/sdk-reference/statemachine-api/rules.md b/Trax.Docs/sdk-reference/statemachine-api/rules.md
index dad0a8f1f..d7eae144a 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/rules.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/rules.md
@@ -6,11 +6,11 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 3
-package: Trax.Effect.StateMachine
-namespace: Trax.Effect.StateMachine
+package: Trax.StateMachine
+namespace: Trax.StateMachine
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/Rules.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/MemberPath.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/Rules.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/MemberPath.cs
---
# Rules
@@ -23,7 +23,7 @@ produces the `Rule`; the reduction factories produce a `Reduction`.
## Signature
```csharp fragment
-namespace Trax.Effect.StateMachine;
+namespace Trax.StateMachine;
public static class Rules
{
diff --git a/Trax.Docs/sdk-reference/statemachine-api/runtime-integrity.md b/Trax.Docs/sdk-reference/statemachine-api/runtime-integrity.md
index 932f2445a..7e5e193b3 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/runtime-integrity.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/runtime-integrity.md
@@ -6,12 +6,12 @@ area: machines
parent: State Machine API
grand_parent: SDK Reference
nav_order: 10
-package: Trax.Effect.StateMachine.Persistence
-namespace: Trax.Effect.StateMachine.Persistence
+package: Trax.StateMachine.Persistence
+namespace: Trax.StateMachine.Persistence
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotSelfCheck.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SnapshotMachineRegistry.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Machine.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/SnapshotSelfCheck.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/SnapshotMachineRegistry.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/Machine.cs
---
# Runtime integrity
diff --git a/Trax.Docs/sdk-reference/statemachine-api/typescript-package.md b/Trax.Docs/sdk-reference/statemachine-api/typescript-package.md
index a446ea398..593de7c20 100644
--- a/Trax.Docs/sdk-reference/statemachine-api/typescript-package.md
+++ b/Trax.Docs/sdk-reference/statemachine-api/typescript-package.md
@@ -17,7 +17,7 @@ source:
# TypeScript package
-`@traxsharp/state-machine` is the TypeScript twin of `Trax.Effect.StateMachine`, published from `Trax.StateMachine/ts`.
+`@traxsharp/state-machine` is the TypeScript twin of `Trax.StateMachine`, published from `Trax.StateMachine/ts`.
Its exports are pinned by a committed baseline (`src/exports.test.ts`).
```bash
diff --git a/Trax.Docs/sdk-reference/testing.md b/Trax.Docs/sdk-reference/testing.md
index 3a48f4e26..818495463 100644
--- a/Trax.Docs/sdk-reference/testing.md
+++ b/Trax.Docs/sdk-reference/testing.md
@@ -18,5 +18,5 @@ The test-support packages Trax ships for a consumer's own test projects. The arc
| [Trax.Effect.Data.Testing](/docs/sdk-reference/testing/effect-data-testing) | Data-layer guards and fixture, the owner-scope census, and `TraxInvariants` |
| [Trax.Mediator.Testing](/docs/sdk-reference/testing/mediator-testing) | The guard that every train has its own train interface |
| [Trax.Api.GraphQL.Testing](/docs/sdk-reference/testing/graphql-testing) | Cross-schema GraphQL guards and fixture |
-| [Trax.Effect.StateMachine.Testing](/docs/sdk-reference/testing/effect-statemachine-testing) | `MachineConformance` and `DifferentialCorpus` |
+| [Trax.StateMachine.Testing](/docs/sdk-reference/testing/effect-statemachine-testing) | `MachineConformance` and `DifferentialCorpus` |
| [Trax.Api.Auth.Jwt.Testing](/docs/sdk-reference/api-auth/test-jwks-server) | Signed test tokens for JWT-authenticated hosts |
diff --git a/Trax.Docs/sdk-reference/testing/effect-statemachine-testing.md b/Trax.Docs/sdk-reference/testing/effect-statemachine-testing.md
index 5dab8bed6..5682f5998 100644
--- a/Trax.Docs/sdk-reference/testing/effect-statemachine-testing.md
+++ b/Trax.Docs/sdk-reference/testing/effect-statemachine-testing.md
@@ -1,26 +1,26 @@
---
-title: Trax.Effect.StateMachine.Testing
-description: "Reference for Trax.Effect.StateMachine.Testing: MachineConformance, which checks a machine against its committed IR and corpus, and DifferentialCorpus replay."
+title: Trax.StateMachine.Testing
+description: "Reference for Trax.StateMachine.Testing: MachineConformance, which checks a machine against its committed IR and corpus, and DifferentialCorpus replay."
type: reference
area: testing
-package: Trax.Effect.StateMachine.Testing
-namespace: Trax.Effect.StateMachine.Testing
+package: Trax.StateMachine.Testing
+namespace: Trax.StateMachine.Testing
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/MachineConformance.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing/DifferentialCorpus.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Testing/MachineConformance.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Testing/DifferentialCorpus.cs
parent: Testing
grand_parent: SDK Reference
nav_order: 5
---
-# Trax.Effect.StateMachine.Testing
+# Trax.StateMachine.Testing
Checks that keep a state machine, its committed artifacts and the TypeScript twin generated from them from drifting apart. Each returns a list of human-readable problems, empty when everything agrees, for any test framework to assert on.
## Signatures
```csharp fragment
-namespace Trax.Effect.StateMachine.Testing;
+namespace Trax.StateMachine.Testing;
public static class MachineConformance
{
@@ -48,13 +48,13 @@ public static class DifferentialCorpus
| `WriteIr(machine, irPath)` | Writes `machine.ExportIr()` to `irPath`, with a trailing newline |
| `DifferentialCorpus.Replay(machine, goldenJson)` | Replays a corpus produced by the `@traxsharp/state-machine` oracle through the C# engine and returns one diff per case it does not reproduce. Only reason codes and canonical wire are compared, not rejection detail. |
-`IMachine` is in `Trax.Effect.StateMachine.Persistence`; see [State Machine API](/docs/sdk-reference/statemachine-api).
+`IMachine` is in `Trax.StateMachine.Persistence`; see [State Machine API](/docs/sdk-reference/statemachine-api).
## Example
```csharp compile
-using Trax.Effect.StateMachine.Persistence;
-using Trax.Effect.StateMachine.Testing;
+using Trax.StateMachine.Persistence;
+using Trax.StateMachine.Testing;
public static class ConformanceCheck
{
diff --git a/Trax.Docs/statemachine.md b/Trax.Docs/statemachine.md
index b3d398987..12b5076cf 100644
--- a/Trax.Docs/statemachine.md
+++ b/Trax.Docs/statemachine.md
@@ -5,13 +5,13 @@ type: explanation
area: machines
nav_order: 1
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence
---
# State machines
-Trax.Effect.StateMachine represents a multi-step flow (a wizard, an application form, a checkout) as a
+Trax.StateMachine represents a multi-step flow (a wizard, an application form, a checkout) as a
small, language-neutral snapshot, so a C# backend and a TypeScript client agree on where a user is in the
flow and the data that goes with it. The whole runtime state of an instance is a serializable snapshot that
can be stored in Postgres and rebuilt from any point, so a user can start on one device and finish on
@@ -59,7 +59,7 @@ the declared name, so the value that is stored and served is canonical.
## Two runtimes, one behavior
-The engine is implemented twice, once in C# (`Trax.Effect.StateMachine`) and once in TypeScript
+The engine is implemented twice, once in C# (`Trax.StateMachine`) and once in TypeScript
(`@traxsharp/state-machine`). They are kept identical not by generating one engine from the other but by a shared set of
language-neutral conformance fixtures that both engines drive and must agree on. Only the result codes are contract;
human-readable detail text is free to differ. [Result codes](/docs/sdk-reference/statemachine-api/result-codes)
@@ -142,7 +142,7 @@ terminal step. The [TypeScript package](/docs/sdk-reference/statemachine-api/typ
| Piece | Location |
| --- | --- |
-| C# engine (pure, total, dependency-free) | Trax.Effect.StateMachine |
-| C# persistence, exactly-once effects, mutation trains | Trax.Effect.StateMachine.Persistence |
+| C# engine (pure, total, dependency-free) | Trax.StateMachine |
+| C# persistence, exactly-once effects, mutation trains | Trax.StateMachine.Persistence |
| TypeScript engine, typed facade, React hook | the @traxsharp/state-machine package |
| Shared machines (the exported IR, differential and migration goldens) and the frontend generators | the shared machines directory and the codegen tools |
diff --git a/Trax.Docs/statemachine/authoring.md b/Trax.Docs/statemachine/authoring.md
index e9b9bd7a9..c469d720e 100644
--- a/Trax.Docs/statemachine/authoring.md
+++ b/Trax.Docs/statemachine/authoring.md
@@ -5,8 +5,8 @@ type: how-to
area: machines
nav_order: 1
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Fluent.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachinesBuilderExtensions.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Fluent.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/StateMachinesBuilderExtensions.cs
---
# Author and serve a machine
@@ -30,9 +30,9 @@ client can do: a rule on every event and on its `Start`, and an owner-only or st
```csharp compile=checkout
using System.Text.Json.Nodes;
using Trax.Effect.Attributes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
public enum CheckoutState
{
@@ -133,8 +133,8 @@ the effect's key, which is the same for every run of one send; pass it to the sy
key. The effect gets the server's stored snapshot, never the client's, so price from what the server holds.
```csharp compile=checkout
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
public interface ICharge : ISnapshotEffect;
@@ -161,7 +161,7 @@ Drafts are scoped by a user key, which the host supplies through `ISnapshotPrinc
```csharp compile=checkout
using Trax.Api.Auth;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
public sealed class TraxCallerSnapshotPrincipal(TraxCaller caller) : ISnapshotPrincipal
{
@@ -185,7 +185,7 @@ using Trax.Api.GraphQL.Extensions;
using Trax.Api.GraphQL.PersistedOperations.Extensions;
using Trax.Effect.Data.Postgres.Extensions;
using Trax.Effect.Extensions;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
using Trax.Mediator.Extensions;
builder.Services.AddTrax(trax =>
@@ -240,7 +240,7 @@ default, and the opt-in requires an authorization policy:
```csharp compile
using Trax.Effect.Data.Postgres.Extensions;
using Trax.Effect.Extensions;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
using Trax.Mediator.Extensions;
builder.Services.AddTrax(trax =>
diff --git a/Trax.Docs/statemachine/canonical-wire.md b/Trax.Docs/statemachine/canonical-wire.md
index d0fb5fd22..b3ac991ca 100644
--- a/Trax.Docs/statemachine/canonical-wire.md
+++ b/Trax.Docs/statemachine/canonical-wire.md
@@ -5,8 +5,8 @@ type: reference
area: machines
nav_order: 20
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CanonicalJson.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/StorableJson.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/CanonicalJson.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/StorableJson.cs
---
# Canonical wire
diff --git a/Trax.Docs/statemachine/codegen-pipeline.md b/Trax.Docs/statemachine/codegen-pipeline.md
index dc81e3cf2..9f3c0962c 100644
--- a/Trax.Docs/statemachine/codegen-pipeline.md
+++ b/Trax.Docs/statemachine/codegen-pipeline.md
@@ -5,9 +5,9 @@ type: explanation
area: machines
nav_order: 2
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/IrExporter.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/CorpusReplay.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Testing
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/IrExporter.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/CorpusReplay.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Testing
---
# The codegen pipeline
diff --git a/Trax.Docs/statemachine/context-schemas.md b/Trax.Docs/statemachine/context-schemas.md
index afb411d13..07e115c2e 100644
--- a/Trax.Docs/statemachine/context-schemas.md
+++ b/Trax.Docs/statemachine/context-schemas.md
@@ -5,8 +5,8 @@ type: reference
area: machines
nav_order: 21
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/SchemaReflection.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules/ContextSchema.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/SchemaReflection.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules/ContextSchema.cs
---
# Context and input schemas
diff --git a/Trax.Docs/statemachine/declarative-authoring.md b/Trax.Docs/statemachine/declarative-authoring.md
index 2b48d75c1..23cb1f22c 100644
--- a/Trax.Docs/statemachine/declarative-authoring.md
+++ b/Trax.Docs/statemachine/declarative-authoring.md
@@ -5,7 +5,7 @@ type: how-to
area: machines
nav_order: 2
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Rules
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Rules
---
# Write guards and reducers as data
@@ -49,9 +49,9 @@ property types that refuse to configure.
```csharp compile=turnstile
using System.Text.Json.Nodes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
public sealed class TurnstileMachine : Machine
{
diff --git a/Trax.Docs/statemachine/generic-mutations.md b/Trax.Docs/statemachine/generic-mutations.md
index 5b62a4656..bede6e3b7 100644
--- a/Trax.Docs/statemachine/generic-mutations.md
+++ b/Trax.Docs/statemachine/generic-mutations.md
@@ -5,9 +5,9 @@ type: reference
area: machines
nav_order: 22
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericContracts.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/Mutations/GenericTrains.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/StateMachineOptions.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/Mutations/GenericContracts.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/Mutations/GenericTrains.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/StateMachineOptions.cs
---
# Generic state-machine mutations
diff --git a/Trax.Docs/statemachine/invoked-runs.md b/Trax.Docs/statemachine/invoked-runs.md
index ae66ec5dc..fa377a9ff 100644
--- a/Trax.Docs/statemachine/invoked-runs.md
+++ b/Trax.Docs/statemachine/invoked-runs.md
@@ -5,11 +5,11 @@ type: reference
area: machines
nav_order: 23
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Invokes.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeDelivery.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokeOutcomeReconciler.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedRunOutcomes.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokesStartupValidator.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Invokes.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/InvokeOutcomeDelivery.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/InvokeOutcomeReconciler.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/InvokedRunOutcomes.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/InvokesStartupValidator.cs
- Trax.Mediator/src/Trax.Mediator/Services/InvokedTrains/InvokedTrainLauncher.cs
---
diff --git a/Trax.Docs/statemachine/invoking-trains.md b/Trax.Docs/statemachine/invoking-trains.md
index 9e247f19a..da2199abd 100644
--- a/Trax.Docs/statemachine/invoking-trains.md
+++ b/Trax.Docs/statemachine/invoking-trains.md
@@ -5,9 +5,9 @@ type: how-to
area: machines
nav_order: 3
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Invokes.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokedTrainLauncher.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokesStartupValidator.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Invokes.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/InvokedTrainLauncher.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/InvokesStartupValidator.cs
---
# Invoke a train from a state
@@ -42,9 +42,9 @@ context the state was entered with. Every invoking state says where each outcome
```csharp compile=ingest
using System.Text.Json.Nodes;
-using Trax.Effect.StateMachine;
-using Trax.Effect.StateMachine.Persistence;
-using static Trax.Effect.StateMachine.Rules;
+using Trax.StateMachine;
+using Trax.StateMachine.Persistence;
+using static Trax.StateMachine.Rules;
public enum Stage
{
@@ -151,7 +151,7 @@ The host that registers the machine needs Postgres or SQLite (InMemory has no tr
using Trax.Effect.Data.Postgres.Extensions;
using Trax.Effect.Extensions;
using Trax.Effect.JunctionProvider.Progress.Extensions;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
using Trax.Mediator.Extensions;
builder.Services.AddTrax(trax =>
@@ -217,7 +217,7 @@ instance's invoke token, however many hosts deliver it. To change how often the
using Trax.Effect.Data.Postgres.Extensions;
using Trax.Effect.Extensions;
using Trax.Effect.JunctionProvider.Progress.Extensions;
-using Trax.Effect.StateMachine.Persistence;
+using Trax.StateMachine.Persistence;
using Trax.Mediator.Extensions;
builder.Services.AddTrax(trax =>
diff --git a/Trax.Docs/statemachine/spawning-child-machines.md b/Trax.Docs/statemachine/spawning-child-machines.md
index 375c5e417..b5df73ffb 100644
--- a/Trax.Docs/statemachine/spawning-child-machines.md
+++ b/Trax.Docs/statemachine/spawning-child-machines.md
@@ -5,9 +5,9 @@ type: how-to
area: machines
nav_order: 4
source:
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine/Invokes.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/InvokeOutbox.cs
- - Trax.StateMachine/dotnet/src/Trax.Effect.StateMachine.Persistence/SpawnsStartupValidator.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine/Invokes.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/InvokeOutbox.cs
+ - Trax.StateMachine/dotnet/src/Trax.StateMachine.Persistence/SpawnsStartupValidator.cs
---
# Spawn a child machine from a state
diff --git a/Trax.Docs/statemachine/undo-an-effect.md b/Trax.Docs/statemachine/undo-an-effect.md
index af915e30d..f6ce63363 100644
--- a/Trax.Docs/statemachine/undo-an-effect.md
+++ b/Trax.Docs/statemachine/undo-an-effect.md
@@ -37,9 +37,9 @@ whose one effect is the undo, started from the receipt the first machine recorde
```csharp compile=refund
using System.Text.Json.Nodes;
- using Trax.Effect.StateMachine;
- using Trax.Effect.StateMachine.Persistence;
- using static Trax.Effect.StateMachine.Rules;
+ using Trax.StateMachine;
+ using Trax.StateMachine.Persistence;
+ using static Trax.StateMachine.Rules;
public sealed record RefundStart
{
@@ -103,7 +103,7 @@ whose one effect is the undo, started from the receipt the first machine recorde
key: Trax runs the refund once per refund instance, and two refund instances for one charge are two instances.
```csharp compile=refund
- using Trax.Effect.StateMachine;
+ using Trax.StateMachine;
public sealed class GatewayRefund(IPaymentGateway gateway) : IRefund
{
diff --git a/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Context/sdk-reference/statemachine-api/_section.cs b/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Context/sdk-reference/statemachine-api/_section.cs
index b0e69a175..c941275d0 100644
--- a/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Context/sdk-reference/statemachine-api/_section.cs
+++ b/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Context/sdk-reference/statemachine-api/_section.cs
@@ -6,10 +6,10 @@
global using Trax.Effect.Data.Postgres.Extensions;
global using Trax.Effect.Extensions;
global using Trax.Effect.Provider.Json.Extensions;
-global using Trax.Effect.StateMachine;
-global using Trax.Effect.StateMachine.Persistence;
-global using static Trax.Effect.StateMachine.Rules;
global using Trax.Mediator.Extensions;
+global using Trax.StateMachine;
+global using Trax.StateMachine.Persistence;
+global using static Trax.StateMachine.Rules;
public enum CheckoutState
{
diff --git a/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Trax.Docs.Snippets.Tests.csproj b/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Trax.Docs.Snippets.Tests.csproj
index ac8e3b8ef..178721ee7 100644
--- a/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Trax.Docs.Snippets.Tests.csproj
+++ b/Trax.Docs/tests/Trax.Docs.Snippets.Tests/Trax.Docs.Snippets.Tests.csproj
@@ -59,9 +59,9 @@
-
-
-
+
+
+
diff --git a/Trax.Docs/tests/Trax.Docs.Snippets.Tests/packages.lock.json b/Trax.Docs/tests/Trax.Docs.Snippets.Tests/packages.lock.json
index ccc938dac..39cfef5a5 100644
--- a/Trax.Docs/tests/Trax.Docs.Snippets.Tests/packages.lock.json
+++ b/Trax.Docs/tests/Trax.Docs.Snippets.Tests/packages.lock.json
@@ -1165,38 +1165,13 @@
"Trax.Effect": "[1.99.99, )"
}
},
- "trax.effect.statemachine": {
- "type": "Project",
- "dependencies": {
- "Trax.Effect": "[1.99.99, )"
- }
- },
- "trax.effect.statemachine.persistence": {
- "type": "Project",
- "dependencies": {
- "Microsoft.EntityFrameworkCore": "[10.0.12, )",
- "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
- "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
- "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
- "Trax.Effect": "[1.99.99, )",
- "Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine": "[1.99.99, )"
- }
- },
- "trax.effect.statemachine.testing": {
- "type": "Project",
- "dependencies": {
- "Trax.Effect.StateMachine": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
- }
- },
"trax.mediator": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
"Trax.Effect": "[1.99.99, )",
"Trax.Effect.Data": "[1.99.99, )",
- "Trax.Effect.StateMachine.Persistence": "[1.99.99, )"
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
}
},
"trax.mediator.testing": {
@@ -1238,6 +1213,31 @@
"Trax.Scheduler": "[1.99.99, )"
}
},
+ "trax.statemachine": {
+ "type": "Project",
+ "dependencies": {
+ "Trax.Effect": "[1.99.99, )"
+ }
+ },
+ "trax.statemachine.persistence": {
+ "type": "Project",
+ "dependencies": {
+ "Microsoft.EntityFrameworkCore": "[10.0.12, )",
+ "Microsoft.EntityFrameworkCore.Relational": "[10.0.12, )",
+ "Microsoft.Extensions.DependencyInjection": "[10.0.13, )",
+ "Microsoft.Extensions.Diagnostics.HealthChecks": "[10.0.12, )",
+ "Trax.Effect": "[1.99.99, )",
+ "Trax.Effect.Data": "[1.99.99, )",
+ "Trax.StateMachine": "[1.99.99, )"
+ }
+ },
+ "trax.statemachine.testing": {
+ "type": "Project",
+ "dependencies": {
+ "Trax.StateMachine": "[1.99.99, )",
+ "Trax.StateMachine.Persistence": "[1.99.99, )"
+ }
+ },
"Amazon.Lambda.Core": {
"type": "CentralTransitive",
"requested": "[3.3.0, )",
diff --git a/Trax.Docs/tests/Trax.Docs.Tests/Tests/PackagesPageTests.cs b/Trax.Docs/tests/Trax.Docs.Tests/Tests/PackagesPageTests.cs
index 59b34d394..ce1ec46ba 100644
--- a/Trax.Docs/tests/Trax.Docs.Tests/Tests/PackagesPageTests.cs
+++ b/Trax.Docs/tests/Trax.Docs.Tests/Tests/PackagesPageTests.cs
@@ -38,9 +38,9 @@ public class PackagesPageTests
"Trax.Effect.JunctionProvider.Progress",
"Trax.Effect.Provider.Json",
"Trax.Effect.Provider.Parameter",
- "Trax.Effect.StateMachine",
- "Trax.Effect.StateMachine.Persistence",
- "Trax.Effect.StateMachine.Testing",
+ "Trax.StateMachine",
+ "Trax.StateMachine.Persistence",
+ "Trax.StateMachine.Testing",
// Trax.Mediator
"Trax.Mediator",
"Trax.Mediator.Testing",
diff --git a/Trax.Docs/what-trax-does.md b/Trax.Docs/what-trax-does.md
index d66d88e77..bcc0cec44 100644
--- a/Trax.Docs/what-trax-does.md
+++ b/Trax.Docs/what-trax-does.md
@@ -74,8 +74,8 @@ install ([Packages](/docs/reference/packages) has the full list).
| Capability | In plain words | Learn it | Understand it | Package |
|---|---|---|---|---|
-| State machines | A long-lived flow (a checkout, a form) as named states the server and the browser agree on. | [Chapter 12](/docs/book/checkout-is-a-state-machine) | [State machines](/docs/statemachine) | `Trax.Effect.StateMachine` |
-| A machine runs a train | A state starts a train and moves on with its result. | [Chapter 13](/docs/book/the-machine-places-the-order) | [Train or machine](/docs/statemachine/train-or-machine) | `Trax.Effect.StateMachine` |
+| State machines | A long-lived flow (a checkout, a form) as named states the server and the browser agree on. | [Chapter 12](/docs/book/checkout-is-a-state-machine) | [State machines](/docs/statemachine) | `Trax.StateMachine` |
+| A machine runs a train | A state starts a train and moves on with its result. | [Chapter 13](/docs/book/the-machine-places-the-order) | [Train or machine](/docs/statemachine/train-or-machine) | `Trax.StateMachine` |
| The browser twin | The same machine in TypeScript, so the browser predicts each move before the server confirms it. | [Chapter 16](/docs/book/checkout-in-the-browser) | [State machines](/docs/statemachine) | `@traxsharp/state-machine` |
## Ship it
diff --git a/Trax.Effect/AGENTS.md b/Trax.Effect/AGENTS.md
index ec45892c9..08b366b98 100644
--- a/Trax.Effect/AGENTS.md
+++ b/Trax.Effect/AGENTS.md
@@ -94,7 +94,7 @@ carries `Not ADR-enforcing:` with a reason, and the `adr-guard` job checks it. A
unclassified until you choose, and the build says so. Opting out is a normal answer; a reason
that reads as a deferral is not.
-`tests/Trax.Effect.StateMachine.Persistence.Integration/MigrationSchemaTests.cs` is the
+`tests/Trax.StateMachine.Persistence.Integration/MigrationSchemaTests.cs` is the
model-versus-DDL drift guard for the state-machine tables, and `EveryTableIsModelledTests` (Postgres)
with `SqliteEveryTableIsModelledTests` is the one for the data context: every migrated table is
mapped, and every mapped column exists (`0036`). The Postgres ones need a live Postgres. `docker compose up -d` provides one.
@@ -109,7 +109,7 @@ entity holding per-user data is filtered through the principal and exposed only
run all five without writing a test body. `TraxInvariants.cs` beside them checks a database once
every host has stopped (no run in progress, no effect claim left without a receipt, no dispatched
queue entry without its run); `CheckTraxInvariantsAttribute` runs it after every test in
-`Trax.Effect.Tests.Integration` and `Trax.Effect.StateMachine.Persistence.Integration`, and a test
+`Trax.Effect.Tests.Integration` and `Trax.StateMachine.Persistence.Integration`, and a test
that leaves such a row on purpose says why with `[LeavesStuckRuns]`. `tests/Trax.Effect.Data.Testing.Tests/` is their
own suite, and `DomainDataLayerGuardFixtureSelfTest` there subclasses the fixture the way a
consumer would. Changing either file changes what every consumer enforces, so treat
diff --git a/Trax.Effect/docs/adr/0002-framework-tables-are-migrated-domain-tables-are-bootstrapped.md b/Trax.Effect/docs/adr/0002-framework-tables-are-migrated-domain-tables-are-bootstrapped.md
index 6b7043d06..cde3d4d3f 100644
--- a/Trax.Effect/docs/adr/0002-framework-tables-are-migrated-domain-tables-are-bootstrapped.md
+++ b/Trax.Effect/docs/adr/0002-framework-tables-are-migrated-domain-tables-are-bootstrapped.md
@@ -69,7 +69,7 @@ Not covered:
- **These suites require a live Postgres and fail without one rather than skipping.** In
`tests/Trax.Effect.Tests.Integration` it is `UsePostgres` running the migrator at
registration time inside `[OneTimeSetUp]`; in
- `tests/Trax.Effect.StateMachine.Persistence.Integration` it is `PostgresSetup`, an
+ `tests/Trax.StateMachine.Persistence.Integration` it is `PostgresSetup`, an
assembly-wide `[SetUpFixture]` that opens a connection unconditionally, so even the Sqlite
case fails when Postgres is absent. That contradicts
`Trax.Docs/adr/0005-a-skipped-test-is-a-runtime-decision.md`, which binds this repo. The
diff --git a/Trax.Effect/src/Trax.Effect.Data/Services/DataContext/DataContext.cs b/Trax.Effect/src/Trax.Effect.Data/Services/DataContext/DataContext.cs
index 212e99e06..096a58174 100644
--- a/Trax.Effect/src/Trax.Effect.Data/Services/DataContext/DataContext.cs
+++ b/Trax.Effect/src/Trax.Effect.Data/Services/DataContext/DataContext.cs
@@ -136,12 +136,12 @@ public class DataContext(DbContextOptions options)
public DbSet JunctionRuns { get; set; }
///
- /// Gets or sets the DbSet for the state-machine drafts Trax.Effect.StateMachine.Persistence stores.
+ /// Gets or sets the DbSet for the state-machine drafts Trax.StateMachine.Persistence stores.
///
public DbSet SnapshotDrafts { get; set; }
///
- /// Gets or sets the DbSet for the exactly-once effect claims Trax.Effect.StateMachine.Persistence records.
+ /// Gets or sets the DbSet for the exactly-once effect claims Trax.StateMachine.Persistence records.
///
public DbSet EffectClaims { get; set; }
diff --git a/Trax.Effect/src/Trax.Effect.Data/Services/DataContext/IDataContext.cs b/Trax.Effect/src/Trax.Effect.Data/Services/DataContext/IDataContext.cs
index 65c052c6d..83a5b885e 100644
--- a/Trax.Effect/src/Trax.Effect.Data/Services/DataContext/IDataContext.cs
+++ b/Trax.Effect/src/Trax.Effect.Data/Services/DataContext/IDataContext.cs
@@ -163,7 +163,7 @@ public interface IDataContext : IEffectProvider, IAsyncDisposable
///
/// The trax.snapshot_draft table: one row per user's state-machine draft or system-owned instance,
- /// written by Trax.Effect.StateMachine.Persistence. Filter by OwnerKind and UserKey when querying
+ /// written by Trax.StateMachine.Persistence. Filter by OwnerKind and UserKey when querying
/// directly, because the draft id alone is unique neither across users nor between a user and the system.
///
///
@@ -175,7 +175,7 @@ public interface IDataContext : IEffectProvider, IAsyncDisposable
///
/// The trax.effect_claim table: one row per exactly-once effect intent, written by
- /// Trax.Effect.StateMachine.Persistence. A row with a null receipt is in flight; one with a receipt has run.
+ /// Trax.StateMachine.Persistence. A row with a null receipt is in flight; one with a receipt has run.
///
///
/// declares this set. The default here keeps an implementation written
@@ -208,7 +208,7 @@ public interface IDataContext : IEffectProvider, IAsyncDisposable
///
/// The trax.snapshot_transition table: a state-machine instance's history, one row for every snapshot
- /// Trax.Effect.StateMachine.Persistence writes, with the revision, command, kind, actor and states of that write.
+ /// Trax.StateMachine.Persistence writes, with the revision, command, kind, actor and states of that write.
/// Deleted with the instance's row.
///
///
diff --git a/Trax.Effect/src/Trax.Effect.Data/Services/InvokedRunListener/IInvokedRunListener.cs b/Trax.Effect/src/Trax.Effect.Data/Services/InvokedRunListener/IInvokedRunListener.cs
index b271e4f91..4f8e90b74 100644
--- a/Trax.Effect/src/Trax.Effect.Data/Services/InvokedRunListener/IInvokedRunListener.cs
+++ b/Trax.Effect/src/Trax.Effect.Data/Services/InvokedRunListener/IInvokedRunListener.cs
@@ -14,7 +14,7 @@ namespace Trax.Effect.Data.Services.InvokedRunListener;
/// SQLite and InMemory register none: on them the run's own host applies the outcome through its lifecycle hook,
/// and the sweep covers the rest.
///
-/// Infrastructure for Trax.Effect.StateMachine.Persistence, which alone sees it; a host does not
+/// Infrastructure for Trax.StateMachine.Persistence, which alone sees it; a host does not
/// implement or call it.
///
internal interface IInvokedRunListener
diff --git a/Trax.Effect/src/Trax.Effect.Data/Services/SnapshotNotices/ISnapshotNoticeSource.cs b/Trax.Effect/src/Trax.Effect.Data/Services/SnapshotNotices/ISnapshotNoticeSource.cs
index c90f02651..2b5676dcb 100644
--- a/Trax.Effect/src/Trax.Effect.Data/Services/SnapshotNotices/ISnapshotNoticeSource.cs
+++ b/Trax.Effect/src/Trax.Effect.Data/Services/SnapshotNotices/ISnapshotNoticeSource.cs
@@ -10,7 +10,7 @@ namespace Trax.Effect.Data.Services.SnapshotNotices;
/// (migration 080). SQLite and InMemory register none,
/// and the state-machine change listener polls the table instead.
///
-/// Infrastructure for Trax.Effect.StateMachine.Persistence, whose change listener holds the host's one
+/// Infrastructure for Trax.StateMachine.Persistence, whose change listener holds the host's one
/// subscription; a host does not implement or call it.
///
internal interface ISnapshotNoticeSource
diff --git a/Trax.Effect/src/Trax.Effect.Data/Trax.Effect.Data.csproj b/Trax.Effect/src/Trax.Effect.Data/Trax.Effect.Data.csproj
index 500b45b67..d963ce4c7 100644
--- a/Trax.Effect/src/Trax.Effect.Data/Trax.Effect.Data.csproj
+++ b/Trax.Effect/src/Trax.Effect.Data/Trax.Effect.Data.csproj
@@ -30,7 +30,7 @@
-
+
@@ -40,6 +40,6 @@
-
+
diff --git a/Trax.Effect/src/Trax.Effect/Models/EffectClaim/EffectClaim.cs b/Trax.Effect/src/Trax.Effect/Models/EffectClaim/EffectClaim.cs
index e8c924a0a..b4ab5c782 100644
--- a/Trax.Effect/src/Trax.Effect/Models/EffectClaim/EffectClaim.cs
+++ b/Trax.Effect/src/Trax.Effect/Models/EffectClaim/EffectClaim.cs
@@ -9,7 +9,7 @@ namespace Trax.Effect.Models.EffectClaim;
///
///
/// EF Core mapping lives in Trax.Effect.Data.Models.EffectClaim.PersistentEffectClaim (in
-/// Trax.Effect.Data). The table ships in the core migration set, and Trax.Effect.StateMachine.Persistence reaches
+/// Trax.Effect.Data). The table ships in the core migration set, and Trax.StateMachine.Persistence reaches
/// it through IDataContext.EffectClaims rather than through a context or SQL of its own.
///
public class EffectClaim
diff --git a/Trax.Effect/src/Trax.Effect/Models/SnapshotDraft/SnapshotDraft.cs b/Trax.Effect/src/Trax.Effect/Models/SnapshotDraft/SnapshotDraft.cs
index 699c2867e..86aa59da1 100644
--- a/Trax.Effect/src/Trax.Effect/Models/SnapshotDraft/SnapshotDraft.cs
+++ b/Trax.Effect/src/Trax.Effect/Models/SnapshotDraft/SnapshotDraft.cs
@@ -10,7 +10,7 @@ namespace Trax.Effect.Models.SnapshotDraft;
///
///
/// EF Core mapping lives in Trax.Effect.Data.Models.SnapshotDraft.PersistentSnapshotDraft (in
-/// Trax.Effect.Data). The table ships in the core migration set, and Trax.Effect.StateMachine.Persistence reaches
+/// Trax.Effect.Data). The table ships in the core migration set, and Trax.StateMachine.Persistence reaches
/// it through IDataContext.SnapshotDrafts rather than through a context or SQL of its own.
///
/// Identity names the owner kind. A user's draft is unique by (user_key, machine, id): its
diff --git a/Trax.Effect/src/Trax.Effect/Models/SnapshotTransition/SnapshotTransition.cs b/Trax.Effect/src/Trax.Effect/Models/SnapshotTransition/SnapshotTransition.cs
index dffda0e5a..003f3e9f8 100644
--- a/Trax.Effect/src/Trax.Effect/Models/SnapshotTransition/SnapshotTransition.cs
+++ b/Trax.Effect/src/Trax.Effect/Models/SnapshotTransition/SnapshotTransition.cs
@@ -7,7 +7,7 @@ namespace Trax.Effect.Models.SnapshotTransition;
/// Base model for trax.snapshot_transition: one write of a state-machine instance's snapshot, in its history.
///
///
-/// Trax.Effect.StateMachine.Persistence's store writes one row for every snapshot it writes, in the same
+/// Trax.StateMachine.Persistence's store writes one row for every snapshot it writes, in the same
/// transaction, with the revision that write gave the instance: its creation, every command, save, timer and outcome.
/// A write that leaves the snapshot alone (marking a pending effect, setting a run's token, keeping a draft active)
/// writes none, and neither does a writer that goes around the store, so revisions can skip.
diff --git a/Trax.Effect/src/Trax.Effect/Trax.Effect.csproj b/Trax.Effect/src/Trax.Effect/Trax.Effect.csproj
index c9c062859..f91e70455 100644
--- a/Trax.Effect/src/Trax.Effect/Trax.Effect.csproj
+++ b/Trax.Effect/src/Trax.Effect/Trax.Effect.csproj
@@ -20,7 +20,7 @@
-
+
-
+
-
+
diff --git a/Trax.Effect/tests/Trax.Effect.Tests.Data.Sqlite.Integration/IntegrationTests/SqliteEveryTableIsModelledTests.cs b/Trax.Effect/tests/Trax.Effect.Tests.Data.Sqlite.Integration/IntegrationTests/SqliteEveryTableIsModelledTests.cs
index 484260c63..e1a6f00ac 100644
--- a/Trax.Effect/tests/Trax.Effect.Tests.Data.Sqlite.Integration/IntegrationTests/SqliteEveryTableIsModelledTests.cs
+++ b/Trax.Effect/tests/Trax.Effect.Tests.Data.Sqlite.Integration/IntegrationTests/SqliteEveryTableIsModelledTests.cs
@@ -196,7 +196,7 @@ public async Task State_machine_tables_are_mapped_column_for_column(string table
.Should()
.ContainKey(
table,
- $"Trax.Effect.StateMachine.Persistence reaches {table} through IDataContext. See {Adr}."
+ $"Trax.StateMachine.Persistence reaches {table} through IDataContext. See {Adr}."
);
mapped[table]
.Should()
diff --git a/Trax.Effect/tests/Trax.Effect.Tests.Integration/IntegrationTests/EveryTableIsModelledTests.cs b/Trax.Effect/tests/Trax.Effect.Tests.Integration/IntegrationTests/EveryTableIsModelledTests.cs
index e04555fb5..0cda14eef 100644
--- a/Trax.Effect/tests/Trax.Effect.Tests.Integration/IntegrationTests/EveryTableIsModelledTests.cs
+++ b/Trax.Effect/tests/Trax.Effect.Tests.Integration/IntegrationTests/EveryTableIsModelledTests.cs
@@ -195,7 +195,7 @@ public async Task State_machine_tables_are_mapped_column_for_column(string table
.Should()
.ContainKey(
table,
- $"Trax.Effect.StateMachine.Persistence reaches {table} through IDataContext. See {Adr}."
+ $"Trax.StateMachine.Persistence reaches {table} through IDataContext. See {Adr}."
);
mapped[table]
.Should()
diff --git a/Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.Effect.StateMachine.Persistence.received.txt b/Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.Effect.StateMachine.Persistence.received.txt
deleted file mode 100644
index 5a89255e5..000000000
--- a/Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.Effect.StateMachine.Persistence.received.txt
+++ /dev/null
@@ -1,601 +0,0 @@
-namespace Trax.Effect.StateMachine.Persistence
-{
- public abstract class Actor : System.IEquatable
- {
- public sealed class Client : Trax.Effect.StateMachine.Persistence.Actor, System.IEquatable
- {
- public Client(string userKey, params string[] roles) { }
- public Client(string UserKey, System.Func IsInRole, System.Func> SatisfiesPolicy) { }
- public System.Func IsInRole { get; init; }
- public System.Func> SatisfiesPolicy { get; init; }
- public string UserKey { get; init; }
- }
- }
- public abstract class AdvanceOutcome : System.IEquatable
- {
- public sealed class Advanced : Trax.Effect.StateMachine.Persistence.AdvanceOutcome, System.IEquatable
- {
- public Advanced(Trax.Effect.StateMachine.Snapshot Snapshot) { }
- public System.DateTimeOffset? DueAt { get; init; }
- public bool DueAtKnown { get; init; }
- public long? Revision { get; init; }
- public long? RowId { get; init; }
- public Trax.Effect.StateMachine.Snapshot Snapshot { get; init; }
- }
- public sealed class Conflict : Trax.Effect.StateMachine.Persistence.AdvanceOutcome, System.IEquatable
- {
- public Conflict() { }
- }
- public sealed class LoadError : Trax.Effect.StateMachine.Persistence.AdvanceOutcome, System.IEquatable
- {
- public LoadError(Trax.Effect.StateMachine.RefusalCode Code, string Message) { }
- public Trax.Effect.StateMachine.RefusalCode Code { get; init; }
- public string Message { get; init; }
- }
- public sealed class NotFound : Trax.Effect.StateMachine.Persistence.AdvanceOutcome, System.IEquatable
- {
- public NotFound() { }
- }
- public sealed class Rejected : Trax.Effect.StateMachine.Persistence.AdvanceOutcome, System.IEquatable
- {
- public Rejected(Trax.Effect.StateMachine.RefusalCode Reason, string? Detail) { }
- public string? Detail { get; init; }
- public Trax.Effect.StateMachine.RefusalCode Reason { get; init; }
- }
- }
- public sealed class AppliedRequest : System.IEquatable
- {
- public AppliedRequest(string RequestId, string? Trigger, string? FromState) { }
- public string? FromState { get; init; }
- public string RequestId { get; init; }
- public string? Trigger { get; init; }
- }
- public abstract class AutosaveResult : System.IEquatable
- {
- public sealed class Conflict : Trax.Effect.StateMachine.Persistence.AutosaveResult, System.IEquatable
- {
- public Conflict() { }
- }
- public sealed class Rejected : Trax.Effect.StateMachine.Persistence.AutosaveResult, System.IEquatable
- {
- public Rejected(Trax.Effect.StateMachine.RefusalCode Code, string Message) { }
- public Trax.Effect.StateMachine.RefusalCode Code { get; init; }
- public string Message { get; init; }
- }
- public sealed class Saved : Trax.Effect.StateMachine.Persistence.AutosaveResult, System.IEquatable
- {
- public Saved(Trax.Effect.StateMachine.Snapshot Snapshot) { }
- public System.DateTimeOffset? DueAt { get; init; }
- public long? Revision { get; init; }
- public long? RowId { get; init; }
- public Trax.Effect.StateMachine.Snapshot Snapshot { get; init; }
- }
- }
- public abstract class ClaimResult : System.IEquatable
- {
- public sealed class Lost : Trax.Effect.StateMachine.Persistence.ClaimResult, System.IEquatable
- {
- public Lost() { }
- }
- public sealed class Won : Trax.Effect.StateMachine.Persistence.ClaimResult, System.IEquatable
- {
- public Won(System.Guid OwnerToken) { }
- public System.Guid OwnerToken { get; init; }
- }
- }
- public sealed class CompletedEffect : System.IEquatable
- {
- public CompletedEffect(string Receipt, string? ContentFingerprint) { }
- public string? ContentFingerprint { get; init; }
- public string Receipt { get; init; }
- }
- public abstract class DiscardOutcome : System.IEquatable
- {
- public sealed class Discarded : Trax.Effect.StateMachine.Persistence.DiscardOutcome, System.IEquatable
- {
- public Discarded() { }
- }
- public sealed class Rejected : Trax.Effect.StateMachine.Persistence.DiscardOutcome, System.IEquatable
- {
- public Rejected(Trax.Effect.StateMachine.RefusalCode Code, string Message) { }
- public Trax.Effect.StateMachine.RefusalCode Code { get; init; }
- public string Message { get; init; }
- }
- }
- public sealed class EfEffectClaimStore : Trax.Effect.StateMachine.Persistence.IEffectClaimStore
- {
- public EfEffectClaimStore(Trax.Effect.Data.Services.DataContext.IDataContext db, Trax.Effect.Data.Services.SqlDialect.ISqlDialect? dialect = null) { }
- public System.Threading.Tasks.Task Complete(string effectKey, System.Guid ownerToken, string receipt, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task GetCompleted(string effectKey, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task GetReceipt(string effectKey, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task ReclaimStale(System.DateTimeOffset cutoff, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task Release(string effectKey, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task ReleaseForReset(string effectKey, System.Func receiptRecorded, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task ReleaseOwned(string effectKey, System.Guid ownerToken, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task TryClaim(string effectKey, System.TimeSpan lease, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task TryClaim(string effectKey, System.TimeSpan lease, string? contentFingerprint, System.Threading.CancellationToken cancellationToken = default) { }
- }
- public sealed class EfSnapshotStore : Trax.Effect.StateMachine.Persistence.ISnapshotStore
- {
- public EfSnapshotStore(Trax.Effect.Data.Services.DataContext.IDataContext db, Trax.Effect.Data.Services.SqlDialect.ISqlDialect? dialect = null) { }
- public System.Threading.Tasks.Task Delete(string userKey, System.Guid id, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task Delete(string userKey, string machine, System.Guid id, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task Get(string userKey, System.Guid id, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task Get(string userKey, string machine, System.Guid id, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task Insert(string userKey, System.Guid id, Trax.Effect.StateMachine.Snapshot snapshot, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task Update(string userKey, System.Guid id, Trax.Effect.StateMachine.Snapshot snapshot, System.Guid expectedToken, string? requestId = null, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task UpdateWithRequest(string userKey, System.Guid id, Trax.Effect.StateMachine.Snapshot snapshot, System.Guid expectedToken, Trax.Effect.StateMachine.Persistence.AppliedRequest? request, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task Upsert(string userKey, System.Guid id, Trax.Effect.StateMachine.Snapshot snapshot, System.Threading.CancellationToken cancellationToken = default) { }
- }
- public sealed class EffectClaimSweeper
- {
- public EffectClaimSweeper(Trax.Effect.StateMachine.Persistence.IEffectClaimStore claims) { }
- public System.Threading.Tasks.Task Sweep(System.DateTimeOffset cutoff, System.Threading.CancellationToken cancellationToken = default) { }
- }
- public abstract class EffectOutcome : System.IEquatable
- {
- public sealed class AlreadyRan : Trax.Effect.StateMachine.Persistence.EffectOutcome, System.IEquatable
- {
- public AlreadyRan(string Receipt) { }
- public string? ContentFingerprint { get; init; }
- public string Receipt { get; init; }
- }
- public sealed class InProgress : Trax.Effect.StateMachine.Persistence.EffectOutcome, System.IEquatable
- {
- public InProgress() { }
- }
- public sealed class Ran : Trax.Effect.StateMachine.Persistence.EffectOutcome, System.IEquatable
- {
- public Ran(string Receipt) { }
- public string Receipt { get; init; }
- }
- }
- public sealed class GenericStateMachineMutationOptions
- {
- public GenericStateMachineMutationOptions() { }
- public string? Policy { get; set; }
- }
- public interface ICallerAuthorization
- {
- bool IsInRole(string role);
- System.Threading.Tasks.Task IsPolicyRegistered(string policy);
- System.Threading.Tasks.Task SatisfiesPolicy(string policy, System.Threading.CancellationToken cancellationToken = default);
- }
- public interface IEffectClaimStore
- {
- System.Threading.Tasks.Task Complete(string effectKey, System.Guid ownerToken, string receipt, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task GetCompleted(string effectKey, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task GetReceipt(string effectKey, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task ReclaimStale(System.DateTimeOffset cutoff, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Release(string effectKey, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task ReleaseForReset(string effectKey, System.Func receiptRecorded, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task ReleaseOwned(string effectKey, System.Guid ownerToken, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task TryClaim(string effectKey, System.TimeSpan lease, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task TryClaim(string effectKey, System.TimeSpan lease, string? contentFingerprint, System.Threading.CancellationToken cancellationToken = default);
- }
- public interface IMachine
- {
- string? Corpus { get; }
- bool HasEffect { get; }
- string Name { get; }
- string? SchemaHash { get; }
- System.Type? StartInputType { get; }
- System.Collections.Generic.IReadOnlyList States { get; }
- System.Collections.Generic.IReadOnlyList Triggers { get; }
- Trax.Effect.StateMachine.Persistence.ISnapshotEffectRunner? CreateEffectRunner(Trax.Effect.StateMachine.Persistence.ISnapshotDraftService service, Trax.Effect.StateMachine.Persistence.IdempotentEffect idempotent, System.IServiceProvider services);
- Trax.Effect.StateMachine.Persistence.ISnapshotDraftService CreateService(Trax.Effect.StateMachine.Persistence.ISnapshotStore store, Trax.Effect.StateMachine.Persistence.IEffectClaimStore? claims, System.TimeSpan? draftTtl = default);
- string ExportIr();
- System.Collections.Generic.IReadOnlyList SelfCheck();
- }
- public interface IMachineInstances
- {
- System.Threading.Tasks.Task Advance(System.Guid id, string trigger, System.Text.Json.Nodes.JsonNode? input = null, System.Threading.CancellationToken cancellationToken = default)
- where TMachine : Trax.Effect.StateMachine.Persistence.IMachine;
- System.Threading.Tasks.Task Advance(Trax.Effect.StateMachine.Persistence.MachineKey key, string trigger, System.Text.Json.Nodes.JsonNode? input = null, System.Threading.CancellationToken cancellationToken = default)
- where TMachine : Trax.Effect.StateMachine.Persistence.IMachine;
- System.Threading.Tasks.Task Start(Trax.Effect.StateMachine.Persistence.MachineKey key, System.Text.Json.Nodes.JsonObject? context = null, System.Threading.CancellationToken cancellationToken = default)
- where TMachine : Trax.Effect.StateMachine.Persistence.IMachine;
- }
- public interface ISnapshotDraftService
- {
- System.Threading.Tasks.Task Advance(Trax.Effect.StateMachine.Persistence.Actor actor, System.Guid id, string trigger, System.Text.Json.Nodes.JsonNode? input = null, string? requestId = null, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Advance(string userKey, System.Guid id, string trigger, System.Text.Json.Nodes.JsonNode? input = null, string? requestId = null, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Advance(Trax.Effect.StateMachine.Persistence.Actor actor, System.Guid id, string trigger, System.Text.Json.Nodes.JsonNode? input, string? requestId, string? clientResult, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Advance(string userKey, System.Guid id, string trigger, System.Text.Json.Nodes.JsonNode? input, string? requestId, string? clientResult, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Autosave(string userKey, System.Guid id, string snapshotJson, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Discard(Trax.Effect.StateMachine.Persistence.Actor actor, System.Guid id, string requestId, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Load(Trax.Effect.StateMachine.Persistence.Actor actor, System.Guid id, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Load(string userKey, System.Guid id, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Send(Trax.Effect.StateMachine.Persistence.Actor actor, System.Guid id, string requestId, System.Threading.CancellationToken cancellationToken = default);
- string Serialize(Trax.Effect.StateMachine.Snapshot snapshot);
- System.Threading.Tasks.Task Start(Trax.Effect.StateMachine.Persistence.Actor actor, System.Text.Json.Nodes.JsonObject? input, string requestId, System.Threading.CancellationToken cancellationToken = default);
- }
- public interface ISnapshotEffect
- {
- System.Threading.Tasks.Task Run(Trax.Effect.StateMachine.Snapshot snapshot, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Run(Trax.Effect.StateMachine.Snapshot snapshot, string effectKey, System.Threading.CancellationToken cancellationToken);
- }
- public interface ISnapshotEffectRunner
- {
- System.Threading.Tasks.Task Run(string userKey, System.Guid id, string requestId, System.Threading.CancellationToken cancellationToken = default);
- }
- public interface ISnapshotMachineRegistry
- {
- Trax.Effect.StateMachine.Persistence.ISnapshotEffectRunner? EffectRunner(string machine);
- string? SchemaHash(string machine);
- Trax.Effect.StateMachine.Persistence.ISnapshotDraftService? Service(string machine);
- }
- public interface ISnapshotPrincipal
- {
- string? CurrentUserKey { get; }
- }
- public interface ISnapshotStore
- {
- System.Threading.Tasks.Task Delete(string userKey, System.Guid id, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Delete(string userKey, string machine, System.Guid id, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Get(string userKey, System.Guid id, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Get(string userKey, string machine, System.Guid id, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Insert(string userKey, System.Guid id, Trax.Effect.StateMachine.Snapshot snapshot, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Update(string userKey, System.Guid id, Trax.Effect.StateMachine.Snapshot snapshot, System.Guid expectedToken, string? requestId = null, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task UpdateWithRequest(string userKey, System.Guid id, Trax.Effect.StateMachine.Snapshot snapshot, System.Guid expectedToken, Trax.Effect.StateMachine.Persistence.AppliedRequest? request, System.Threading.CancellationToken cancellationToken = default);
- System.Threading.Tasks.Task Upsert(string userKey, System.Guid id, Trax.Effect.StateMachine.Snapshot snapshot, System.Threading.CancellationToken cancellationToken = default);
- }
- public sealed class IdempotentEffect
- {
- public IdempotentEffect(Trax.Effect.StateMachine.Persistence.IEffectClaimStore claims) { }
- public System.Threading.Tasks.Task RunOnce(string effectKey, System.Func> effect, System.TimeSpan? lease = default, System.Threading.CancellationToken cancellationToken = default) { }
- public System.Threading.Tasks.Task RunOnce(string effectKey, string? contentFingerprint, System.Func> effect, System.TimeSpan? lease = default, System.Threading.CancellationToken cancellationToken = default) { }
- }
- public sealed class InvokedRun : System.IEquatable
- {
- public InvokedRun(string Machine, System.Guid InstanceId, Trax.Effect.Enums.SnapshotOwnerKind OwnerKind, string? UserKey) { }
- public System.Guid InstanceId { get; init; }
- public string Machine { get; init; }
- public Trax.Effect.Enums.SnapshotOwnerKind OwnerKind { get; init; }
- public string? UserKey { get; init; }
- }
- public abstract class LoadResult : System.IEquatable
- {
- public sealed class Invalid : Trax.Effect.StateMachine.Persistence.LoadResult, System.IEquatable
- {
- public Invalid(Trax.Effect.StateMachine.RefusalCode Code, string Message) { }
- public Trax.Effect.StateMachine.RefusalCode Code { get; init; }
- public string Message { get; init; }
- }
- public sealed class Loaded : Trax.Effect.StateMachine.Persistence.LoadResult, System.IEquatable
- {
- public Loaded(Trax.Effect.StateMachine.Snapshot Snapshot) { }
- public System.DateTimeOffset? DueAt { get; init; }
- public long? Revision { get; init; }
- public long? RowId { get; init; }
- public Trax.Effect.StateMachine.Snapshot Snapshot { get; init; }
- }
- public sealed class NotFound : Trax.Effect.StateMachine.Persistence.LoadResult, System.IEquatable
- {
- public NotFound() { }
- }
- }
- public static class MachineCensus
- {
- public const string Undeclared = "undeclared";
- public static System.Collections.Generic.IReadOnlyList Describe(System.Collections.Generic.IEnumerable machines) { }
- }
- public sealed class MachineCensusEntry : System.IEquatable
- {
- public MachineCensusEntry(string Machine, string Name, string Kind, string Rule, System.Collections.Generic.IReadOnlyList Surfaces) { }
- public string Kind { get; init; }
- public string Machine { get; init; }
- public string Name { get; init; }
- public string Rule { get; init; }
- public System.Collections.Generic.IReadOnlyList Surfaces { get; init; }
- }
- public sealed class MachineInstance : System.IEquatable
- {
- public MachineInstance(System.Guid Id, string Machine, string State, bool Created) { }
- public bool Created { get; init; }
- public System.Guid Id { get; init; }
- public string Machine { get; init; }
- public string State { get; init; }
- }
- public static class MachineInstanceId
- {
- public static readonly System.Guid Root;
- public static System.Guid For(string machine, Trax.Effect.StateMachine.Persistence.MachineKey key) { }
- public static System.Guid Namespace(string machine) { }
- }
- public sealed class MachineKey : System.IEquatable
- {
- public System.Collections.Generic.IReadOnlyList Parts { get; }
- public bool Equals(Trax.Effect.StateMachine.Persistence.MachineKey? other) { }
- public override bool Equals(object? obj) { }
- public override int GetHashCode() { }
- public override string ToString() { }
- public static Trax.Effect.StateMachine.Persistence.MachineKey Of(params string[] parts) { }
- public static Trax.Effect.StateMachine.Persistence.MachineKey op_Implicit(string part) { }
- }
- public abstract class Machine : Trax.Effect.StateMachine.Persistence.IMachine
- where TState : struct, System.Enum
- where TTrigger : struct, System.Enum
- {
- protected Machine() { }
- public virtual string? Corpus { get; }
- public bool HasEffect { get; }
- public string Name { get; }
- public string? SchemaHash { get; }
- public System.Type? StartInputType { get; }
- public System.Collections.Generic.IReadOnlyList States { get; }
- public System.Collections.Generic.IReadOnlyList Triggers { get; }
- protected abstract void Configure(Trax.Effect.StateMachine.IMachineBuilder machine);
- public Trax.Effect.StateMachine.Persistence.ISnapshotEffectRunner? CreateEffectRunner(Trax.Effect.StateMachine.Persistence.ISnapshotDraftService service, Trax.Effect.StateMachine.Persistence.IdempotentEffect idempotent, System.IServiceProvider services) { }
- public Trax.Effect.StateMachine.Persistence.ISnapshotDraftService CreateService(Trax.Effect.StateMachine.Persistence.ISnapshotStore store, Trax.Effect.StateMachine.Persistence.IEffectClaimStore? claims, System.TimeSpan? draftTtl = default) { }
- public string ExportIr() { }
- public System.Collections.Generic.IReadOnlyList SelfCheck() { }
- }
- public sealed class RecordedRequest : System.IEquatable
- {
- public RecordedRequest(string RequestId, string Fingerprint, long Revision, string ResultSnapshot) { }
- public string Fingerprint { get; init; }
- public string? FromState { get; init; }
- public string RequestId { get; init; }
- public string ResultSnapshot { get; init; }
- public long Revision { get; init; }
- public string? Trigger { get; init; }
- }
- public static class RequestIdRing
- {
- public const int Capacity = 16;
- public const int MaxBytes = 131072;
- public const int MaxRequestIdLength = 200;
- }
- public static class SnapshotFingerprint
- {
- public static string Of(string canonicalWire) { }
- }
- public static class SnapshotLimits
- {
- public const int MaxSnapshotBytes = 65536;
- public static readonly System.TimeSpan DefaultEffectLease;
- }
- public sealed class SnapshotProblem : System.IEquatable
- {
- public SnapshotProblem() { }
- public required Trax.Effect.StateMachine.RefusalCode Code { get; init; }
- public required string Message { get; init; }
- }
- public static class SnapshotSelfCheck
- {
- public static System.Collections.Generic.IReadOnlyList Run(System.Collections.Generic.IEnumerable machines) { }
- }
- public abstract class StartOutcome : System.IEquatable
- {
- public sealed class Rejected : Trax.Effect.StateMachine.Persistence.StartOutcome, System.IEquatable
- {
- public Rejected(Trax.Effect.StateMachine.RefusalCode Code, string Message) { }
- public Trax.Effect.StateMachine.RefusalCode Code { get; init; }
- public string Message { get; init; }
- }
- public sealed class Started : Trax.Effect.StateMachine.Persistence.StartOutcome, System.IEquatable
- {
- public Started(System.Guid Id, Trax.Effect.StateMachine.Snapshot Snapshot, long Revision, bool Created) { }
- public bool Created { get; init; }
- public System.DateTimeOffset? DueAt { get; init; }
- public System.Guid Id { get; init; }
- public long Revision { get; init; }
- public Trax.Effect.StateMachine.Snapshot Snapshot { get; init; }
- }
- }
- public enum StateMachineChangeFeed
- {
- Notify = 0,
- Poll = 1,
- }
- public static class StateMachineHealthCheckExtensions
- {
- public static Microsoft.Extensions.DependencyInjection.IHealthChecksBuilder AddTraxStateMachineSelfCheck(this Microsoft.Extensions.DependencyInjection.IHealthChecksBuilder builder, string name = "state-machines") { }
- }
- public static class StateMachineInstruments
- {
- public const string ClientDivergence = "trax.machine.client_divergence";
- public const string EffectsAbandoned = "trax.machine.effect.abandoned";
- public const string MeterName = "Trax.StateMachine";
- public const string NotificationQueueUsage = "trax.machine.snapshot_notice.queue_usage";
- public const string SnapshotNoticeMalformed = "trax.machine.snapshot_notice.malformed";
- public const string TimerFireErrors = "trax.machine.timer.fire_errors";
- public const string TimerFireFailed = "trax.machine.timer.fire_failed";
- }
- public sealed class StateMachineOptions
- {
- public const int DefaultMaxDraftsPerUser = 50;
- public static readonly System.TimeSpan DefaultDraftTtl;
- public static readonly System.TimeSpan DefaultMaxDraftLifetime;
- public static readonly System.TimeSpan MinimumChangeFeedPollInterval;
- public StateMachineOptions() { }
- public Trax.Effect.StateMachine.Persistence.StateMachineChangeFeed ChangeFeed { get; set; }
- public System.TimeSpan ChangeFeedPollInterval { get; set; }
- public System.TimeSpan? DraftTtl { get; set; }
- public System.TimeSpan InvokeOutcomeSweepInterval { get; set; }
- public System.TimeSpan InvokeOutcomeSweepIntervalWhileListening { get; set; }
- public System.TimeSpan? MaxDraftLifetime { get; set; }
- public int? MaxDraftsPerUser { get; set; }
- public Trax.Effect.StateMachine.Persistence.StateMachineOptions ExposeGenericStateMachineMutations(System.Action configure) { }
- }
- public static class StateMachinesBuilderExtensions
- {
- public static Trax.Effect.Configuration.TraxBuilder.TraxBuilderWithEffects AddStateMachines(this Trax.Effect.Configuration.TraxBuilder.TraxBuilderWithEffects builder, params System.Reflection.Assembly[] assemblies) { }
- public static Trax.Effect.Configuration.TraxBuilder.TraxBuilderWithEffects AddStateMachines(this Trax.Effect.Configuration.TraxBuilder.TraxBuilderWithEffects builder, System.Action? configure, params System.Reflection.Assembly[] assemblies) { }
- }
- public sealed class StoredSnapshot : System.IEquatable
- {
- public StoredSnapshot(string Json, System.Guid Token, string? LastRequestId, System.DateTimeOffset UpdatedAt) { }
- public System.DateTimeOffset? DueAt { get; init; }
- public string? InvokeToken { get; init; }
- public string Json { get; init; }
- public Trax.Effect.StateMachine.Persistence.AppliedRequest? LastRequest { get; }
- public string? LastRequestFromState { get; init; }
- public string? LastRequestId { get; init; }
- public string? LastRequestTrigger { get; init; }
- public System.Collections.Generic.IReadOnlyList? RecentRequests { get; init; }
- public long? Revision { get; init; }
- public long? RowId { get; init; }
- public System.Guid Token { get; init; }
- public System.DateTimeOffset UpdatedAt { get; init; }
- }
-}
-namespace Trax.Effect.StateMachine.Persistence.Mutations
-{
- [Trax.Effect.Attributes.TraxAuthorize]
- public class AdvanceSnapshot : Trax.Effect.Services.ServiceTrain.ServiceTrain, System.IDisposable, Trax.Core.Route.IRoute, Trax.Effect.Services.ServiceTrain.IServiceTrain, Trax.Effect.StateMachine.Persistence.Mutations.IAdvanceSnapshot
- {
- public AdvanceSnapshot() { }
- protected override System.Threading.Tasks.Task> Junctions() { }
- }
- public class AdvanceSnapshotInput : System.IEquatable
- {
- public AdvanceSnapshotInput() { }
- [Trax.Effect.Attributes.TraxSensitive]
- public string? ClientResult { get; init; }
- public required System.Guid Id { get; init; }
- public string? Input { get; init; }
- public required string Machine { get; init; }
- public string? RequestId { get; init; }
- public string? SchemaHash { get; init; }
- [Trax.Effect.Attributes.TraxSensitive]
- public string? SensitiveInput { get; init; }
- public required string Trigger { get; init; }
- }
- public class AdvanceSnapshotOutput : System.IEquatable
- {
- public AdvanceSnapshotOutput() { }
- public System.DateTimeOffset? DueAt { get; init; }
- public bool DueAtKnown { get; init; }
- public Trax.Effect.StateMachine.Persistence.SnapshotProblem? Problem { get; init; }
- public long? Revision { get; init; }
- public long? RowId { get; init; }
- public string? Snapshot { get; init; }
- }
- [Trax.Effect.Attributes.TraxAuthorize]
- public class DiscardSnapshot : Trax.Effect.Services.ServiceTrain.ServiceTrain, System.IDisposable, Trax.Core.Route.IRoute, Trax.Effect.Services.ServiceTrain.IServiceTrain, Trax.Effect.StateMachine.Persistence.Mutations.IDiscardSnapshot
- {
- public DiscardSnapshot() { }
- protected override System.Threading.Tasks.Task> Junctions() { }
- }
- public class DiscardSnapshotInput : System.IEquatable
- {
- public DiscardSnapshotInput() { }
- public required System.Guid Id { get; init; }
- public required string Machine { get; init; }
- public required string RequestId { get; init; }
- }
- public class DiscardSnapshotOutput : System.IEquatable
- {
- public DiscardSnapshotOutput() { }
- public bool Discarded { get; init; }
- public Trax.Effect.StateMachine.Persistence.SnapshotProblem? Problem { get; init; }
- }
- public interface IAdvanceSnapshot : System.IDisposable, Trax.Core.Route.IRoute, Trax.Effect.Services.ServiceTrain.IServiceTrain { }
- public interface IDiscardSnapshot : System.IDisposable, Trax.Core.Route.IRoute, Trax.Effect.Services.ServiceTrain.IServiceTrain { }
- public interface ILoadSnapshot : System.IDisposable, Trax.Core.Route.IRoute, Trax.Effect.Services.ServiceTrain.IServiceTrain { }
- public interface ISaveSnapshot : System.IDisposable, Trax.Core.Route.IRoute, Trax.Effect.Services.ServiceTrain.IServiceTrain { }
- public interface ISendSnapshot : System.IDisposable, Trax.Core.Route.IRoute, Trax.Effect.Services.ServiceTrain.IServiceTrain { }
- public interface IStartSnapshot : System.IDisposable, Trax.Core.Route.IRoute, Trax.Effect.Services.ServiceTrain.IServiceTrain { }
- [Trax.Effect.Attributes.TraxAuthorize]
- public class LoadSnapshot : Trax.Effect.Services.ServiceTrain.ServiceTrain, System.IDisposable, Trax.Core.Route.IRoute, Trax.Effect.Services.ServiceTrain.IServiceTrain, Trax.Effect.StateMachine.Persistence.Mutations.ILoadSnapshot
- {
- public LoadSnapshot() { }
- protected override System.Threading.Tasks.Task> Junctions() { }
- }
- public class LoadSnapshotInput : System.IEquatable
- {
- public LoadSnapshotInput() { }
- public required System.Guid Id { get; init; }
- public required string Machine { get; init; }
- public string? SchemaHash { get; init; }
- }
- public class LoadSnapshotOutput : System.IEquatable
- {
- public LoadSnapshotOutput() { }
- public System.DateTimeOffset? DueAt { get; init; }
- public Trax.Effect.StateMachine.Persistence.SnapshotProblem? Problem { get; init; }
- public long? Revision { get; init; }
- public long? RowId { get; init; }
- public string? Snapshot { get; init; }
- }
- [Trax.Effect.Attributes.TraxAuthorize]
- public class SaveSnapshot : Trax.Effect.Services.ServiceTrain.ServiceTrain, System.IDisposable, Trax.Core.Route.IRoute, Trax.Effect.Services.ServiceTrain.IServiceTrain, Trax.Effect.StateMachine.Persistence.Mutations.ISaveSnapshot
- {
- public SaveSnapshot() { }
- protected override System.Threading.Tasks.Task> Junctions() { }
- }
- public class SaveSnapshotInput : System.IEquatable
- {
- public SaveSnapshotInput() { }
- public required System.Guid Id { get; init; }
- public required string Machine { get; init; }
- public string? SchemaHash { get; init; }
- [Trax.Effect.Attributes.TraxSensitive]
- public required string Snapshot { get; init; }
- }
- public class SaveSnapshotOutput : System.IEquatable
- {
- public SaveSnapshotOutput() { }
- public System.DateTimeOffset? DueAt { get; init; }
- public Trax.Effect.StateMachine.Persistence.SnapshotProblem? Problem { get; init; }
- public long? Revision { get; init; }
- public long? RowId { get; init; }
- public string? Snapshot { get; init; }
- }
- [Trax.Effect.Attributes.TraxAuthorize]
- public class SendSnapshot : Trax.Effect.Services.ServiceTrain.ServiceTrain, System.IDisposable, Trax.Core.Route.IRoute, Trax.Effect.Services.ServiceTrain.IServiceTrain, Trax.Effect.StateMachine.Persistence.Mutations.ISendSnapshot
- {
- public SendSnapshot() { }
- protected override System.Threading.Tasks.Task> Junctions() { }
- }
- public class SendSnapshotInput : System.IEquatable
- {
- public SendSnapshotInput() { }
- public required System.Guid Id { get; init; }
- public required string Machine { get; init; }
- public string? RequestId { get; init; }
- public string? SchemaHash { get; init; }
- }
- public class SendSnapshotOutput : System.IEquatable
- {
- public SendSnapshotOutput() { }
- public System.DateTimeOffset? DueAt { get; init; }
- public bool DueAtKnown { get; init; }
- public Trax.Effect.StateMachine.Persistence.SnapshotProblem? Problem { get; init; }
- public long? Revision { get; init; }
- public long? RowId { get; init; }
- public string? Snapshot { get; init; }
- }
- [Trax.Effect.Attributes.TraxAuthorize]
- public class StartSnapshot : Trax.Effect.Services.ServiceTrain.ServiceTrain, System.IDisposable, Trax.Core.Route.IRoute, Trax.Effect.Services.ServiceTrain.IServiceTrain, Trax.Effect.StateMachine.Persistence.Mutations.IStartSnapshot
- {
- public StartSnapshot() { }
- protected override System.Threading.Tasks.Task> Junctions() { }
- }
- public class StartSnapshotInput : System.IEquatable
- {
- public StartSnapshotInput() { }
- public string? Input { get; init; }
- public required string Machine { get; init; }
- public required string RequestId { get; init; }
- public string? SchemaHash { get; init; }
- [Trax.Effect.Attributes.TraxSensitive]
- public string? SensitiveInput { get; init; }
- }
- public class StartSnapshotOutput : System.IEquatable
- {
- public StartSnapshotOutput() { }
- public bool? Created { get; init; }
- public System.DateTimeOffset? DueAt { get; init; }
- public System.Guid? Id { get; init; }
- public Trax.Effect.StateMachine.Persistence.SnapshotProblem? Problem { get; init; }
- public long? Revision { get; init; }
- public string? Snapshot { get; init; }
- }
- public static class StateMachineMutations
- {
- public static System.Reflection.Assembly Assembly { get; }
- }
-}
\ No newline at end of file
diff --git a/Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.Effect.StateMachine.Testing.received.txt b/Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.Effect.StateMachine.Testing.received.txt
deleted file mode 100644
index 141d2625f..000000000
--- a/Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.Effect.StateMachine.Testing.received.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-namespace Trax.Effect.StateMachine.Testing
-{
- public static class DifferentialCorpus
- {
- public static System.Collections.Generic.IReadOnlyList Replay(Trax.Effect.StateMachine.SnapshotMachine machine, string goldenJson)
- where TState : struct, System.Enum
- where TTrigger : struct, System.Enum { }
- }
- public static class MachineConformance
- {
- public static System.Collections.Generic.IReadOnlyList Check(Trax.Effect.StateMachine.Persistence.IMachine machine, string irPath, string corpusPath) { }
- public static System.Collections.Generic.IReadOnlyList CheckCorpus(Trax.Effect.StateMachine.Persistence.IMachine machine, string corpusPath) { }
- public static System.Collections.Generic.IReadOnlyList CheckIr(Trax.Effect.StateMachine.Persistence.IMachine machine, string irPath) { }
- public static void WriteIr(Trax.Effect.StateMachine.Persistence.IMachine machine, string irPath) { }
- }
-}
\ No newline at end of file
diff --git a/Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.Effect.StateMachine.received.txt b/Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.Effect.StateMachine.received.txt
deleted file mode 100644
index 7bdf31124..000000000
--- a/Trax.Effect/tests/Trax.Effect.Tests.Meta/PublicApi/Trax.Effect.StateMachine.received.txt
+++ /dev/null
@@ -1,643 +0,0 @@
-namespace Trax.Effect.StateMachine
-{
- public abstract class AdvanceResult : System.IEquatable
- {
- public sealed class Rejected : Trax.Effect.StateMachine.AdvanceResult, System.IEquatable
- {
- public Rejected(Trax.Effect.StateMachine.RefusalCode Reason, string? Detail = null) { }
- public string? Detail { get; init; }
- public Trax.Effect.StateMachine.RefusalCode Reason { get; init; }
- }
- public sealed class Transitioned : Trax.Effect.StateMachine.AdvanceResult, System.IEquatable
- {
- public Transitioned(Trax.Effect.StateMachine.Snapshot Snapshot) { }
- public Trax.Effect.StateMachine.Snapshot Snapshot { get; init; }
- }
- }
- public sealed class BuiltMachine : System.IEquatable>
- where TState : struct, System.Enum
- where TTrigger : struct, System.Enum
- {
- public BuiltMachine(Trax.Effect.StateMachine.MachineDefinition Definition, System.Collections.Generic.IReadOnlyCollection CommittedStates, System.Collections.Generic.IReadOnlyList> Effects, Trax.Effect.StateMachine.DeclarativeModel? Declarative = null) { }
- public System.Collections.Generic.IReadOnlyCollection CommittedStates { get; init; }
- public Trax.Effect.StateMachine.DeclarativeModel? Declarative { get; init; }
- public Trax.Effect.StateMachine.MachineDefinition Definition { get; init; }
- public System.Collections.Generic.IReadOnlyList> Effects { get; init; }
- public Trax.Effect.StateMachine.SnapshotMachine Engine { get; }
- }
- public sealed class ClientManifest : System.IEquatable
- {
- public const int CurrentFormat = 3;
- public ClientManifest() { }
- public System.Collections.Generic.IReadOnlyList FilterInputs { get; init; }
- public int Format { get; init; }
- public System.Collections.Generic.IReadOnlyList Machines { get; init; }
- public System.Collections.Generic.IReadOnlyList Progress { get; init; }
- public System.Collections.Generic.IReadOnlyList QueryModels { get; init; }
- public System.Collections.Generic.IReadOnlyList Trains { get; init; }
- public string Types { get; init; }
- public static Trax.Effect.StateMachine.ClientManifest Read(string text) { }
- public static string Write(Trax.Effect.StateMachine.ClientManifest manifest) { }
- }
- public sealed class ClientManifestArgument : System.IEquatable
- {
- public ClientManifestArgument() { }
- public string? Default { get; init; }
- public required string Name { get; init; }
- public required string Type { get; init; }
- }
- public sealed class ClientManifestDocument : System.IEquatable
- {
- public ClientManifestDocument() { }
- public required string Document { get; init; }
- public required string Id { get; init; }
- public required string Operation { get; init; }
- }
- public sealed class ClientManifestMachine : System.IEquatable
- {
- public ClientManifestMachine() { }
- public System.Collections.Generic.IReadOnlyList Documents { get; init; }
- public required string Id { get; init; }
- public required System.Text.Json.Nodes.JsonObject Ir { get; init; }
- public required string IrHash { get; init; }
- public Trax.Effect.StateMachine.ClientManifestRequirement? Requires { get; init; }
- public string IrText() { }
- }
- public sealed class ClientManifestQueryModel : System.IEquatable
- {
- public ClientManifestQueryModel() { }
- public string? Answer { get; init; }
- public System.Collections.Generic.IReadOnlyList Arguments { get; init; }
- public required string Field { get; init; }
- public string? Namespace { get; init; }
- public Trax.Effect.StateMachine.ClientManifestRequirement? Requires { get; init; }
- }
- public sealed class ClientManifestRequirement : System.IEquatable
- {
- public ClientManifestRequirement() { }
- public bool Anonymous { get; init; }
- public System.Collections.Generic.IReadOnlyList Policies { get; init; }
- public System.Collections.Generic.IReadOnlyList> RoleSets { get; init; }
- }
- public sealed class ClientManifestTrain : System.IEquatable
- {
- public ClientManifestTrain() { }
- public string? Answer { get; init; }
- public System.Collections.Generic.IReadOnlyList Arguments { get; init; }
- public required string Field { get; init; }
- public string? Namespace { get; init; }
- public bool Progress { get; init; }
- public Trax.Effect.StateMachine.ClientManifestRequirement? Requires { get; init; }
- public required string Root { get; init; }
- }
- public enum CompareOp
- {
- GreaterThan = 0,
- GreaterOrEqual = 1,
- LessThan = 2,
- LessOrEqual = 3,
- EqualTo = 4,
- }
- public sealed class ContextSchema : System.IEquatable
- {
- public static readonly Trax.Effect.StateMachine.ContextSchema Empty;
- public ContextSchema(System.Collections.Generic.IReadOnlyList Fields) { }
- public System.Collections.Generic.IReadOnlyList Fields { get; init; }
- }
- public static class CorpusReplay
- {
- public static System.Collections.Generic.IReadOnlyList Replay(Trax.Effect.StateMachine.SnapshotMachine machine, string goldenJson)
- where TState : struct, System.Enum
- where TTrigger : struct, System.Enum { }
- }
- public sealed class DeclarativeModel : System.IEquatable>
- where TState : struct, System.Enum
- where TTrigger : struct, System.Enum
- {
- public DeclarativeModel(System.Collections.Generic.IReadOnlyDictionary ContextSchemas, System.Collections.Generic.IReadOnlyDictionary TriggerInputs, System.Collections.Generic.IReadOnlyList> Transitions, System.Collections.Generic.IReadOnlyDictionary StateInvariants) { }
- public System.Collections.Generic.IReadOnlyDictionary ContextSchemas { get; init; }
- public Trax.Effect.StateMachine.DifferentialModel? Differential { get; init; }
- public System.Collections.Generic.IReadOnlyDictionary StateInvariants { get; init; }
- public System.Collections.Generic.IReadOnlyList> Transitions { get; init; }
- public System.Collections.Generic.IReadOnlyDictionary TriggerInputs { get; init; }
- }
- public sealed class DeclarativeTransition : System.IEquatable>
- where TState : struct, System.Enum
- where TTrigger : struct, System.Enum
- {
- public DeclarativeTransition(TState From, TTrigger Trigger, TState To, Trax.Effect.StateMachine.Rule? Guard, Trax.Effect.StateMachine.Reduction? Reduce) { }
- public TState From { get; init; }
- public Trax.Effect.StateMachine.Rule? Guard { get; init; }
- public Trax.Effect.StateMachine.Reduction? Reduce { get; init; }
- public TState To { get; init; }
- public TTrigger Trigger { get; init; }
- }
- public sealed class DifferentialModel : System.IEquatable>
- where TState : struct, System.Enum
- where TTrigger : struct, System.Enum
- {
- public DifferentialModel(System.Collections.Generic.IReadOnlyDictionary> Samples, System.Collections.Generic.IReadOnlyDictionary> Seeds, System.Collections.Generic.IReadOnlyList Contexts) { }
- public System.Collections.Generic.IReadOnlyList Contexts { get; init; }
- public bool IsEmpty { get; }
- public System.Collections.Generic.IReadOnlyDictionary> Samples { get; init; }
- public System.Collections.Generic.IReadOnlyDictionary> Seeds { get; init; }
- }
- public sealed class EffectBinding : System.IEquatable>
- where TState : struct, System.Enum
- where TTrigger : struct, System.Enum
- {
- public EffectBinding(TState From, TTrigger Trigger, TState To, System.Type EffectType, string KeyPrefix) { }
- public System.Type EffectType { get; init; }
- public TState From { get; init; }
- public string KeyPrefix { get; init; }
- public TState To { get; init; }
- public TTrigger Trigger { get; init; }
- }
- public sealed class FieldMatcher
- {
- public FieldMatcher(Trax.Effect.StateMachine.RuleSource source, string field) { }
- public Trax.Effect.StateMachine.Rule Absent() { }
- public Trax.Effect.StateMachine.Rule ArrayOf(Trax.Effect.StateMachine.JsonFieldType type) { }
- public Trax.Effect.StateMachine.Rule AtLeast(double value) { }
- public Trax.Effect.StateMachine.Rule AtMost(double value) { }
- public Trax.Effect.StateMachine.Rule CountAtLeast(int value) { }
- public Trax.Effect.StateMachine.Rule CountGreaterThan(int value) { }
- public Trax.Effect.StateMachine.Rule EqualTo(double value) { }
- public Trax.Effect.StateMachine.Rule GreaterThan(double value) { }
- public Trax.Effect.StateMachine.Rule IsFalse() { }
- public Trax.Effect.StateMachine.Rule IsOneOf(params string[] values) { }
- public Trax.Effect.StateMachine.Rule IsTrue() { }
- public Trax.Effect.StateMachine.Rule LengthAtLeast(int value) { }
- public Trax.Effect.StateMachine.Rule LengthGreaterThan(int value) { }
- public Trax.Effect.StateMachine.Rule LessThan(double value) { }
- public Trax.Effect.StateMachine.Rule NonEmpty() { }
- public Trax.Effect.StateMachine.Rule OfType(Trax.Effect.StateMachine.JsonFieldType type) { }
- public Trax.Effect.StateMachine.Rule Present() { }
- }
- public sealed class FieldSchema : System.IEquatable