keiro-dsl 0.21.0.0 → 0.22.0.0
raw patch · 808 files changed
+4591/−1091 lines, 808 filesdep ~aesondep ~keirodep ~keiro-corePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: aeson, keiro, keiro-core, kiroku-store, shibuya-core
API changes (from Hackage documentation)
This diff is very large; some files are shown as “too large to diff”. Download the raw patch for the complete diff.
Files
- CHANGELOG.md +80/−0
- generated-haskell-edition-idiomatic-v2.md too large to diff
- keiro-dsl.cabal +47/−12
- record-field-migration-0.15.md +182/−173
- src/Keiro/Dsl/AggregateType.hs +58/−2
- src/Keiro/Dsl/ExplainBindings.hs +24/−2
- src/Keiro/Dsl/Expression.hs +23/−17
- src/Keiro/Dsl/FoldEvidence.hs +2/−1
- src/Keiro/Dsl/Harness.hs +145/−16
- src/Keiro/Dsl/LanguageVersion.hs +4/−1
- src/Keiro/Dsl/Scaffold.hs +61/−10
- src/Keiro/Dsl/ScaffoldRecord.hs +5/−1
- src/Keiro/Dsl/ScaffoldRun.hs +2/−1
- src/Keiro/Dsl/StructuralConformance.hs +6/−3
- src/Keiro/Dsl/Validate.hs +26/−5
- src/Keiro/Dsl/WorkspaceRecord.hs +5/−0
- src/Keiro/Dsl/WorkspaceScaffold.hs +2/−1
- test/Keiro/Dsl/ConsumerEnumLiterals.hs +60/−0
- test/Keiro/Dsl/FrontendProfiles.hs +1/−1
- test/Keiro/Dsl/MappedStructuralEnumEquality.hs +226/−0
- test/Main.hs +25/−2
- test/conformance-aggregate-scalars/Generated/AggregateScalars/BehaviorSourceMap.hs +1/−1
- test/conformance-aggregate-scalars/Generated/AggregateScalars/ReplayAudit.hs +1/−1
- test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/BehaviorContract.hs +1/−1
- test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Codec.hs +1/−1
- test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Domain.hs +1/−1
- test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/EventStream.hs +1/−1
- test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Harness.hs +1/−1
- test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Projection.hs +1/−1
- test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Transducer.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareJobs/Queue.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueueCodec.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueuePolicy.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareLookup/QueryContract.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModel.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelHarness.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelTable.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareStore/BehaviorContract.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareStore/Codec.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareStore/Domain.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareStore/EventStream.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareStore/Harness.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareStore/Projection.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BareStore/Transducer.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/BehaviorSourceMap.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/Nominals.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/Nominals/Internal.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/ProjectionCatalog.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/ReplayAudit.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/Structural/NominalLeaves.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/BareEnvelope.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/MaybeText.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/NestedIds.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextList.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextMap.hs +1/−1
- test/conformance-bare-containers/Generated/BareContainers/StructuralConformance.hs +1/−1
- test/conformance-baseline.json +1/−0
- test/conformance-behavior-complete/Generated/BehaviorComplete/BehaviorSourceMap.hs +1/−1
- test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/BehaviorContract.hs +1/−1
- test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Codec.hs +1/−1
- test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Domain.hs +1/−1
- test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/EventStream.hs +1/−1
- test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Harness.hs +1/−1
- test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Projection.hs +1/−1
- test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Transducer.hs +1/−1
- test/conformance-behavior-complete/Generated/BehaviorComplete/Nominals.hs +1/−1
- test/conformance-behavior-complete/Generated/BehaviorComplete/Nominals/Internal.hs +1/−1
- test/conformance-behavior-complete/Generated/BehaviorComplete/ReplayAudit.hs +1/−1
- test/conformance-behavior-complete/Generated/BehaviorComplete/Structural/Shape/StartPayload.hs +1/−1
- test/conformance-behavior-complete/Generated/BehaviorComplete/StructuralConformance.hs +1/−1
- test/conformance-behavior-complete/Generated/BehaviorComplete/StructuralProjections.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/BehaviorSourceMap.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/Queue.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueueCodec.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueuePolicy.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/QueryContract.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModel.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelHarness.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelTable.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/BehaviorContract.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Codec.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Domain.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/EventStream.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Harness.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Projection.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Transducer.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/ProjectionCatalog.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/ReplayAudit.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/CalendarEnvelope.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/LocalDay.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/MaybeLocalDay.hs +1/−1
- test/conformance-calendar-days/Generated/CalendarDays/StructuralConformance.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/BehaviorSourceMap.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals/Internal.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ProjectionCatalog.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayAudit.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayEvents/Contract.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/Queue.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueueCodec.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueuePolicy.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/BehaviorContract.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Codec.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Domain.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/EventStream.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Harness.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Projection.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Transducer.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/QueryContract.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModel.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelHarness.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelTable.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Input.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Process.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/ProcessHarness.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/BehaviorContract.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Codec.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Domain.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/EventStream.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Harness.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Projection.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Transducer.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/NominalLeaves.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ContentHash.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ImportantDays.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/MaybeContentHash.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/MaybeLabel.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ReplayEnvelope.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/TextLabels.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralConformance.hs +1/−1
- test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralProjections.hs +1/−1
- test/conformance-coldstart/Generated/Billing/BehaviorSourceMap.hs +1/−1
- test/conformance-coldstart/Generated/Billing/Nominals.hs +1/−1
- test/conformance-coldstart/Generated/Billing/Nominals/Internal.hs +1/−1
- test/conformance-coldstart/Generated/Billing/ReplayAudit.hs +1/−1
- test/conformance-coldstart/Generated/Billing/Subscription/BehaviorContract.hs +1/−1
- test/conformance-coldstart/Generated/Billing/Subscription/Codec.hs +1/−1
- test/conformance-coldstart/Generated/Billing/Subscription/Domain.hs +1/−1
- test/conformance-coldstart/Generated/Billing/Subscription/EventStream.hs +1/−1
- test/conformance-coldstart/Generated/Billing/Subscription/Harness.hs +1/−1
- test/conformance-coldstart/Generated/Billing/Subscription/Projection.hs +1/−1
- test/conformance-coldstart/Generated/Billing/Subscription/Transducer.hs +1/−1
- test/conformance-contract-declared-id/Generated/ContractDeclaredId/Nominals.hs +1/−1
- test/conformance-contract-declared-id/Generated/ContractDeclaredId/Nominals/Internal.hs +1/−1
- test/conformance-contract-declared-id/Generated/ContractDeclaredId/Structural/NominalLeaves.hs +1/−1
- test/conformance-contract-declared-id/Generated/ContractDeclaredId/StructuralConformance.hs +1/−1
- test/conformance-contract-declared-id/Generated/ContractDeclaredId/Templates/Contract.hs +1/−1
- test/conformance-contract-list-fields/Generated/ContractListFields/Nominals.hs +1/−1
- test/conformance-contract-list-fields/Generated/ContractListFields/Nominals/Internal.hs +1/−1
- test/conformance-contract-list-fields/Generated/ContractListFields/Structural/NominalLeaves.hs +1/−1
- test/conformance-contract-list-fields/Generated/ContractListFields/StructuralConformance.hs +1/−1
- test/conformance-contract-list-fields/Generated/ContractListFields/Templates/Contract.hs +1/−1
- test/conformance-contract-v1-compat/Generated/HospitalCapacity/Emergency/Contract.hs +1/−1
- test/conformance-contract/Generated/HospitalCapacity/Emergency/Contract.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/BehaviorSourceMap.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/Hospital/BehaviorContract.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/Hospital/Codec.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/Hospital/Domain.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/Hospital/EventStream.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/Hospital/Harness.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/Hospital/Projection.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/Hospital/Transducer.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/QueryContract.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModel.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModelHarness.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModelTable.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/HospitalTransferRouter/Router.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/HospitalTransferRouter/RouterHarness.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/ProjectionCatalog.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/ReplayAudit.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/Structural/Shape/HospitalLoadRow.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/Structural/Shape/TransferRouteInput.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/StructuralConformance.hs +1/−1
- test/conformance-declarative-router/Generated/TransferRouting/StructuralProjections.hs +1/−1
- test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs +1/−1
- test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs +1/−1
- test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs +1/−1
- test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/Queue.hs +1/−1
- test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs +1/−1
- test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs +1/−1
- test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs +1/−1
- test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs +1/−1
- test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs +1/−1
- test/conformance-domain-outcomes/Generated/DomainOutcomes/BehaviorSourceMap.hs +1/−1
- test/conformance-domain-outcomes/Generated/DomainOutcomes/Nominals.hs +1/−1
- test/conformance-domain-outcomes/Generated/DomainOutcomes/ReplayAudit.hs +1/−1
- test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/BehaviorContract.hs +1/−1
- test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Codec.hs +1/−1
- test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Domain.hs +1/−1
- test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/EventStream.hs +1/−1
- test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Harness.hs +1/−1
- test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Projection.hs +1/−1
- test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Transducer.hs +1/−1
- test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/BehaviorContract.hs +1/−1
- test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Codec.hs +1/−1
- test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Domain.hs +1/−1
- test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/EventStream.hs +1/−1
- test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Harness.hs +1/−1
- test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Projection.hs +1/−1
- test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Transducer.hs +1/−1
- test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/BehaviorSourceMap.hs +1/−1
- test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/ReplayAudit.hs +1/−1
- test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/StructuralConformance.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/BehaviorSourceMap.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Identities/Contract.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/BehaviorContract.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Codec.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Domain.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/EventStream.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Harness.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Projection.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Transducer.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/Queue.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueueCodec.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueuePolicy.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals/Internal.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/ReplayAudit.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/NominalLeaves.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/Shape/IdentityEnvelope.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralConformance.hs +1/−1
- test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralProjections.hs +1/−1
- test/conformance-id-domain-migration/Generated/IdDomainMigration/BehaviorSourceMap.hs +1/−1
- test/conformance-id-domain-migration/Generated/IdDomainMigration/Nominals.hs +1/−1
- test/conformance-id-domain-migration/Generated/IdDomainMigration/Nominals/Internal.hs +1/−1
- test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/BehaviorContract.hs +1/−1
- test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Codec.hs +1/−1
- test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Domain.hs +1/−1
- test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/EventStream.hs +1/−1
- test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Harness.hs +1/−1
- test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Projection.hs +1/−1
- test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Transducer.hs +1/−1
- test/conformance-id-domain-migration/Generated/IdDomainMigration/ReplayAudit.hs +1/−1
- test/conformance-import-planning/Generated/ImportPlanningCollisions/BehaviorSourceMap.hs +1/−1
- test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/BehaviorContract.hs +1/−1
- test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Codec.hs +1/−1
- test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Domain.hs +1/−1
- test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/EventStream.hs +1/−1
- test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Harness.hs +1/−1
- test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Projection.hs +1/−1
- test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Transducer.hs +1/−1
- test/conformance-import-planning/Generated/ImportPlanningCollisions/NominalProjections.hs +1/−1
- test/conformance-import-planning/Generated/ImportPlanningCollisions/ReplayAudit.hs +1/−1
- test/conformance-import-planning/Generated/ImportPlanningCollisions/Structural/Shape/Details.hs +1/−1
- test/conformance-import-planning/Generated/ImportPlanningCollisions/StructuralConformance.hs +1/−1
- test/conformance-import-planning/Generated/ImportPlanningCollisions/StructuralProjections.hs +1/−1
- test/conformance-intake-delegated/Generated/HospitalCapacity/Emergency/Contract.hs +1/−1
- test/conformance-intake-delegated/Generated/HospitalCapacity/IncidentInbox/Inbox.hs +1/−1
- test/conformance-intake-full/Generated/HospitalCapacity/Emergency/Contract.hs +1/−1
- test/conformance-intake-full/Generated/HospitalCapacity/IncidentInbox/Inbox.hs +1/−1
- test/conformance-intake-runtime/Generated/HospitalCapacity/Emergency/Contract.hs +1/−1
- test/conformance-intake-runtime/Generated/HospitalCapacity/IncidentInbox/Inbox.hs +1/−1
- test/conformance-keyword-segments/Generated/KeywordSegments/JobType/Queue.hs +1/−1
- test/conformance-keyword-segments/Generated/KeywordSegments/JobType/QueueCodec.hs +1/−1
- test/conformance-keyword-segments/Generated/KeywordSegments/JobType/QueuePolicy.hs +1/−1
- test/conformance-keyword-segments/Generated/KeywordSegments/Nominals.hs +1/−1
- test/conformance-keyword-segments/Generated/KeywordSegments/Nominals/Internal.hs +1/−1
- test/conformance-keyword-segments/Generated/KeywordSegments/ProjectionCatalog.hs +1/−1
- test/conformance-keyword-segments/Generated/KeywordSegments/Structural/NominalLeaves.hs +1/−1
- test/conformance-keyword-segments/Generated/KeywordSegments/StructuralConformance.hs +1/−1
- test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/QueryContract.hs +1/−1
- test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModel.hs +1/−1
- test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModelHarness.hs +1/−1
- test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModelTable.hs +1/−1
- test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/Queue.hs +1/−1
- test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/QueueCodec.hs +1/−1
- test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/QueuePolicy.hs +1/−1
- test/conformance-mapped-queue/Generated/MappedQueue/Structural/Shape/JobMetadata.hs +1/−1
- test/conformance-mapped-queue/Generated/MappedQueue/Structural/Shape/JobPayload.hs +1/−1
- test/conformance-mapped-queue/Generated/MappedQueue/StructuralConformance.hs +1/−1
- test/conformance-mapped-queue/Generated/MappedQueue/StructuralProjections.hs +1/−1
- test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/QueryContract.hs +1/−1
- test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModel.hs +1/−1
- test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModelHarness.hs +1/−1
- test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModelTable.hs +1/−1
- test/conformance-mapped-readmodel/Generated/MappedReadmodel/ProjectionCatalog.hs +1/−1
- test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountLookup.hs +1/−1
- test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountProfile.hs +1/−1
- test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountSummary.hs +1/−1
- test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/TenantKey.hs +1/−1
- test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/UnusedFilter.hs +1/−1
- test/conformance-mapped-readmodel/Generated/MappedReadmodel/StructuralConformance.hs +1/−1
- test/conformance-mapped-readmodel/Generated/MappedReadmodel/StructuralProjections.hs +1/−1
- test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/BehaviorSourceMap.hs +1/−1
- test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/BehaviorContract.hs +1/−1
- test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Codec.hs +1/−1
- test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Domain.hs +1/−1
- test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/EventStream.hs +1/−1
- test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Harness.hs +1/−1
- test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Projection.hs +1/−1
- test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Transducer.hs +1/−1
- test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/ReplayAudit.hs +1/−1
- test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/StructuralConformance.hs +1/−1
- test/conformance-mapped-structural-enum-equality/Conformance/MappedStructuralEnumEquality/Bindings.hs +29/−0
- test/conformance-mapped-structural-enum-equality/Conformance/MappedStructuralEnumEquality/Domain.hs +29/−0
- test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/BehaviorSourceMap.hs +42/−0
- test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ReplayAudit.hs +23/−0
- test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/BehaviorContract.hs +512/−0
- test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Codec.hs +203/−0
- test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Domain.hs +135/−0
- test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/EventStream.hs +63/−0
- test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Harness.hs +364/−0
- test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Projection.hs +4/−0
- test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Transducer.hs +134/−0
- test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/Structural/Shape/Request.hs +10/−0
- test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/Structural/Shape/RequiredScope.hs +7/−0
- test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/StructuralConformance.hs +72/−0
- test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/StructuralProjections.hs +40/−0
- test/conformance-mapped-structural-enum-equality/Main.hs +154/−0
- test/conformance-mapped-structural-enum-equality/MappedStructuralEnumEquality/ScopeGate/BehaviorHoles.hs +37/−0
- test/conformance-mapped-structural-enum-equality/keiro-dsl-cabal-fragment.context.mapped-structural-enum-equality.txt +43/−0
- test/conformance-mapped-structural-enum-equality/keiro-dsl-ledger.context.mapped-structural-enum-equality.txt +61/−0
- test/conformance-newsurface/Generated/TransferRouting/BehaviorSourceMap.hs +1/−1
- test/conformance-newsurface/Generated/TransferRouting/Hospital/BehaviorContract.hs +1/−1
- test/conformance-newsurface/Generated/TransferRouting/Hospital/Codec.hs +1/−1
- test/conformance-newsurface/Generated/TransferRouting/Hospital/Domain.hs +1/−1
- test/conformance-newsurface/Generated/TransferRouting/Hospital/EventStream.hs +1/−1
- test/conformance-newsurface/Generated/TransferRouting/Hospital/Harness.hs +1/−1
- test/conformance-newsurface/Generated/TransferRouting/Hospital/Projection.hs +1/−1
- test/conformance-newsurface/Generated/TransferRouting/Hospital/Transducer.hs +1/−1
- test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModel.hs +1/−1
- test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModelHarness.hs +1/−1
- test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModelTable.hs +1/−1
- test/conformance-newsurface/Generated/TransferRouting/HospitalTransferRouter/Router.hs +1/−1
- test/conformance-newsurface/Generated/TransferRouting/HospitalTransferRouter/RouterHarness.hs +1/−1
- test/conformance-newsurface/Generated/TransferRouting/ReplayAudit.hs +1/−1
- test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/Nominals.hs +1/−1
- test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/Nominals/Internal.hs +1/−1
- test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/ProjectionCatalog.hs +1/−1
- test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/StructuralConformance.hs +1/−1
- test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/QueryContract.hs +1/−1
- test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModel.hs +1/−1
- test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModelHarness.hs +1/−1
- test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModelTable.hs +1/−1
- test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Nominals.hs +1/−1
- test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Nominals/Internal.hs +1/−1
- test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Structural/NominalLeaves.hs +1/−1
- test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/StructuralConformance.hs +1/−1
- test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/Queue.hs +1/−1
- test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/QueueCodec.hs +1/−1
- test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/QueuePolicy.hs +1/−1
- test/conformance-nominal-scalars/Generated/NominalScalars/BehaviorSourceMap.hs +1/−1
- test/conformance-nominal-scalars/Generated/NominalScalars/Nominal/Shape/OrderStatus.hs +1/−1
- test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/BehaviorContract.hs +1/−1
- test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Codec.hs +1/−1
- test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Domain.hs +1/−1
- test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/EventStream.hs +1/−1
- test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Harness.hs +1/−1
- test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Projection.hs +1/−1
- test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Transducer.hs +1/−1
- test/conformance-nominal-scalars/Generated/NominalScalars/NominalProjections.hs +1/−1
- test/conformance-nominal-scalars/Generated/NominalScalars/ReplayAudit.hs +1/−1
- test/conformance-nominal-scalars/Main.hs +4/−2
- test/conformance-process-full/Generated/SurgeDemo/BehaviorSourceMap.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Hospital/BehaviorContract.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Hospital/Codec.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Hospital/Domain.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Hospital/EventStream.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Hospital/Harness.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Hospital/Projection.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Hospital/Transducer.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Nominals.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Nominals/Internal.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/ReplayAudit.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Surge/BehaviorContract.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Surge/Codec.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Surge/Domain.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Surge/EventStream.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Surge/Harness.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Surge/Projection.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/Surge/Transducer.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/SurgeFlow/Process.hs +1/−1
- test/conformance-process-full/Generated/SurgeDemo/SurgeFlow/ProcessHarness.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/Input.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/Process.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/ProcessHarness.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/BehaviorSourceMap.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/Incident/BehaviorContract.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/Incident/Codec.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/Incident/Domain.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/Incident/EventStream.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/Incident/Harness.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/Incident/Projection.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/Incident/Transducer.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/Input.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/Process.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/ProcessHarness.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/BehaviorContract.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Codec.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Domain.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/EventStream.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Harness.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Projection.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Transducer.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/Nominals.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/Nominals/Internal.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/ReplayAudit.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/Input.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/Process.hs +1/−1
- test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/ProcessHarness.hs +1/−1
- test/conformance-process-reactions/Main.hs too large to diff
- test/conformance-process-reactions/keiro-dsl-cabal-fragment.context.process-reactions-minimal.txt too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/BehaviorSourceMap.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/BehaviorContract.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Codec.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Domain.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/EventStream.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Harness.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Projection.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Transducer.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/HospitalSurge/Process.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/HospitalSurge/ProcessHarness.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Nominals.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Nominals/Internal.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/ReplayAudit.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Surge/BehaviorContract.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Codec.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Domain.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Surge/EventStream.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Harness.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Projection.hs too large to diff
- test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Transducer.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/BehaviorSourceMap.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/BehaviorContract.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Codec.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Domain.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/EventStream.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Harness.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Projection.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Transducer.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Incident/BehaviorContract.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Codec.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Domain.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Incident/EventStream.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Harness.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Projection.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Transducer.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/Input.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/Process.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/ProcessHarness.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Nominals.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/Nominals/Internal.hs too large to diff
- test/conformance-process-state-authority/Generated/IncidentResponse/ReplayAudit.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/BehaviorSourceMap.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/Incident/BehaviorContract.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/Incident/Codec.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/Incident/Domain.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/Incident/EventStream.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/Incident/Harness.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/Incident/Projection.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/Incident/Transducer.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/BehaviorContract.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Codec.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Domain.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/EventStream.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Harness.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Projection.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Transducer.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/Input.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/Process.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/ProcessHarness.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/Nominals.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/Nominals/Internal.hs too large to diff
- test/conformance-process-timers/Generated/ProcessTimers/ReplayAudit.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/BehaviorSourceMap.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Hospital/BehaviorContract.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Hospital/Codec.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Hospital/Domain.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Hospital/EventStream.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Hospital/Harness.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Hospital/Projection.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Hospital/Transducer.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/HospitalSurge/Process.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/HospitalSurge/ProcessHarness.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Nominals.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Nominals/Internal.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/ReplayAudit.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Surge/BehaviorContract.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Surge/Codec.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Surge/Domain.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Surge/EventStream.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Surge/Harness.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Surge/Projection.hs too large to diff
- test/conformance-process/Generated/HospitalCapacity/Surge/Transducer.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/BehaviorSourceMap.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModel.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModelHarness.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModelTable.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/QueryContract.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModel.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModelHarness.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModelTable.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModel.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModelHarness.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModelTable.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Orders/BehaviorContract.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Codec.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Domain.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Orders/EventStream.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Harness.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Projection.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Transducer.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/ProjectionCatalog.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/Queue.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/QueueCodec.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/QueuePolicy.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/ReplayAudit.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModel.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModelHarness.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModelTable.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/BehaviorContract.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Codec.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Domain.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/EventStream.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Harness.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Projection.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Transducer.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/Structural/Shape/QualificationPayload.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/StructuralConformance.hs too large to diff
- test/conformance-projection-catalog/Generated/CatalogDemo/StructuralProjections.hs too large to diff
- test/conformance-publisher-runtime/Generated/HospitalCapacity/Emergency/Contract.hs too large to diff
- test/conformance-publisher-runtime/Generated/HospitalCapacity/HospitalPublisher/Publisher.hs too large to diff
- test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs too large to diff
- test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs too large to diff
- test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs too large to diff
- test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/Queue.hs too large to diff
- test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs too large to diff
- test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs too large to diff
- test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs too large to diff
- test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs too large to diff
- test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs too large to diff
- test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs too large to diff
- test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs too large to diff
- test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs too large to diff
- test/conformance-queue/Generated/HospitalCapacity/ReservationWork/Queue.hs too large to diff
- test/conformance-queue/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs too large to diff
- test/conformance-queue/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs too large to diff
- test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs too large to diff
- test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs too large to diff
- test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs too large to diff
- test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs too large to diff
- test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs too large to diff
- test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/BehaviorSourceMap.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/Queue.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueueCodec.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueuePolicy.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/QueryContract.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModel.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelHarness.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelTable.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashStore/BehaviorContract.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Codec.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Domain.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashStore/EventStream.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Harness.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Projection.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Transducer.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/ProjectionCatalog.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/ReplayAudit.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/ContentHash.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/HashEnvelope.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/MaybeContentHash.hs too large to diff
- test/conformance-refined-base16/Generated/RefinedBase16/StructuralConformance.hs too large to diff
- test/conformance-replay/Generated/ReplayDivergence/BehaviorSourceMap.hs too large to diff
- test/conformance-replay/Generated/ReplayDivergence/Note/BehaviorContract.hs too large to diff
- test/conformance-replay/Generated/ReplayDivergence/Note/Codec.hs too large to diff
- test/conformance-replay/Generated/ReplayDivergence/Note/Domain.hs too large to diff
- test/conformance-replay/Generated/ReplayDivergence/Note/EventStream.hs too large to diff
- test/conformance-replay/Generated/ReplayDivergence/Note/Harness.hs too large to diff
- test/conformance-replay/Generated/ReplayDivergence/Note/Projection.hs too large to diff
- test/conformance-replay/Generated/ReplayDivergence/Note/Transducer.hs too large to diff
- test/conformance-replay/Generated/ReplayDivergence/ReplayAudit.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/BehaviorSourceMap.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/Page/BehaviorContract.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/Page/Codec.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/Page/Domain.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/Page/EventStream.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/Page/Harness.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/Page/Projection.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/Page/Transducer.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/PagingRouter/Router.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/PagingRouter/RouterHarness.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/ReplayAudit.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModel.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs too large to diff
- test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/BehaviorSourceMap.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/Page/BehaviorContract.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/Page/Codec.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/Page/Domain.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/Page/EventStream.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/Page/Harness.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/Page/Projection.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/Page/Transducer.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/PagingRouter/Router.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/PagingRouter/RouterHarness.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/ReplayAudit.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModel.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs too large to diff
- test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/BehaviorSourceMap.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/Page/BehaviorContract.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/Page/Codec.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/Page/Domain.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/Page/EventStream.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/Page/Harness.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/Page/Projection.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/Page/Transducer.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/PagingRouter/Router.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/PagingRouter/RouterHarness.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/ReplayAudit.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModel.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs too large to diff
- test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/BehaviorSourceMap.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Nominals.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Nominals/Internal.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ReplayAudit.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/BehaviorContract.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Codec.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Domain.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/EventStream.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Harness.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Projection.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Transducer.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Structural/Shape/Limits.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/StructuralConformance.hs too large to diff
- test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/StructuralProjections.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/BehaviorContract.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Codec.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Domain.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/EventStream.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Harness.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Projection.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Transducer.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModel.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModelHarness.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModelTable.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/BehaviorContract.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Codec.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Domain.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/EventStream.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Harness.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Projection.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Transducer.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/BehaviorContract.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Codec.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Domain.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/EventStream.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Harness.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Projection.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Transducer.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModel.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModelHarness.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModelTable.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/BehaviorSourceMap.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Conformance.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Nominals.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Nominals/Internal.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/ReplayAudit.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/StructuralConformance.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/WorkspaceProofWorkflow/Generated/WorkflowFacts.hs too large to diff
- test/conformance-service-package/runtime/src/Proof/WorkspaceProof/WorkspaceProofWorkflow/Generated/WorkflowRuntime.hs too large to diff
- test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/keiro-dsl-conformance-ledger.txt too large to diff
- test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/keiro-workspace-proof-conformance.cabal too large to diff
- test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/src/Main.hs too large to diff
- test/conformance-skeletons/SkelAggregate/keiro-dsl-manifest.my-service.txt too large to diff
- test/conformance-skeletons/SkelAggregate/keiro-dsl-scaffold-record.my-service.txt too large to diff
- test/conformance-snapshot/Generated/HospitalCapacity/BehaviorSourceMap.hs too large to diff
- test/conformance-snapshot/Generated/HospitalCapacity/Nominals.hs too large to diff
- test/conformance-snapshot/Generated/HospitalCapacity/Nominals/Internal.hs too large to diff
- test/conformance-snapshot/Generated/HospitalCapacity/ReplayAudit.hs too large to diff
- test/conformance-snapshot/Generated/HospitalCapacity/Reservation/BehaviorContract.hs too large to diff
- test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Codec.hs too large to diff
- test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Domain.hs too large to diff
- test/conformance-snapshot/Generated/HospitalCapacity/Reservation/EventStream.hs too large to diff
- test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Harness.hs too large to diff
- test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Projection.hs too large to diff
- test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Transducer.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/BehaviorSourceMap.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominal/Shape/Channel.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/NominalProjections.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominals.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominals/Internal.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/ProjectionCatalog.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/ReplayAudit.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/NominalLeaves.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateBook.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateLookupInput.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateLookupRow.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateRef.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateState.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/StructuralConformance.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/StructuralProjections.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/BehaviorContract.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Codec.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Domain.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/EventStream.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Harness.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Projection.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Transducer.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateDeliveryRouter/Router.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateDeliveryRouter/RouterHarness.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/QueryContract.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModel.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModelHarness.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModelTable.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/Queue.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/QueueCodec.hs too large to diff
- test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/QueuePolicy.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/BehaviorSourceMap.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/Queue.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueueCodec.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueuePolicy.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/QueryContract.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModel.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelHarness.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelTable.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/BehaviorContract.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Codec.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Domain.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/EventStream.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Harness.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Projection.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Transducer.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/ProjectionCatalog.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/ReplayAudit.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/LabelEnvelope.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/MaybeTextLabels.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/TextLabels.hs too large to diff
- test/conformance-structural-text-sets/Generated/StructuralTextSets/StructuralConformance.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/BehaviorContract.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Codec.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Domain.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/EventStream.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Harness.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Projection.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Transducer.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/BehaviorSourceMap.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/ReplayAudit.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactInfo.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactKind.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactLocation.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactMetadata.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/StructuralConformance.hs too large to diff
- test/conformance-structural/Generated/StructuralConformance/StructuralProjections.hs too large to diff
- test/conformance-v2/Generated/HospitalCapacity/BehaviorSourceMap.hs too large to diff
- test/conformance-v2/Generated/HospitalCapacity/Nominals.hs too large to diff
- test/conformance-v2/Generated/HospitalCapacity/Nominals/Internal.hs too large to diff
- test/conformance-v2/Generated/HospitalCapacity/ReplayAudit.hs too large to diff
- test/conformance-v2/Generated/HospitalCapacity/Reservation/BehaviorContract.hs too large to diff
- test/conformance-v2/Generated/HospitalCapacity/Reservation/Codec.hs too large to diff
- test/conformance-v2/Generated/HospitalCapacity/Reservation/Domain.hs too large to diff
- test/conformance-v2/Generated/HospitalCapacity/Reservation/EventStream.hs too large to diff
- test/conformance-v2/Generated/HospitalCapacity/Reservation/Harness.hs too large to diff
- test/conformance-v2/Generated/HospitalCapacity/Reservation/Projection.hs too large to diff
- test/conformance-v2/Generated/HospitalCapacity/Reservation/Transducer.hs too large to diff
- test/conformance-workflow-full/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs too large to diff
- test/conformance-workflow-full/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs too large to diff
- test/conformance-workflow-runtime/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs too large to diff
- test/conformance-workflow-runtime/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs too large to diff
- test/conformance-workflow/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs too large to diff
- test/conformance-workflow/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/BehaviorSourceMap.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Nominals.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Nominals/Internal.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/BehaviorContract.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Codec.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Domain.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/EventStream.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Harness.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Projection.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Transducer.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/BehaviorContract.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Codec.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Domain.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/EventStream.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Harness.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Projection.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Transducer.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ReplayAudit.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/NominalLeaves.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/Shape/ArtifactClaim.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/Shape/ProjectClaim.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/StructuralConformance.hs too large to diff
- test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/StructuralProjections.hs too large to diff
- test/conformance/Generated/HospitalCapacity/BehaviorSourceMap.hs too large to diff
- test/conformance/Generated/HospitalCapacity/Nominals.hs too large to diff
- test/conformance/Generated/HospitalCapacity/Nominals/Internal.hs too large to diff
- test/conformance/Generated/HospitalCapacity/ReplayAudit.hs too large to diff
- test/conformance/Generated/HospitalCapacity/Reservation/BehaviorContract.hs too large to diff
- test/conformance/Generated/HospitalCapacity/Reservation/Codec.hs too large to diff
- test/conformance/Generated/HospitalCapacity/Reservation/Domain.hs too large to diff
- test/conformance/Generated/HospitalCapacity/Reservation/EventStream.hs too large to diff
- test/conformance/Generated/HospitalCapacity/Reservation/Harness.hs too large to diff
- test/conformance/Generated/HospitalCapacity/Reservation/Projection.hs too large to diff
- test/conformance/Generated/HospitalCapacity/Reservation/Transducer.hs too large to diff
- test/consumer-enum-literal-sampling-test.sh too large to diff
- test/fixtures/mapped-structural-enum-data-only-fold.golden too large to diff
- test/fixtures/mapped-structural-enum-equality-history/binding-v2.keiro too large to diff
- test/fixtures/mapped-structural-enum-equality-history/data-only.keiro too large to diff
- test/fixtures/mapped-structural-enum-equality-history/fixture-only.keiro too large to diff
- test/fixtures/mapped-structural-enum-equality-history/guarded.keiro too large to diff
- test/fixtures/mapped-structural-enum-equality-history/reordered.keiro too large to diff
- test/fixtures/mapped-structural-enum-equality-history/wire-v2.keiro too large to diff
- test/fixtures/mapped-structural-enum-equality.keiro too large to diff
- test/mapped-structural-enum-equality-mutation-test.sh too large to diff
@@ -6,6 +6,86 @@ ## [Unreleased] +## 0.22.0.0 — 2026-10-27++### Breaking Changes++- Direct DSL API clients must handle `AggregateStructuralEnum` and+ `StructuralEnumEqualityGuards`, supply `StructuralProjection.rootEnum`+ (`Nothing` for prior projections), and supply `structuralEnumEqualities`+ (`[]` for prior records) when constructing `ScaffoldRecord` or `WorkspaceRecord`.+ `AggregateMapped` is a bundled bidirectional pattern matching both mapped+ representations. Structural enum equality adds declaration-specific fold+ evidence; preserve replay qualification when adopting it. Language 6 remains+ a candidate; this release does not promote its language contract.++### New Features++- Candidate Language 6 structural enums support declaration-safe `==` and `!=`+ guards and qualified constructor literals through the existing total binding.+ Generated root projections carry exact finite wire-key domains and reconstruct+ consumer owners; structural conformance checks exhaustive enum shapes, fixture+ coverage, and projection owner/key laws. Records, unions, opaque mappings,+ ordering, arithmetic, and additional nested traversal remain excluded.+- Generated harnesses sample a structural enum command field whose guard compares+ qualified literals by projected wire key through the structural projection+ witness, combined with any register-inequality exclusion. Supplied fixture+ order is not a harness contract; a guard no supplied fixture satisfies fails+ with an explicit error. `projectionWitnessName` and `structuralProjectionModule`+ are exported from `Keiro.Dsl.Scaffold`.+- Equality use adds a versioned declaration-specific fold segment, binding+ explanations, and distinct `structural-enum-equality` scaffold/workspace ledger+ rows. Data-only mappings and unrelated fold identities retain their bytes.+ Consumer release, event-history, register-layout, fold, and snapshot qualification+ remain required before removing a downstream native-enum adapter.+- API additions include `AggregateStructuralEnum`, `StructuralEnumEquality`,+ `StructuralEnumEqualityGuards`, `StructuralProjection.rootEnum`, and+ `ScaffoldRecord.structuralEnumEqualities`/`WorkspaceRecord.structuralEnumEqualities`.+ `AggregateMapped` is a bundled bidirectional pattern covering both mapped-value+ representations, preserving their structural codec/initial/write paths.++### Bug Fixes++- A consumer-bound nominal enum or ID literal used only as a comparison operand+ in a guard or outcome reason no longer plans unused binding, representation,+ or KindID imports, so the generated transducer and event stream compile under+ the generated-output `-Werror`. Literals in write position keep those imports.+- Generated harnesses sample a consumer-bound nominal enum command field whose+ guard compares qualified literals by canonical key through the nominal+ equality witness, with the same register-inequality exclusion as structural+ enums. `nominalEqualityWitnessName` is exported from `Keiro.Dsl.Scaffold`.++### Other Changes++- 0.21.0.0 erratum: regeneration rewrites every generated aggregate+ `BehaviorContract.hs` (new `behaviorObligationReport` export and+ `coverageReportFor`), including aggregates without hole-owned initial edges.+ Harness changes additionally affect Language 2 and later services with+ hole-owned live initial transitions. Preserve application holes and real+ history-backed witnesses.+- The 0.21.0.0 API notes omitted `TypedScalarNode` constructors `TypedMappedLift`+ and `TypedMappedInitial`; `ExpressionDiagnosticCode` constructors+ `ScalarMappedLiftUnsupported`, `ScalarMappedLiftProjectionUnsupported`,+ `ScalarWriteInitialUnsupported`, `ScalarWriteInitialShadowed`;+ `LanguageFeature` constructors `MappedRegisterConstructionSyntax` and+ `ContractListFieldSyntax`; and `MappedDeclError.InvalidMappedWriteLift`.+- `DiagnosticCode` inserted `ContractListFieldUsedAsKey`,+ `AggregateExpressionMappedLiftUnsupported`,+ `AggregateExpressionMappedLiftProjectionUnsupported`, `MappedWriteLiftInvalid`,+ `AggregateExpressionWriteInitialUnsupported`,+ `AggregateExpressionWriteInitialShadowed`, `MappedWriteLiftChanged` and+ `MappedWriteLiftFixturesChanged`. Enum/Bounded ordinals after+ `ContractTypeIdDomainChanged` and `AggGuardRemedyUnavailable` shift.+- `MappingIdentity` ledger JSON adds optional `writeLift`;+ `Scaffold.behaviorRequirementsFor` is newly exported and partial;+ `ScaffoldRun.pureRefusalsForService` adds the+ `generatedImportResolutionViolations` refusal class. Same-prefix+ literal-to-declared ID-domain transitions predating `ContractIdDomainTypeIdV7`+ are reclassified from advisory to breaking. The corrected+ `0.20.0.0-to-0.21.0.0` upgrade edge lists consumer adaptations.+++ ## 0.21.0.0 — 2026-10-14 ### Breaking Changes
file too large to diff
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: keiro-dsl-version: 0.21.0.0+version: 0.22.0.0 synopsis: Typed specification toolchain for keiro services description: keiro-dsl is the toolchain over a typed `.keiro` specification of a keiro@@ -190,7 +190,7 @@ directory >=1.3 && <1.4, filepath >=1.4 && <1.6, keiki >=0.9 && <0.10,- keiro-core ^>=0.21.0.0,+ keiro-core ^>=0.22.0.0, keiro-dsl:generated-haskell-language-internal, megaparsec >=9.6 && <9.9, mmzk-typeid >=0.7 && <0.8,@@ -222,11 +222,13 @@ autogen-modules: Paths_keiro_dsl other-modules: Keiro.Dsl.ConformanceBaseline+ Keiro.Dsl.ConsumerEnumLiterals Keiro.Dsl.FrontendCompatibility Keiro.Dsl.FrontendProfiles Keiro.Dsl.FrontendPublicApiProbe Keiro.Dsl.FrontendSurface Keiro.Dsl.MappedRegisterConstruction+ Keiro.Dsl.MappedStructuralEnumEquality Paths_keiro_dsl build-depends:@@ -239,7 +241,7 @@ filepath >=1.4 && <1.6, hspec >=2.11, keiki >=0.9 && <0.10,- keiro-core ^>=0.21.0.0,+ keiro-core ^>=0.22.0.0, keiro-dsl, keiro-dsl:generated-haskell-language-internal, mmzk-typeid >=0.7 && <0.8,@@ -292,9 +294,9 @@ main-is: Main.hs build-depends: base >=4.21 && <5,- keiro ^>=0.21.0.0,+ keiro ^>=0.22.0.0, keiro-dsl,- shibuya-core ^>=0.10.0.1,+ shibuya-core ^>=0.12.0.0, text >=2.1 && <2.2, -- Conformance: proves the scaffolded Generated modules plus a hand-filled@@ -1102,7 +1104,7 @@ containers >=0.6 && <0.8, deepseq >=1.5 && <1.6, keiki >=0.9 && <0.10,- keiro ^>=0.21.0.0,+ keiro ^>=0.22.0.0, tasty-bench >=0.5 && <0.6, text >=2.1 && <2.2, time >=1.12 && <1.15,@@ -1418,7 +1420,7 @@ effectful-core, hasql-transaction, keiro,- kiroku-store ^>=0.11.0.0,+ kiroku-store ^>=0.12.0.0, text >=2.1 && <2.2, -- EP-4 publisher runtime conformance: the scaffolded Publisher config compiled@@ -1790,7 +1792,7 @@ keiki >=0.9 && <0.10, keiro, keiro-test-support,- kiroku-store ^>=0.11.0.0,+ kiroku-store ^>=0.12.0.0, shibuya-core, streamly-core >=0.3 && <0.4, text >=2.1 && <2.2,@@ -1832,7 +1834,7 @@ keiki >=0.9 && <0.10, keiro, keiro-test-support,- kiroku-store ^>=0.11.0.0,+ kiroku-store ^>=0.12.0.0, shibuya-core, text >=2.1 && <2.2, time >=1.12 && <1.15,@@ -1873,7 +1875,7 @@ keiki >=0.9 && <0.10, keiro, keiro-test-support,- kiroku-store ^>=0.11.0.0,+ kiroku-store ^>=0.12.0.0, shibuya-core, text >=2.1 && <2.2, time >=1.12 && <1.15,@@ -1951,8 +1953,8 @@ keiro, keiro-dsl, keiro-test-support,- kiroku-store ^>=0.11.0.0,- shibuya-core ^>=0.10.0.1,+ kiroku-store ^>=0.12.0.0,+ shibuya-core ^>=0.12.0.0, text >=2.1 && <2.2, time >=1.12 && <1.15, uuid >=1.3 && <1.4,@@ -2264,3 +2266,36 @@ keiro, text >=2.1 && <2.2, time >=1.12 && <1.15,++test-suite keiro-dsl-conformance-mapped-structural-enum-equality+ import: warnings, generated-output+ default-extensions: OverloadedLabels+ type: exitcode-stdio-1.0+ hs-source-dirs: test/conformance-mapped-structural-enum-equality+ main-is: Main.hs+ other-modules:+ Conformance.MappedStructuralEnumEquality.Bindings+ Conformance.MappedStructuralEnumEquality.Domain+ Generated.MappedStructuralEnumEquality.BehaviorSourceMap+ Generated.MappedStructuralEnumEquality.ReplayAudit+ Generated.MappedStructuralEnumEquality.ScopeGate.BehaviorContract+ Generated.MappedStructuralEnumEquality.ScopeGate.Codec+ Generated.MappedStructuralEnumEquality.ScopeGate.Domain+ Generated.MappedStructuralEnumEquality.ScopeGate.EventStream+ Generated.MappedStructuralEnumEquality.ScopeGate.Harness+ Generated.MappedStructuralEnumEquality.ScopeGate.Projection+ Generated.MappedStructuralEnumEquality.ScopeGate.Transducer+ Generated.MappedStructuralEnumEquality.Structural.Shape.Request+ Generated.MappedStructuralEnumEquality.Structural.Shape.RequiredScope+ Generated.MappedStructuralEnumEquality.StructuralConformance+ Generated.MappedStructuralEnumEquality.StructuralProjections+ MappedStructuralEnumEquality.ScopeGate.BehaviorHoles++ build-depends:+ aeson >=2.2 && <2.3,+ base >=4.21 && <5,+ containers >=0.6 && <0.8,+ deepseq >=1.4 && <1.6,+ keiki >=0.9 && <0.10,+ keiro,+ text >=2.1 && <2.2,
@@ -9,22 +9,28 @@ serialized, rendered, CLI, and runtime surfaces for review but does not prove byte compatibility. Exact byte claims live in named package-test goldens. -Inventory: 319 record-owning declarations, 1576 fields, 1528 strict fields, and 1431 fields exported through a public `Type (..)`.+Inventory: 320 record-owning declarations, 1585 fields, 1537 strict fields, and 1440 fields exported through a public `Type (..)`. | Location | Owner | Kind | Public | Current | Target | Type/strictness | Selection replacement | Review risk / observable surface | Deriving | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | `keiro-dsl/src/Keiro/Dsl/AggregateGenerationPlan.hs:14` | `TransitionLayoutEntry` | data | no | `layoutDeclarationIndex` | `declarationIndex` | `!Int` | `(.declarationIndex)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/AggregateGenerationPlan.hs:15` | `TransitionLayoutEntry` | data | no | `layoutOutgoingIndex` | `outgoingIndex` | `!Int` | `(.outgoingIndex)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/AggregateGenerationPlan.hs:16` | `TransitionLayoutEntry` | data | no | `layoutTransition` | `transition` | `!Transition` | `(.transition)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:86` | `AggregateSymbols` | data | no | `symbolNominals` | `nominals` | `!(Map Name ResolvedNominalType)` | `(.nominals)`, pattern, or construction | rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:87` | `AggregateSymbols` | data | no | `symbolVertices` | `vertices` | `!(Map Name [Name])` | `(.vertices)`, pattern, or construction | rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:88` | `AggregateSymbols` | data | no | `symbolMapped` | `mapped` | `!(Map MappedKey ResolvedMappedDecl)` | `(.mapped)`, pattern, or construction | rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:125` | `AggregateTypeError` | data | yes | `aggregateTypeErrorLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:126` | `AggregateTypeError` | data | yes | `aggregateTypeErrorUseSite` | `useSite` | `!AggregateUseSite` | `(.useSite)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:127` | `AggregateTypeError` | data | yes | `aggregateTypeErrorReason` | `reason` | `!AggregateTypeErrorReason` | `(.reason)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:261` | `AggregateHaskellSource` | data | no | `aggregateSourceBuiltin` | `builtin` | `!(Maybe Text)` | `(.builtin)`, pattern, or construction | rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:262` | `AggregateHaskellSource` | data | no | `aggregateSourceReference` | `reference` | `!(Maybe HaskellReference)` | `(.reference)`, pattern, or construction | rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:263` | `AggregateHaskellSource` | data | no | `aggregateSourceStaticImports` | `staticImports` | `!(Set Text)` | `(.staticImports)`, pattern, or construction | rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:97` | `StructuralEnumEquality` | data | yes | `key` | `key` | `!MappedKey` | `(.key)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:98` | `StructuralEnumEquality` | data | yes | `owner` | `owner` | `!HaskellSource` | `(.owner)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:99` | `StructuralEnumEquality` | data | yes | `binding` | `binding` | `!QualifiedValueName` | `(.binding)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:100` | `StructuralEnumEquality` | data | yes | `bindingVersion` | `bindingVersion` | `!BindingVersion` | `(.bindingVersion)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:101` | `StructuralEnumEquality` | data | yes | `canonical` | `canonical` | `!CanonicalTypeId` | `(.canonical)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:102` | `StructuralEnumEquality` | data | yes | `constructors` | `constructors` | `!(NE.NonEmpty (Name, Text))` | `(.constructors)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:139` | `AggregateSymbols` | data | no | `symbolNominals` | `nominals` | `!(Map Name ResolvedNominalType)` | `(.nominals)`, pattern, or construction | rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:140` | `AggregateSymbols` | data | no | `symbolVertices` | `vertices` | `!(Map Name [Name])` | `(.vertices)`, pattern, or construction | rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:141` | `AggregateSymbols` | data | no | `symbolMapped` | `mapped` | `!(Map MappedKey ResolvedMappedDecl)` | `(.mapped)`, pattern, or construction | rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:178` | `AggregateTypeError` | data | yes | `aggregateTypeErrorLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:179` | `AggregateTypeError` | data | yes | `aggregateTypeErrorUseSite` | `useSite` | `!AggregateUseSite` | `(.useSite)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:180` | `AggregateTypeError` | data | yes | `aggregateTypeErrorReason` | `reason` | `!AggregateTypeErrorReason` | `(.reason)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:317` | `AggregateHaskellSource` | data | no | `aggregateSourceBuiltin` | `builtin` | `!(Maybe Text)` | `(.builtin)`, pattern, or construction | rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:318` | `AggregateHaskellSource` | data | no | `aggregateSourceReference` | `reference` | `!(Maybe HaskellReference)` | `(.reference)`, pattern, or construction | rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/AggregateType.hs:319` | `AggregateHaskellSource` | data | no | `aggregateSourceStaticImports` | `staticImports` | `!(Set Text)` | `(.staticImports)`, pattern, or construction | rendered/canonical output | `none` | | `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:51` | `BehaviorKey` | newtype | yes | `unBehaviorKey` | `unBehaviorKey` | `Text` | explicit `unBehaviorKey` positional function | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` | | `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:92` | `BehaviorExactLocation` | data | yes | `exactSourceFile` | `sourceFile` | `!FilePath` | `(.sourceFile)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` | | `keiro-dsl/src/Keiro/Dsl/BehaviorCoverage.hs:93` | `BehaviorExactLocation` | data | yes | `exactSourceLine` | `sourceLine` | `!Int` | `(.sourceLine)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |@@ -372,39 +378,39 @@ | `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:64` | `EventOutputError` | data | yes | `declaredSourceCommand` | `declaredSourceCommand` | `!Name` | `(.declaredSourceCommand)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:65` | `EventOutputError` | data | yes | `consumingTransitionCommand` | `consumingTransitionCommand` | `!Name` | `(.consumingTransitionCommand)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/EventOutput.hs:66` | `EventOutputError` | data | yes | `emittedEventName` | `emittedEventName` | `!Name` | `(.emittedEventName)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:48` | `BindingObligation` | data | yes | `obligationMappedName` | `mappedName` | `!Name` | `(.mappedName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:49` | `BindingObligation` | data | yes | `obligationPackage` | `package` | `!Text` | `(.package)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:50` | `BindingObligation` | data | yes | `obligationModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:51` | `BindingObligation` | data | yes | `obligationSymbol` | `symbol` | `!Text` | `(.symbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:52` | `BindingObligation` | data | yes | `obligationKind` | `kind` | `!BindingObligationKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:53` | `BindingObligation` | data | yes | `obligationSignature` | `signature` | `!Text` | `(.signature)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:54` | `BindingObligation` | data | yes | `obligationUseSites` | `useSites` | `![Text]` | `(.useSites)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:55` | `BindingObligation` | data | yes | `obligationBindingVersion` | `bindingVersion` | `!(Maybe Text)` | `(.bindingVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:56` | `BindingObligation` | data | yes | `obligationCanonicalType` | `canonicalType` | `!(Maybe Text)` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:57` | `BindingObligation` | data | yes | `obligationEqualityContract` | `equalityContract` | `!(Maybe Text)` | `(.equalityContract)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:58` | `BindingObligation` | data | yes | `obligationIdDomainContract` | `idDomainContract` | `!(Maybe Text)` | `(.idDomainContract)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:59` | `BindingObligation` | data | yes | `obligationCategory` | `category` | `!Text` | `(.category)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:64` | `BindingHole` | data | yes | `holeMappedName` | `mappedName` | `!Name` | `(.mappedName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:65` | `BindingHole` | data | yes | `holeModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:66` | `BindingHole` | data | yes | `holeSymbol` | `symbol` | `!Text` | `(.symbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:67` | `BindingHole` | data | yes | `holeKind` | `kind` | `!BindingObligationKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:68` | `BindingHole` | data | yes | `holePath` | `path` | `!(Maybe Text)` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:69` | `BindingHole` | data | yes | `holeSignature` | `signature` | `!Text` | `(.signature)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:45` | `ExpressionEnvironment` | data | no | `environmentSpec` | `spec` | `!Spec` | `(.spec)`, pattern, or construction | Haskell API and runtime semantics | `none` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:46` | `ExpressionEnvironment` | data | no | `environmentAggregate` | `aggregate` | `!Aggregate` | `(.aggregate)`, pattern, or construction | Haskell API and runtime semantics | `none` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:47` | `ExpressionEnvironment` | data | no | `environmentTransition` | `transition` | `!Transition` | `(.transition)`, pattern, or construction | Haskell API and runtime semantics | `none` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:48` | `ExpressionEnvironment` | data | no | `environmentSymbols` | `symbols` | `!AggregateSymbols` | `(.symbols)`, pattern, or construction | Haskell API and runtime semantics | `none` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:49` | `ExpressionEnvironment` | data | no | `environmentTypeGraph` | `typeGraph` | `!(Maybe TypeGraph)` | `(.typeGraph)`, pattern, or construction | Haskell API and runtime semantics | `none` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:88` | `ResolvedScalarProjection` | data | yes | `scalarProjectionOwner` | `owner` | `!MappedKey` | `(.owner)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:89` | `ResolvedScalarProjection` | data | yes | `scalarProjectionPointer` | `pointer` | `!Text` | `(.pointer)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:90` | `ResolvedScalarProjection` | data | yes | `scalarProjectionFields` | `fields` | `![Name]` | `(.fields)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:91` | `ResolvedScalarProjection` | data | yes | `terminalNominal` | `terminalNominal` | `!(Maybe NominalLeaf)` | `(.terminalNominal)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:128` | `TypedScalarExpr` | data | yes | `typedScalarType` | `valueType` | `!ResolvedAggregateType` | `(.valueType)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:129` | `TypedScalarExpr` | data | yes | `typedScalarLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:130` | `TypedScalarExpr` | data | yes | `typedScalarNode` | `node` | `!TypedScalarNode` | `(.node)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:156` | `ExpressionDiagnostic` | data | yes | `expressionDiagnosticLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:157` | `ExpressionDiagnostic` | data | yes | `expressionDiagnosticCode` | `code` | `!ExpressionDiagnosticCode` | `(.code)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Expression.hs:158` | `ExpressionDiagnostic` | data | yes | `expressionDiagnosticMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:51` | `BindingObligation` | data | yes | `obligationMappedName` | `mappedName` | `!Name` | `(.mappedName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:52` | `BindingObligation` | data | yes | `obligationPackage` | `package` | `!Text` | `(.package)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:53` | `BindingObligation` | data | yes | `obligationModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:54` | `BindingObligation` | data | yes | `obligationSymbol` | `symbol` | `!Text` | `(.symbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:55` | `BindingObligation` | data | yes | `obligationKind` | `kind` | `!BindingObligationKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:56` | `BindingObligation` | data | yes | `obligationSignature` | `signature` | `!Text` | `(.signature)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:57` | `BindingObligation` | data | yes | `obligationUseSites` | `useSites` | `![Text]` | `(.useSites)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:58` | `BindingObligation` | data | yes | `obligationBindingVersion` | `bindingVersion` | `!(Maybe Text)` | `(.bindingVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:59` | `BindingObligation` | data | yes | `obligationCanonicalType` | `canonicalType` | `!(Maybe Text)` | `(.canonicalType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:60` | `BindingObligation` | data | yes | `obligationEqualityContract` | `equalityContract` | `!(Maybe Text)` | `(.equalityContract)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:61` | `BindingObligation` | data | yes | `obligationIdDomainContract` | `idDomainContract` | `!(Maybe Text)` | `(.idDomainContract)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:62` | `BindingObligation` | data | yes | `obligationCategory` | `category` | `!Text` | `(.category)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:67` | `BindingHole` | data | yes | `holeMappedName` | `mappedName` | `!Name` | `(.mappedName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:68` | `BindingHole` | data | yes | `holeModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:69` | `BindingHole` | data | yes | `holeSymbol` | `symbol` | `!Text` | `(.symbol)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:70` | `BindingHole` | data | yes | `holeKind` | `kind` | `!BindingObligationKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:71` | `BindingHole` | data | yes | `holePath` | `path` | `!(Maybe Text)` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ExplainBindings.hs:72` | `BindingHole` | data | yes | `holeSignature` | `signature` | `!Text` | `(.signature)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:46` | `ExpressionEnvironment` | data | no | `environmentSpec` | `spec` | `!Spec` | `(.spec)`, pattern, or construction | Haskell API and runtime semantics | `none` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:47` | `ExpressionEnvironment` | data | no | `environmentAggregate` | `aggregate` | `!Aggregate` | `(.aggregate)`, pattern, or construction | Haskell API and runtime semantics | `none` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:48` | `ExpressionEnvironment` | data | no | `environmentTransition` | `transition` | `!Transition` | `(.transition)`, pattern, or construction | Haskell API and runtime semantics | `none` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:49` | `ExpressionEnvironment` | data | no | `environmentSymbols` | `symbols` | `!AggregateSymbols` | `(.symbols)`, pattern, or construction | Haskell API and runtime semantics | `none` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:50` | `ExpressionEnvironment` | data | no | `environmentTypeGraph` | `typeGraph` | `!(Maybe TypeGraph)` | `(.typeGraph)`, pattern, or construction | Haskell API and runtime semantics | `none` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:89` | `ResolvedScalarProjection` | data | yes | `scalarProjectionOwner` | `owner` | `!MappedKey` | `(.owner)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:90` | `ResolvedScalarProjection` | data | yes | `scalarProjectionPointer` | `pointer` | `!Text` | `(.pointer)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:91` | `ResolvedScalarProjection` | data | yes | `scalarProjectionFields` | `fields` | `![Name]` | `(.fields)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:92` | `ResolvedScalarProjection` | data | yes | `terminalNominal` | `terminalNominal` | `!(Maybe NominalLeaf)` | `(.terminalNominal)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:129` | `TypedScalarExpr` | data | yes | `typedScalarType` | `valueType` | `!ResolvedAggregateType` | `(.valueType)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:130` | `TypedScalarExpr` | data | yes | `typedScalarLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:131` | `TypedScalarExpr` | data | yes | `typedScalarNode` | `node` | `!TypedScalarNode` | `(.node)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:157` | `ExpressionDiagnostic` | data | yes | `expressionDiagnosticLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:158` | `ExpressionDiagnostic` | data | yes | `expressionDiagnosticCode` | `code` | `!ExpressionDiagnosticCode` | `(.code)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Expression.hs:159` | `ExpressionDiagnostic` | data | yes | `expressionDiagnosticMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/FieldIdentity.hs:18` | `ResolvedFieldIdentity` | data | no | `fieldDslName` | `dslName` | `!Name` | `(.dslName)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/FieldIdentity.hs:19` | `ResolvedFieldIdentity` | data | no | `fieldSelector` | `selector` | `!Text` | `(.selector)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/FieldIdentity.hs:20` | `ResolvedFieldIdentity` | data | no | `fieldWireKey` | `wireKey` | `!Text` | `(.wireKey)`, pattern, or construction | Haskell API and runtime semantics | `deriving stock (Eq, Show)` |@@ -935,23 +941,23 @@ | `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:98` | `SourceLanguage` | data | yes | `languageVersionLoc` | `languageVersionLoc` | `!Loc` | `(.languageVersionLoc)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:120` | `SyntaxProfile` | data | no | `profileIdentifier` | `identifier` | `!Text` | `(.identifier)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` | | `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:121` | `SyntaxProfile` | data | no | `profileFeatures` | `features` | `!(Set LanguageFeature)` | `(.features)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:157` | `RuntimeSemanticsProfile` | data | no | `runtimeSemanticsIdentifier` | `identifier` | `!Text` | `(.identifier)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:158` | `RuntimeSemanticsProfile` | data | no | `runtimeSemanticsCapabilities` | `capabilities` | `!(Set RuntimeCapability)` | `(.capabilities)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:229` | `LanguageDefinition` | data | yes | `definitionVersion` | `version` | `!LanguageVersion` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:230` | `LanguageDefinition` | data | yes | `definitionPredecessor` | `predecessor` | `!(Maybe LanguageVersion)` | `(.predecessor)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:233` | `LanguageDefinition` | data | yes | `definitionBodyParser` | `bodyParser` | `!LanguageBodyParser` | `(.bodyParser)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:234` | `LanguageDefinition` | data | yes | `definitionSyntaxProfile` | `syntaxProfile` | `!SyntaxProfile` | `(.syntaxProfile)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:235` | `LanguageDefinition` | data | yes | `definitionRuntimeSemanticsProfile` | `runtimeSemanticsProfile` | `!RuntimeSemanticsProfile` | `(.runtimeSemanticsProfile)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:236` | `LanguageDefinition` | data | yes | `definitionSupport` | `support` | `!LanguageSupport` | `(.support)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:237` | `LanguageDefinition` | data | yes | `definitionMaturity` | `maturity` | `!LanguageMaturity` | `(.maturity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:480` | `SourceLanguageDiagnostic` | data | yes | `sourceLanguageErrorCode` | `errorCode` | `!SourceLanguageErrorCode` | `(.errorCode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:481` | `SourceLanguageDiagnostic` | data | yes | `sourceLanguageSource` | `source` | `!FilePath` | `(.source)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:482` | `SourceLanguageDiagnostic` | data | yes | `sourceLanguageLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:483` | `SourceLanguageDiagnostic` | data | yes | `sourceLanguageToken` | `token` | `!(Maybe Text)` | `(.token)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:484` | `SourceLanguageDiagnostic` | data | yes | `sourceLanguageDeclaredVersion` | `declaredVersion` | `!(Maybe LanguageVersion)` | `(.declaredVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:485` | `SourceLanguageDiagnostic` | data | yes | `sourceLanguageSupportedVersions` | `supportedVersions` | `!(NonEmpty LanguageVersion)` | `(.supportedVersions)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:552` | `ParsedSource` | data | yes | `parsedSourceLanguage` | `sourceLanguage` | `!SourceLanguage` | `(.sourceLanguage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:553` | `ParsedSource` | data | yes | `parsedSpec` | `spec` | `!Spec` | `(.spec)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:158` | `RuntimeSemanticsProfile` | data | no | `runtimeSemanticsIdentifier` | `identifier` | `!Text` | `(.identifier)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:159` | `RuntimeSemanticsProfile` | data | no | `runtimeSemanticsCapabilities` | `capabilities` | `!(Set RuntimeCapability)` | `(.capabilities)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show, Generic)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:232` | `LanguageDefinition` | data | yes | `definitionVersion` | `version` | `!LanguageVersion` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:233` | `LanguageDefinition` | data | yes | `definitionPredecessor` | `predecessor` | `!(Maybe LanguageVersion)` | `(.predecessor)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:236` | `LanguageDefinition` | data | yes | `definitionBodyParser` | `bodyParser` | `!LanguageBodyParser` | `(.bodyParser)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:237` | `LanguageDefinition` | data | yes | `definitionSyntaxProfile` | `syntaxProfile` | `!SyntaxProfile` | `(.syntaxProfile)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:238` | `LanguageDefinition` | data | yes | `definitionRuntimeSemanticsProfile` | `runtimeSemanticsProfile` | `!RuntimeSemanticsProfile` | `(.runtimeSemanticsProfile)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:239` | `LanguageDefinition` | data | yes | `definitionSupport` | `support` | `!LanguageSupport` | `(.support)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:240` | `LanguageDefinition` | data | yes | `definitionMaturity` | `maturity` | `!LanguageMaturity` | `(.maturity)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show, Generic)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:483` | `SourceLanguageDiagnostic` | data | yes | `sourceLanguageErrorCode` | `errorCode` | `!SourceLanguageErrorCode` | `(.errorCode)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:484` | `SourceLanguageDiagnostic` | data | yes | `sourceLanguageSource` | `source` | `!FilePath` | `(.source)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:485` | `SourceLanguageDiagnostic` | data | yes | `sourceLanguageLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:486` | `SourceLanguageDiagnostic` | data | yes | `sourceLanguageToken` | `token` | `!(Maybe Text)` | `(.token)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:487` | `SourceLanguageDiagnostic` | data | yes | `sourceLanguageDeclaredVersion` | `declaredVersion` | `!(Maybe LanguageVersion)` | `(.declaredVersion)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:488` | `SourceLanguageDiagnostic` | data | yes | `sourceLanguageSupportedVersions` | `supportedVersions` | `!(NonEmpty LanguageVersion)` | `(.supportedVersions)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:555` | `ParsedSource` | data | yes | `parsedSourceLanguage` | `sourceLanguage` | `!SourceLanguage` | `(.sourceLanguage)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/LanguageVersion.hs:556` | `ParsedSource` | data | yes | `parsedSpec` | `spec` | `!Spec` | `(.spec)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/MappedCodecPlan.hs:42` | `MappedCodecPlan` | data | yes | `consumerType` | `consumerType` | `!ConsumerTypePlan` | `(.consumerType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/MappedCodecPlan.hs:43` | `MappedCodecPlan` | data | yes | `resolvedExpression` | `resolvedExpression` | `!ResolvedTypeExpr` | `(.resolvedExpression)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/MappedCodecPlan.hs:44` | `MappedCodecPlan` | data | yes | `authority` | `authority` | `!(Set MappedAuthorityMode)` | `(.authority)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |@@ -1103,93 +1109,94 @@ | `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:194` | `RouterSelectionDiagnostic` | data | yes | `selectionDiagnosticCode` | `code` | `!RouterSelectionDiagnosticCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` | | `keiro-dsl/src/Keiro/Dsl/RouterSelection.hs:195` | `RouterSelectionDiagnostic` | data | yes | `selectionDiagnosticMessage` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show, Generic)` | | `keiro-dsl/src/Keiro/Dsl/RuntimePackage.hs:18` | `RuntimePackageName` | newtype | yes | `unRuntimePackageName` | `unRuntimePackageName` | `Text` | explicit `unRuntimePackageName` positional function | Haskell API and runtime semantics | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:159` | `ScaffoldModule` | data | yes | `modulePath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:160` | `ScaffoldModule` | data | yes | `moduleText` | `text` | `!Text` | `(.text)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:161` | `ScaffoldModule` | data | yes | `kind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:162` | `ScaffoldModule` | data | yes | `origin` | `origin` | `!Text` | `(.origin)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:170` | `ModuleRole` | data | yes | `roleOwnerKind` | `ownerKind` | `!Text` | `(.ownerKind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:171` | `ModuleRole` | data | yes | `roleOwnerName` | `ownerName` | `!Text` | `(.ownerName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:172` | `ModuleRole` | data | yes | `roleFamily` | `family` | `!Text` | `(.family)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:203` | `Context` | data | yes | `contextName` | `name` | `!Text` | `(.name)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:205` | `Context` | data | yes | `moduleRoot` | `moduleRoot` | `!Text` | `(.moduleRoot)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:207` | `Context` | data | yes | `placement` | `placement` | `!Placement` | `(.placement)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:215` | `NominalUseSite` | data | yes | `nominalUseAggregate` | `aggregate` | `!Name` | `(.aggregate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:216` | `NominalUseSite` | data | yes | `nominalUseKind` | `kind` | `!AggregateUseSite` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:224` | `NominalGenerationOwner` | data | yes | `nominalDeclaration` | `declaration` | `!ResolvedNominalType` | `(.declaration)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:225` | `NominalGenerationOwner` | data | yes | `nominalModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:226` | `NominalGenerationOwner` | data | yes | `nominalUseSites` | `useSites` | `!(Set.Set NominalUseSite)` | `(.useSites)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:227` | `NominalGenerationOwner` | data | yes | `nominalEqualityUsed` | `equalityUsed` | `!Bool` | `(.equalityUsed)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:339` | `FirewallSurface` | data | yes | `forbiddenSymbolic` | `forbiddenSymbolic` | `![Text]` | `(.forbiddenSymbolic)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:340` | `FirewallSurface` | data | yes | `forbiddenIdents` | `forbiddenIdents` | `![Text]` | `(.forbiddenIdents)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:341` | `FirewallSurface` | data | yes | `forbiddenQualifiers` | `forbiddenQualifiers` | `![Text]` | `(.forbiddenQualifiers)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:342` | `FirewallSurface` | data | yes | `forbiddenImports` | `forbiddenImports` | `![Text]` | `(.forbiddenImports)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:343` | `FirewallSurface` | data | yes | `restrictedImports` | `restrictedImports` | `![(Text, [Text])]` | `(.restrictedImports)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:494` | `Agg` | data | yes | `aContext` | `context` | `!Context` | `(.context)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:495` | `Agg` | data | yes | `aCheckedService` | `checkedService` | `!CheckedService` | `(.checkedService)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:496` | `Agg` | data | yes | `aLanguageContract` | `languageContract` | `!EffectiveLanguageContract` | `(.languageContract)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:497` | `Agg` | data | yes | `aSpec` | `spec` | `!Spec` | `(.spec)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:498` | `Agg` | data | yes | `aAggregate` | `aggregate` | `!Aggregate` | `(.aggregate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:499` | `Agg` | data | yes | `aCtxPascal` | `ctxPascal` | `!Text` | `(.ctxPascal)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:500` | `Agg` | data | yes | `aName` | `name` | `!Text` | `(.name)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:501` | `Agg` | data | yes | `aLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:502` | `Agg` | data | yes | `aVertexType` | `vertexType` | `!Text` | `(.vertexType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:503` | `Agg` | data | yes | `aIds` | `ids` | `![IdDecl]` | `(.ids)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:504` | `Agg` | data | yes | `aEnums` | `enums` | `![EnumDecl]` | `(.enums)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:505` | `Agg` | data | yes | `aRegs` | `regs` | `![ResolvedRegister]` | `(.regs)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:506` | `Agg` | data | yes | `aStates` | `states` | `![StateDecl]` | `(.states)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:507` | `Agg` | data | yes | `aCommands` | `commands` | `![ResolvedCtor]` | `(.commands)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:508` | `Agg` | data | yes | `aEvents` | `events` | `![ResolvedCtor]` | `(.events)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:509` | `Agg` | data | yes | `aDomainOutcomeTypes` | `domainOutcomeTypes` | `!(Maybe ResolvedDomainOutcomeTypes)` | `(.domainOutcomeTypes)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:511` | `Agg` | data | yes | `aGeneratedNominals` | `generatedNominals` | `![ResolvedNominalType]` | `(.generatedNominals)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:512` | `Agg` | data | yes | `aTransitions` | `transitions` | `![Transition]` | `(.transitions)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:513` | `Agg` | data | yes | `aOutputMappings` | `outputMappings` | `!(Map.Map (Int, Int) EventOutputMapping)` | `(.outputMappings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:514` | `Agg` | data | yes | `aWire` | `wire` | `!WireSpec` | `(.wire)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:515` | `Agg` | data | yes | `aProjection` | `projection` | `!(Maybe ProjectionSpec)` | `(.projection)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:516` | `Agg` | data | yes | `aSnapshot` | `snapshot` | `!(Maybe SnapshotSpec)` | `(.snapshot)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:517` | `Agg` | data | yes | `aFoldFingerprint` | `foldFingerprint` | `!Text` | `(.foldFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:518` | `Agg` | data | yes | `aReadModels` | `readModels` | `![ReadModelNode]` | `(.readModels)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:519` | `Agg` | data | yes | `aTypeGraph` | `typeGraph` | `!(Maybe TypeGraph)` | `(.typeGraph)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:520` | `Agg` | data | yes | `aSymbols` | `symbols` | `!AggregateSymbols` | `(.symbols)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:522` | `Agg` | data | yes | `aGenPrefix` | `genPrefix` | `!Text` | `(.genPrefix)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:524` | `Agg` | data | yes | `aHolePrefix` | `holePrefix` | `!Text` | `(.holePrefix)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:528` | `ResolvedDomainOutcomeTypes` | data | yes | `resolvedRejectionType` | `rejectionType` | `!ResolvedAggregateType` | `(.rejectionType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:529` | `ResolvedDomainOutcomeTypes` | data | yes | `resolvedNoOpType` | `noOpType` | `!ResolvedAggregateType` | `(.noOpType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:537` | `ResolvedRegister` | data | yes | `rrName` | `name` | `!Name` | `(.name)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:538` | `ResolvedRegister` | data | yes | `rrType` | `valueType` | `!ResolvedAggregateType` | `(.valueType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:539` | `ResolvedRegister` | data | yes | `rrInitial` | `initial` | `!ResolvedRegisterInitial` | `(.initial)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:540` | `ResolvedRegister` | data | yes | `rrLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:547` | `ResolvedCtor` | data | yes | `rcName` | `name` | `!Text` | `(.name)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:549` | `ResolvedCtor` | data | yes | `rcFields` | `fields` | `![(ResolvedFieldIdentity, ResolvedAggregateType)]` | `(.fields)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:551` | `ResolvedCtor` | data | yes | `rcVersion` | `version` | `!Int` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:553` | `ResolvedCtor` | data | yes | `rcUpcastFrom` | `upcastFrom` | `!(Maybe Int)` | `(.upcastFrom)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2602` | `RenderedShapeType` | data | no | `renderedShapeTypePrecedence` | `precedence` | `!ShapeTypePrecedence` | `(.precedence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2603` | `RenderedShapeType` | data | no | `renderedShapeTypeText` | `text` | `!Text` | `(.text)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2618` | `StructuralProjection` | data | yes | `spTag` | `tag` | `!Text` | `(.tag)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2619` | `StructuralProjection` | data | yes | `spWitness` | `witness` | `!Text` | `(.witness)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2620` | `StructuralProjection` | data | yes | `getter` | `getter` | `!Text` | `(.getter)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2621` | `StructuralProjection` | data | yes | `rawGetter` | `rawGetter` | `!(Maybe Text)` | `(.rawGetter)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2622` | `StructuralProjection` | data | yes | `spPointer` | `pointer` | `!Text` | `(.pointer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2623` | `StructuralProjection` | data | yes | `spOwner` | `owner` | `!HaskellSource` | `(.owner)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2624` | `StructuralProjection` | data | yes | `spResult` | `result` | `!Text` | `(.result)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2625` | `StructuralProjection` | data | yes | `spCanonical` | `canonical` | `!CanonicalTypeId` | `(.canonical)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2626` | `StructuralProjection` | data | yes | `spBinding` | `binding` | `!QualifiedValueName` | `(.binding)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2627` | `StructuralProjection` | data | yes | `fixtures` | `fixtures` | `!QualifiedValueName` | `(.fixtures)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2628` | `StructuralProjection` | data | yes | `terminalNominal` | `terminalNominal` | `!(Maybe NominalLeaf)` | `(.terminalNominal)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2629` | `StructuralProjection` | data | yes | `spSelectors` | `selectors` | `![(Text, Text)]` | `(.selectors)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:4483` | `ResolvedQueueField` | data | no | `resolvedQueueField` | `field` | `!WqField` | `(.field)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:4484` | `ResolvedQueueField` | data | no | `resolvedQueueExpression` | `expression` | `!(Maybe ResolvedTypeExpr)` | `(.expression)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:4485` | `ResolvedQueueField` | data | no | `resolvedQueueCodecPlan` | `codecPlan` | `!(Maybe MappedCodecPlan)` | `(.codecPlan)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8579` | `ResolvedGeneratedTransition` | data | no | `resolvedTransitionIndex` | `index` | `!Int` | `(.index)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8580` | `ResolvedGeneratedTransition` | data | no | `resolvedTransitionSource` | `source` | `!Transition` | `(.source)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8581` | `ResolvedGeneratedTransition` | data | no | `resolvedTransitionGuard` | `guard` | `!(Maybe TypedScalarExpr)` | `(.guard)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8582` | `ResolvedGeneratedTransition` | data | no | `resolvedTransitionWrites` | `writes` | `![(Name, TypedScalarExpr)]` | `(.writes)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8590` | `ResolvedSilentOutcome` | data | no | `resolvedSilentLayout` | `layout` | `!TransitionLayoutEntry` | `(.layout)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8591` | `ResolvedSilentOutcome` | data | no | `resolvedSilentKind` | `kind` | `!SilentOutcomeKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8592` | `ResolvedSilentOutcome` | data | no | `resolvedSilentReason` | `reason` | `!TypedScalarExpr` | `(.reason)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8730` | `ProjectionAlias` | data | no | `projectionAliasTarget` | `target` | `!ProjectionAliasTarget` | `(.target)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8731` | `ProjectionAlias` | data | no | `projectionAliasName` | `name` | `!Text` | `(.name)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8807` | `RenderedKeikiExpr` | data | no | `renderedKeikiText` | `text` | `!Text` | `(.text)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8808` | `RenderedKeikiExpr` | data | no | `renderedKeikiPrecedence` | `precedence` | `!Int` | `(.precedence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:162` | `ScaffoldModule` | data | yes | `modulePath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:163` | `ScaffoldModule` | data | yes | `moduleText` | `text` | `!Text` | `(.text)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:164` | `ScaffoldModule` | data | yes | `kind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:165` | `ScaffoldModule` | data | yes | `origin` | `origin` | `!Text` | `(.origin)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:173` | `ModuleRole` | data | yes | `roleOwnerKind` | `ownerKind` | `!Text` | `(.ownerKind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:174` | `ModuleRole` | data | yes | `roleOwnerName` | `ownerName` | `!Text` | `(.ownerName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:175` | `ModuleRole` | data | yes | `roleFamily` | `family` | `!Text` | `(.family)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:206` | `Context` | data | yes | `contextName` | `name` | `!Text` | `(.name)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:208` | `Context` | data | yes | `moduleRoot` | `moduleRoot` | `!Text` | `(.moduleRoot)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:210` | `Context` | data | yes | `placement` | `placement` | `!Placement` | `(.placement)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:218` | `NominalUseSite` | data | yes | `nominalUseAggregate` | `aggregate` | `!Name` | `(.aggregate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:219` | `NominalUseSite` | data | yes | `nominalUseKind` | `kind` | `!AggregateUseSite` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:227` | `NominalGenerationOwner` | data | yes | `nominalDeclaration` | `declaration` | `!ResolvedNominalType` | `(.declaration)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:228` | `NominalGenerationOwner` | data | yes | `nominalModule` | `moduleName` | `!Text` | `(.moduleName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:229` | `NominalGenerationOwner` | data | yes | `nominalUseSites` | `useSites` | `!(Set.Set NominalUseSite)` | `(.useSites)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:230` | `NominalGenerationOwner` | data | yes | `nominalEqualityUsed` | `equalityUsed` | `!Bool` | `(.equalityUsed)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:342` | `FirewallSurface` | data | yes | `forbiddenSymbolic` | `forbiddenSymbolic` | `![Text]` | `(.forbiddenSymbolic)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:343` | `FirewallSurface` | data | yes | `forbiddenIdents` | `forbiddenIdents` | `![Text]` | `(.forbiddenIdents)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:344` | `FirewallSurface` | data | yes | `forbiddenQualifiers` | `forbiddenQualifiers` | `![Text]` | `(.forbiddenQualifiers)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:345` | `FirewallSurface` | data | yes | `forbiddenImports` | `forbiddenImports` | `![Text]` | `(.forbiddenImports)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:346` | `FirewallSurface` | data | yes | `restrictedImports` | `restrictedImports` | `![(Text, [Text])]` | `(.restrictedImports)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:499` | `Agg` | data | yes | `aContext` | `context` | `!Context` | `(.context)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:500` | `Agg` | data | yes | `aCheckedService` | `checkedService` | `!CheckedService` | `(.checkedService)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:501` | `Agg` | data | yes | `aLanguageContract` | `languageContract` | `!EffectiveLanguageContract` | `(.languageContract)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:502` | `Agg` | data | yes | `aSpec` | `spec` | `!Spec` | `(.spec)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:503` | `Agg` | data | yes | `aAggregate` | `aggregate` | `!Aggregate` | `(.aggregate)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:504` | `Agg` | data | yes | `aCtxPascal` | `ctxPascal` | `!Text` | `(.ctxPascal)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:505` | `Agg` | data | yes | `aName` | `name` | `!Text` | `(.name)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:506` | `Agg` | data | yes | `aLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:507` | `Agg` | data | yes | `aVertexType` | `vertexType` | `!Text` | `(.vertexType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:508` | `Agg` | data | yes | `aIds` | `ids` | `![IdDecl]` | `(.ids)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:509` | `Agg` | data | yes | `aEnums` | `enums` | `![EnumDecl]` | `(.enums)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:510` | `Agg` | data | yes | `aRegs` | `regs` | `![ResolvedRegister]` | `(.regs)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:511` | `Agg` | data | yes | `aStates` | `states` | `![StateDecl]` | `(.states)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:512` | `Agg` | data | yes | `aCommands` | `commands` | `![ResolvedCtor]` | `(.commands)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:513` | `Agg` | data | yes | `aEvents` | `events` | `![ResolvedCtor]` | `(.events)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:514` | `Agg` | data | yes | `aDomainOutcomeTypes` | `domainOutcomeTypes` | `!(Maybe ResolvedDomainOutcomeTypes)` | `(.domainOutcomeTypes)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:516` | `Agg` | data | yes | `aGeneratedNominals` | `generatedNominals` | `![ResolvedNominalType]` | `(.generatedNominals)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:517` | `Agg` | data | yes | `aTransitions` | `transitions` | `![Transition]` | `(.transitions)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:518` | `Agg` | data | yes | `aOutputMappings` | `outputMappings` | `!(Map.Map (Int, Int) EventOutputMapping)` | `(.outputMappings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:519` | `Agg` | data | yes | `aWire` | `wire` | `!WireSpec` | `(.wire)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:520` | `Agg` | data | yes | `aProjection` | `projection` | `!(Maybe ProjectionSpec)` | `(.projection)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:521` | `Agg` | data | yes | `aSnapshot` | `snapshot` | `!(Maybe SnapshotSpec)` | `(.snapshot)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:522` | `Agg` | data | yes | `aFoldFingerprint` | `foldFingerprint` | `!Text` | `(.foldFingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:523` | `Agg` | data | yes | `aReadModels` | `readModels` | `![ReadModelNode]` | `(.readModels)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:524` | `Agg` | data | yes | `aTypeGraph` | `typeGraph` | `!(Maybe TypeGraph)` | `(.typeGraph)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:525` | `Agg` | data | yes | `aSymbols` | `symbols` | `!AggregateSymbols` | `(.symbols)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:527` | `Agg` | data | yes | `aGenPrefix` | `genPrefix` | `!Text` | `(.genPrefix)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:529` | `Agg` | data | yes | `aHolePrefix` | `holePrefix` | `!Text` | `(.holePrefix)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:533` | `ResolvedDomainOutcomeTypes` | data | yes | `resolvedRejectionType` | `rejectionType` | `!ResolvedAggregateType` | `(.rejectionType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:534` | `ResolvedDomainOutcomeTypes` | data | yes | `resolvedNoOpType` | `noOpType` | `!ResolvedAggregateType` | `(.noOpType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:542` | `ResolvedRegister` | data | yes | `rrName` | `name` | `!Name` | `(.name)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:543` | `ResolvedRegister` | data | yes | `rrType` | `valueType` | `!ResolvedAggregateType` | `(.valueType)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:544` | `ResolvedRegister` | data | yes | `rrInitial` | `initial` | `!ResolvedRegisterInitial` | `(.initial)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:545` | `ResolvedRegister` | data | yes | `rrLoc` | `loc` | `!Loc` | `(.loc)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:552` | `ResolvedCtor` | data | yes | `rcName` | `name` | `!Text` | `(.name)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:554` | `ResolvedCtor` | data | yes | `rcFields` | `fields` | `![(ResolvedFieldIdentity, ResolvedAggregateType)]` | `(.fields)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:556` | `ResolvedCtor` | data | yes | `rcVersion` | `version` | `!Int` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:558` | `ResolvedCtor` | data | yes | `rcUpcastFrom` | `upcastFrom` | `!(Maybe Int)` | `(.upcastFrom)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2607` | `RenderedShapeType` | data | no | `renderedShapeTypePrecedence` | `precedence` | `!ShapeTypePrecedence` | `(.precedence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2608` | `RenderedShapeType` | data | no | `renderedShapeTypeText` | `text` | `!Text` | `(.text)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2623` | `StructuralProjection` | data | yes | `spTag` | `tag` | `!Text` | `(.tag)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2624` | `StructuralProjection` | data | yes | `spWitness` | `witness` | `!Text` | `(.witness)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2625` | `StructuralProjection` | data | yes | `getter` | `getter` | `!Text` | `(.getter)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2626` | `StructuralProjection` | data | yes | `rawGetter` | `rawGetter` | `!(Maybe Text)` | `(.rawGetter)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2627` | `StructuralProjection` | data | yes | `spPointer` | `pointer` | `!Text` | `(.pointer)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2628` | `StructuralProjection` | data | yes | `spOwner` | `owner` | `!HaskellSource` | `(.owner)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2629` | `StructuralProjection` | data | yes | `spResult` | `result` | `!Text` | `(.result)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2630` | `StructuralProjection` | data | yes | `spCanonical` | `canonical` | `!CanonicalTypeId` | `(.canonical)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2631` | `StructuralProjection` | data | yes | `spBinding` | `binding` | `!QualifiedValueName` | `(.binding)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2632` | `StructuralProjection` | data | yes | `fixtures` | `fixtures` | `!QualifiedValueName` | `(.fixtures)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2633` | `StructuralProjection` | data | yes | `terminalNominal` | `terminalNominal` | `!(Maybe NominalLeaf)` | `(.terminalNominal)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2634` | `StructuralProjection` | data | yes | `rootEnum` | `rootEnum` | `!(Maybe (Text, [(Name, Text)]))` | `(.rootEnum)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:2635` | `StructuralProjection` | data | yes | `spSelectors` | `selectors` | `![(Text, Text)]` | `(.selectors)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:4510` | `ResolvedQueueField` | data | no | `resolvedQueueField` | `field` | `!WqField` | `(.field)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:4511` | `ResolvedQueueField` | data | no | `resolvedQueueExpression` | `expression` | `!(Maybe ResolvedTypeExpr)` | `(.expression)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:4512` | `ResolvedQueueField` | data | no | `resolvedQueueCodecPlan` | `codecPlan` | `!(Maybe MappedCodecPlan)` | `(.codecPlan)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8606` | `ResolvedGeneratedTransition` | data | no | `resolvedTransitionIndex` | `index` | `!Int` | `(.index)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8607` | `ResolvedGeneratedTransition` | data | no | `resolvedTransitionSource` | `source` | `!Transition` | `(.source)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8608` | `ResolvedGeneratedTransition` | data | no | `resolvedTransitionGuard` | `guard` | `!(Maybe TypedScalarExpr)` | `(.guard)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8609` | `ResolvedGeneratedTransition` | data | no | `resolvedTransitionWrites` | `writes` | `![(Name, TypedScalarExpr)]` | `(.writes)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8617` | `ResolvedSilentOutcome` | data | no | `resolvedSilentLayout` | `layout` | `!TransitionLayoutEntry` | `(.layout)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8618` | `ResolvedSilentOutcome` | data | no | `resolvedSilentKind` | `kind` | `!SilentOutcomeKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8619` | `ResolvedSilentOutcome` | data | no | `resolvedSilentReason` | `reason` | `!TypedScalarExpr` | `(.reason)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8774` | `ProjectionAlias` | data | no | `projectionAliasTarget` | `target` | `!ProjectionAliasTarget` | `(.target)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8775` | `ProjectionAlias` | data | no | `projectionAliasName` | `name` | `!Text` | `(.name)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8852` | `RenderedKeikiExpr` | data | no | `renderedKeikiText` | `text` | `!Text` | `(.text)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/Scaffold.hs:8853` | `RenderedKeikiExpr` | data | no | `renderedKeikiPrecedence` | `precedence` | `!Int` | `(.precedence)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:46` | `ScaffoldRecord` | data | yes | `recSpecPath` | `specPath` | `!Text` | `(.specPath)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:47` | `ScaffoldRecord` | data | yes | `recModuleRoot` | `moduleRoot` | `!Text` | `(.moduleRoot)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:48` | `ScaffoldRecord` | data | yes | `recLayout` | `layout` | `!Text` | `(.layout)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |@@ -1201,22 +1208,23 @@ | `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:54` | `ScaffoldRecord` | data | yes | `recMappings` | `mappings` | `![MappingIdentity]` | `(.mappings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:55` | `ScaffoldRecord` | data | yes | `recIdDomains` | `idDomains` | `![Text]` | `(.idDomains)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:56` | `ScaffoldRecord` | data | yes | `recNominalEqualities` | `nominalEqualities` | `![Text]` | `(.nominalEqualities)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:57` | `ScaffoldRecord` | data | yes | `recBindingObligations` | `bindingObligations` | `![BindingHole]` | `(.bindingObligations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:58` | `ScaffoldRecord` | data | yes | `recBehaviorRequirements` | `behaviorRequirements` | `![BehaviorRecordRow]` | `(.behaviorRequirements)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:59` | `ScaffoldRecord` | data | yes | `recProjectionCatalogFacts` | `projectionCatalogFacts` | `![Text]` | `(.projectionCatalogFacts)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:60` | `ScaffoldRecord` | data | yes | `recQueryContractBaseline` | `queryContractBaseline` | `!Bool` | `(.queryContractBaseline)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:61` | `ScaffoldRecord` | data | yes | `recQueryContracts` | `queryContracts` | `![QueryContractIdentity]` | `(.queryContracts)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:62` | `ScaffoldRecord` | data | yes | `recRouterSelections` | `routerSelections` | `![RouterSelectionSnapshot]` | `(.routerSelections)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:63` | `ScaffoldRecord` | data | yes | `processReactions` | `processReactions` | `![ProcessReactionRecordRow]` | `(.processReactions)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:64` | `ScaffoldRecord` | data | yes | `recSemanticImpact` | `semanticImpact` | `!(Maybe SemanticImpactSnapshot)` | `(.semanticImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:69` | `ScaffoldModuleRoleRow` | data | yes | `srrRole` | `role` | `!ModuleRole` | `(.role)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:70` | `ScaffoldModuleRoleRow` | data | yes | `srrKind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:71` | `ScaffoldModuleRoleRow` | data | yes | `srrPath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:79` | `ProcessReactionRecordRow` | data | yes | `processName` | `processName` | `!Text` | `(.processName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:80` | `ProcessReactionRecordRow` | data | yes | `verification` | `verification` | `!Text` | `(.verification)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:81` | `ProcessReactionRecordRow` | data | yes | `version` | `version` | `!(Maybe Natural)` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:82` | `ProcessReactionRecordRow` | data | yes | `fingerprint` | `fingerprint` | `!(Maybe Text)` | `(.fingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:83` | `ProcessReactionRecordRow` | data | yes | `holeObligations` | `holeObligations` | `![Text]` | `(.holeObligations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:57` | `ScaffoldRecord` | data | yes | `structuralEnumEqualities` | `structuralEnumEqualities` | `![Text]` | `(.structuralEnumEqualities)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:58` | `ScaffoldRecord` | data | yes | `recBindingObligations` | `bindingObligations` | `![BindingHole]` | `(.bindingObligations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:59` | `ScaffoldRecord` | data | yes | `recBehaviorRequirements` | `behaviorRequirements` | `![BehaviorRecordRow]` | `(.behaviorRequirements)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:60` | `ScaffoldRecord` | data | yes | `recProjectionCatalogFacts` | `projectionCatalogFacts` | `![Text]` | `(.projectionCatalogFacts)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:61` | `ScaffoldRecord` | data | yes | `recQueryContractBaseline` | `queryContractBaseline` | `!Bool` | `(.queryContractBaseline)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:62` | `ScaffoldRecord` | data | yes | `recQueryContracts` | `queryContracts` | `![QueryContractIdentity]` | `(.queryContracts)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:63` | `ScaffoldRecord` | data | yes | `recRouterSelections` | `routerSelections` | `![RouterSelectionSnapshot]` | `(.routerSelections)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:64` | `ScaffoldRecord` | data | yes | `processReactions` | `processReactions` | `![ProcessReactionRecordRow]` | `(.processReactions)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:65` | `ScaffoldRecord` | data | yes | `recSemanticImpact` | `semanticImpact` | `!(Maybe SemanticImpactSnapshot)` | `(.semanticImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:70` | `ScaffoldModuleRoleRow` | data | yes | `srrRole` | `role` | `!ModuleRole` | `(.role)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:71` | `ScaffoldModuleRoleRow` | data | yes | `srrKind` | `kind` | `!ModuleKind` | `(.kind)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:72` | `ScaffoldModuleRoleRow` | data | yes | `srrPath` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:80` | `ProcessReactionRecordRow` | data | yes | `processName` | `processName` | `!Text` | `(.processName)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:81` | `ProcessReactionRecordRow` | data | yes | `verification` | `verification` | `!Text` | `(.verification)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:82` | `ProcessReactionRecordRow` | data | yes | `version` | `version` | `!(Maybe Natural)` | `(.version)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:83` | `ProcessReactionRecordRow` | data | yes | `fingerprint` | `fingerprint` | `!(Maybe Text)` | `(.fingerprint)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/ScaffoldRecord.hs:84` | `ProcessReactionRecordRow` | data | yes | `holeObligations` | `holeObligations` | `![Text]` | `(.holeObligations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:198` | `GeneratedHaskellEditionUse` | data | yes | `path` | `path` | `!FilePath` | `(.path)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` | | `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:199` | `GeneratedHaskellEditionUse` | data | yes | `line` | `line` | `!Int` | `(.line)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` | | `keiro-dsl/src/Keiro/Dsl/ScaffoldRun.hs:200` | `GeneratedHaskellEditionUse` | data | yes | `current` | `current` | `!Text` | `(.current)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Ord, Show)` |@@ -1462,8 +1470,8 @@ | `keiro-dsl/src/Keiro/Dsl/Validate.hs:781` | `Diagnostic` | data | yes | `code` | `code` | `!DiagnosticCode` | `(.code)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/Validate.hs:782` | `Diagnostic` | data | yes | `relatedLocations` | `relatedLocations` | `![(Int, Text)]` | `(.relatedLocations)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/Validate.hs:783` | `Diagnostic` | data | yes | `message` | `message` | `!Text` | `(.message)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/Validate.hs:1725` | `NullabilityFacts` | data | no | `nfTopNull` | `topNull` | `!Bool` | `(.topNull)`, pattern, or construction | rendered/canonical output | `none` |-| `keiro-dsl/src/Keiro/Dsl/Validate.hs:1726` | `NullabilityFacts` | data | no | `nfBadOptional` | `badOptional` | `!Bool` | `(.badOptional)`, pattern, or construction | rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Validate.hs:1746` | `NullabilityFacts` | data | no | `nfTopNull` | `topNull` | `!Bool` | `(.topNull)`, pattern, or construction | rendered/canonical output | `none` |+| `keiro-dsl/src/Keiro/Dsl/Validate.hs:1747` | `NullabilityFacts` | data | no | `nfBadOptional` | `badOptional` | `!Bool` | `(.badOptional)`, pattern, or construction | rendered/canonical output | `none` | | `keiro-dsl/src/Keiro/Dsl/Workspace.hs:140` | `WorkspaceManifest` | data | yes | `wmfService` | `service` | `!Text` | `(.service)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/Workspace.hs:141` | `WorkspaceManifest` | data | yes | `wmfServiceLoc` | `serviceLoc` | `!Loc` | `(.serviceLoc)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/Workspace.hs:143` | `WorkspaceManifest` | data | yes | `wmfRuntimePackage` | `runtimePackage` | `!(Maybe RuntimePackageName)` | `(.runtimePackage)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |@@ -1537,14 +1545,15 @@ | `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:207` | `WorkspaceRecord` | data | yes | `wrMappings` | `mappings` | `![MappingIdentity]` | `(.mappings)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:208` | `WorkspaceRecord` | data | yes | `wrIdDomains` | `idDomains` | `![Text]` | `(.idDomains)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:209` | `WorkspaceRecord` | data | yes | `wrNominalEqualities` | `nominalEqualities` | `![Text]` | `(.nominalEqualities)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:210` | `WorkspaceRecord` | data | yes | `wrBindingObligations` | `bindingObligations` | `![BindingHole]` | `(.bindingObligations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:211` | `WorkspaceRecord` | data | yes | `requirements` | `requirements` | `![BehaviorRecordRow]` | `(.requirements)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:212` | `WorkspaceRecord` | data | yes | `wrProjectionCatalogFacts` | `projectionCatalogFacts` | `![Text]` | `(.projectionCatalogFacts)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:213` | `WorkspaceRecord` | data | yes | `wrQueryContractBaseline` | `queryContractBaseline` | `!Bool` | `(.queryContractBaseline)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:214` | `WorkspaceRecord` | data | yes | `wrQueryContracts` | `queryContracts` | `![QueryContractIdentity]` | `(.queryContracts)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:215` | `WorkspaceRecord` | data | yes | `wrRouterSelections` | `routerSelections` | `![RouterSelectionSnapshot]` | `(.routerSelections)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:216` | `WorkspaceRecord` | data | yes | `wrAdopted` | `adopted` | `![AdoptedRow]` | `(.adopted)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |-| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:217` | `WorkspaceRecord` | data | yes | `wrSemanticImpact` | `semanticImpact` | `!(Maybe SemanticImpactSnapshot)` | `(.semanticImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:210` | `WorkspaceRecord` | data | yes | `structuralEnumEqualities` | `structuralEnumEqualities` | `![Text]` | `(.structuralEnumEqualities)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:211` | `WorkspaceRecord` | data | yes | `wrBindingObligations` | `bindingObligations` | `![BindingHole]` | `(.bindingObligations)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:212` | `WorkspaceRecord` | data | yes | `requirements` | `requirements` | `![BehaviorRecordRow]` | `(.requirements)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:213` | `WorkspaceRecord` | data | yes | `wrProjectionCatalogFacts` | `projectionCatalogFacts` | `![Text]` | `(.projectionCatalogFacts)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:214` | `WorkspaceRecord` | data | yes | `wrQueryContractBaseline` | `queryContractBaseline` | `!Bool` | `(.queryContractBaseline)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:215` | `WorkspaceRecord` | data | yes | `wrQueryContracts` | `queryContracts` | `![QueryContractIdentity]` | `(.queryContracts)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:216` | `WorkspaceRecord` | data | yes | `wrRouterSelections` | `routerSelections` | `![RouterSelectionSnapshot]` | `(.routerSelections)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:217` | `WorkspaceRecord` | data | yes | `wrAdopted` | `adopted` | `![AdoptedRow]` | `(.adopted)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` |+| `keiro-dsl/src/Keiro/Dsl/WorkspaceRecord.hs:218` | `WorkspaceRecord` | data | yes | `wrSemanticImpact` | `semanticImpact` | `!(Maybe SemanticImpactSnapshot)` | `(.semanticImpact)`, pattern, or construction | serialized/wire review risk, rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/WorkspaceScaffold.hs:167` | `WorkspacePlan` | data | yes | `wpWorkspace` | `workspace` | `!WorkspaceSpec` | `(.workspace)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/WorkspaceScaffold.hs:168` | `WorkspacePlan` | data | yes | `wpCheckedService` | `checkedService` | `!CheckedService` | `(.checkedService)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` | | `keiro-dsl/src/Keiro/Dsl/WorkspaceScaffold.hs:169` | `WorkspacePlan` | data | yes | `wpContext` | `context` | `!Context` | `(.context)`, pattern, or construction | rendered/canonical output | `deriving stock (Eq, Show)` |
@@ -1,3 +1,5 @@+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE ViewPatterns #-} {-# OPTIONS_GHC -Werror=incomplete-patterns #-} -- | Canonical aggregate type resolution and capability policy.@@ -8,7 +10,9 @@ module Keiro.Dsl.AggregateType ( AggregateUseSite (..), AggregateCapability (..),- ResolvedAggregateType (..),+ ResolvedAggregateType (AggregateText, AggregateInt, AggregateInteger, AggregateBool, AggregateTime, AggregateNatural, AggregateNominal, AggregateVertex, AggregateStructuralEnum, AggregateMapped),+ StructuralEnumEquality (..),+ structuralEnumEqualityIdentity, AggregateSymbols, aggregateSymbols, aggregateSymbolsFromGraph,@@ -35,6 +39,9 @@ ) where +import Data.Aeson qualified as Aeson+import Data.ByteString.Lazy qualified as BL+import Data.List (sort) import Data.List.NonEmpty qualified as NE import Data.Map.Strict (Map) import Data.Map.Strict qualified as Map@@ -42,6 +49,7 @@ import Data.Set qualified as Set import Data.Text (Text) import Data.Text qualified as T+import Data.Text.Encoding qualified as TE import Data.Time.Calendar (toGregorian) import Data.Time.Clock (UTCTime (..), diffTimeToPicoseconds) import Data.Time.Format.ISO8601 (iso8601ParseM)@@ -79,9 +87,54 @@ | AggregateNatural | AggregateNominal !ResolvedNominalType | AggregateVertex !Name- | AggregateMapped !MappedKey+ | AggregateMappedValue !MappedKey+ | AggregateStructuralEnum !StructuralEnumEquality deriving stock (Eq, Ord, Show) +-- | Checked declaration evidence. Locations and fixture labels are deliberately+-- excluded from equality identity; the declared owner and total binding are not.+data StructuralEnumEquality = StructuralEnumEquality+ { key :: !MappedKey,+ owner :: !HaskellSource,+ binding :: !QualifiedValueName,+ bindingVersion :: !BindingVersion,+ canonical :: !CanonicalTypeId,+ constructors :: !(NE.NonEmpty (Name, Text))+ }+ deriving stock (Eq, Ord, Show)++structuralEnumEqualityIdentity :: StructuralEnumEquality -> Text+structuralEnumEqualityIdentity evidence =+ "keiro-dsl/structural-enum-equality/1:"+ <> TE.decodeUtf8+ ( BL.toStrict+ ( Aeson.encode+ [ unMappedKey evidence.key,+ evidence.owner.package,+ evidence.owner.moduleName,+ evidence.owner.valueType,+ unQualifiedValueName evidence.binding,+ unBindingVersion evidence.bindingVersion,+ unCanonicalTypeId evidence.canonical,+ TE.decodeUtf8 (BL.toStrict (Aeson.encode (sort (NE.toList evidence.constructors))))+ ]+ )+ )++-- | The common mapped-value view keeps codecs, initials, samples and writes on+-- the structural binding path. Equality inspects AggregateStructuralEnum first.+pattern AggregateMapped :: MappedKey -> ResolvedAggregateType+pattern AggregateMapped key <- (mappedAggregateKey -> Just key)+ where+ AggregateMapped key = AggregateMappedValue key++mappedAggregateKey :: ResolvedAggregateType -> Maybe MappedKey+mappedAggregateKey (AggregateMappedValue key) = Just key+mappedAggregateKey (AggregateStructuralEnum evidence) = Just evidence.key+mappedAggregateKey _ = Nothing++{-# COMPLETE AggregateText, AggregateInt, AggregateInteger, AggregateBool, AggregateTime, AggregateNatural, AggregateNominal, AggregateVertex, AggregateMapped #-}+ data AggregateSymbols = AggregateSymbols { nominals :: !(Map Name ResolvedNominalType), vertices :: !(Map Name [Name]),@@ -147,6 +200,8 @@ TRef name | Just nominal <- Map.lookup name ((.nominals) symbols) -> pure (AggregateNominal nominal) | Map.member name ((.vertices) symbols) -> pure (AggregateVertex name)+ | Just (ResolvedStructural declaration (REnum (entry : entries))) <- Map.lookup (MappedKey name) symbols.mapped ->+ pure (AggregateStructuralEnum (StructuralEnumEquality (MappedKey name) declaration.haskell declaration.binding declaration.bindingVersion declaration.canonical (NE.fromList (sort [(value.ctor, value.tag) | value <- entry : entries])))) | Map.member (MappedKey name) ((.mapped) symbols) -> pure (AggregateMapped (MappedKey name)) | otherwise -> Left (AggregateTypeError loc useSite (UnknownAggregateType name)) case aggregateCapability useSite resolved of@@ -175,6 +230,7 @@ aggregateCapability :: AggregateUseSite -> ResolvedAggregateType -> AggregateCapability aggregateCapability useSite resolved = case useSite of EqualityGuardUse -> case resolved of+ AggregateStructuralEnum {} -> SolverVisible AggregateMapped {} -> Unsupported AggregateNominal nominal -> case (.representation) nominal of ScalarRepresentation {} -> SolverVisible
@@ -10,6 +10,7 @@ BindingHole (..), bindingObligations, bindingObligationsForService,+ structuralEnumEqualityIdentitiesForService, bindingHoles, bindingHolesForService, renderBindingObligations,@@ -24,11 +25,13 @@ import Data.Set qualified as Set import Data.Text (Text) import Data.Text qualified as T+import Keiro.Dsl.AggregateType import Keiro.Dsl.Grammar import Keiro.Dsl.HaskellName qualified as HaskellName import Keiro.Dsl.IdDomain (idDomainContractForDeclaration, idDomainVersion)+import Keiro.Dsl.LanguageVersion (RuntimeCapability (StructuralEnumEqualityGuards), runtimeProfileHasCapability) import Keiro.Dsl.NominalType-import Keiro.Dsl.SemanticContract (CheckedService, checkedLanguageContract, checkedSpec, checkedTypeGraph, legacyCheckedService)+import Keiro.Dsl.SemanticContract (CheckedService, EffectiveLanguageContract (..), checkedLanguageContract, checkedSpec, checkedTypeGraph, legacyCheckedService) import Keiro.Dsl.TypeGraph data BindingResolutionError@@ -138,6 +141,20 @@ <*> value .:? "path" <*> value .: "signature" +-- | Declaration-scoped capability provenance. Executable binding laws remain+-- separate qualification evidence; checking cannot execute consumer functions.+structuralEnumEqualityIdentitiesForService :: CheckedService -> [Text]+structuralEnumEqualityIdentitiesForService service+ | runtimeProfileHasCapability (checkedLanguageContract service).runtimeProfile StructuralEnumEqualityGuards =+ case checkedTypeGraph service of+ Left _ -> []+ Right graph ->+ [ structuralEnumEqualityIdentity evidence+ | ResolvedStructural declaration REnum {} <- Map.elems graph.declarations,+ Right (AggregateStructuralEnum evidence) <- [resolveAggregateType (aggregateSymbolsFromGraph graph (checkedSpec service)) declaration.loc EqualityGuardUse (TRef declaration.name)]+ ]+ | otherwise = []+ bindingObligations :: Spec -> Either (NonEmpty BindingResolutionError) [BindingObligation] bindingObligations = bindingObligationsForService . legacyCheckedService @@ -147,13 +164,18 @@ nominalRegistry <- first (fmap BindingNominalTypeError) (resolveNominalTypes spec) pure . sortOn obligationSortKey $ concat- [ obligationsFor graph declaration+ [ map (withEquality graph declaration) (obligationsFor graph declaration) | ResolvedStructural declaration _ <- Map.elems ((.declarations) graph) ] <> concatMap (liftObligationsFor graph) (Map.elems graph.declarations) <> concatMap (nominalObligationsFor service graph) (Map.elems (nominalTypes nominalRegistry)) where spec = checkedSpec service+ withEquality graph declaration obligation =+ case resolveAggregateType (aggregateSymbolsFromGraph graph spec) declaration.loc EqualityGuardUse (TRef declaration.name) of+ Right (AggregateStructuralEnum evidence)+ | runtimeProfileHasCapability (checkedLanguageContract service).runtimeProfile StructuralEnumEqualityGuards -> obligation {equalityContract = Just (structuralEnumEqualityIdentity evidence)}+ _ -> obligation bindingHoles :: Spec -> Either (NonEmpty BindingResolutionError) [BindingHole] bindingHoles = bindingHolesForService . legacyCheckedService
@@ -39,6 +39,7 @@ import Data.TypeID qualified as TypeID import Keiro.Dsl.AggregateType import Keiro.Dsl.Grammar+import Keiro.Dsl.NominalType import Keiro.Dsl.TypeGraph data ExpressionEnvironment = ExpressionEnvironment@@ -558,6 +559,7 @@ LiteralQualified typeName constructor -> resolveEnumLiteral environment loc expected typeName constructor LiteralId typeName value -> resolveIdLiteral environment loc expected typeName value where+ invalid :: Text -> Either (NonEmpty ExpressionDiagnostic) a invalid message = failure loc ScalarLiteralInvalid message mismatch other syntax = failure@@ -566,24 +568,28 @@ (syntax <> " literal cannot inhabit scalar type '" <> aggregateCanonicalName other <> "'") resolveEnumLiteral :: ExpressionEnvironment -> Loc -> ExpectedScalarType -> Name -> Name -> Either (NonEmpty ExpressionDiagnostic) TypedScalarExpr-resolveEnumLiteral environment loc expected typeName constructor = case find ((== typeName) . (.name)) ((.enums) ((.spec) environment)) of- Nothing -> failure loc ScalarLiteralInvalid ("unknown enum literal type '" <> typeName <> "'")- Just declaration- | constructor `notElem` map fst ((.ctors) declaration) ->- failure loc ScalarLiteralInvalid ("enum '" <> typeName <> "' has no constructor '" <> constructor <> "'")- | otherwise -> do- resolved <- resolveDeclared typeName- requireExpected resolved- pure (literalExpr loc resolved (ScalarEnumValue typeName constructor))+resolveEnumLiteral environment loc expected typeName constructor = do+ resolved <- case resolveAggregateType environment.symbols loc WholeValueWriteUse (TRef typeName) of+ Right value -> Right value+ Left _ -> invalid ("unknown enum literal type '" <> typeName <> "'")+ constructors <- case resolved of+ AggregateStructuralEnum evidence -> Right (map fst (NE.toList evidence.constructors))+ AggregateNominal nominal -> case nominal.representation of+ EnumRepresentation entries -> Right (map fst (NE.toList entries))+ _ -> invalid ("unknown enum literal type '" <> typeName <> "'")+ _ -> invalid ("unknown enum literal type '" <> typeName <> "'")+ if constructor `elem` constructors+ then pure ()+ else invalid ("enum '" <> typeName <> "' has no constructor '" <> constructor <> "'")+ case expected of+ InferScalarType -> pure ()+ ExpectScalarType wanted+ | wanted == resolved -> pure ()+ | otherwise -> failure loc (nominalMismatchCode resolved wanted) ("enum literal has type '" <> aggregateCanonicalName resolved <> "', expected '" <> aggregateCanonicalName wanted <> "'")+ pure (literalExpr loc resolved (ScalarEnumValue typeName constructor)) where- resolveDeclared name = case resolveAggregateType ((.symbols) environment) loc WholeValueWriteUse (TRef name) of- Left _ -> failure loc ScalarLiteralInvalid ("enum type '" <> name <> "' is not available at this aggregate use")- Right resolved -> Right resolved- requireExpected resolved = case expected of- InferScalarType -> Right ()- ExpectScalarType wanted- | wanted == resolved -> Right ()- | otherwise -> failure loc (nominalMismatchCode resolved wanted) ("enum literal has type '" <> aggregateCanonicalName resolved <> "', expected '" <> aggregateCanonicalName wanted <> "'")+ invalid :: Text -> Either (NonEmpty ExpressionDiagnostic) a+ invalid message = failure loc ScalarLiteralInvalid message resolveIdLiteral :: ExpressionEnvironment -> Loc -> ExpectedScalarType -> Name -> Text -> Either (NonEmpty ExpressionDiagnostic) TypedScalarExpr resolveIdLiteral environment loc expected typeName value = case find ((== typeName) . (.name)) ((.ids) ((.spec) environment)) of
@@ -133,7 +133,7 @@ global ++ map snd directNominals ++ map snd nestedNominals- ++ ["nominal-equality-use:" <> identity | identity <- Set.toAscList (Set.fromList (map snd equalityUses))]+ ++ [(if "keiro-dsl/structural-enum-equality/" `T.isPrefixOf` identity then "structural-enum-equality-use:" else "nominal-equality-use:") <> identity | identity <- Set.toAscList (Set.fromList (map snd equalityUses))] ++ transitionSegments ++ map ruleSegment (referencedRules ((.transitions) aggregate)), aggregateSegments = global ++ [segment | (Nothing, segment) <- nominals],@@ -282,6 +282,7 @@ TypedNotEqual left _ -> equalityIdentity left _ -> [] equalityIdentity operand = case (.valueType) operand of+ AggregateStructuralEnum evidence -> [(unMappedKey evidence.key, structuralEnumEqualityIdentity evidence)] AggregateNominal nominal -> [((.name) nominal, identity) | identity <- maybeToList (nominalEqualityIdentityForService languageContract nominal)] _ -> [] children = case (.node) expression of
@@ -902,6 +902,7 @@ ++ ["step" | not (null (initialSyntheticProbeEntries a))] ++ ["validateTransducer"] ++ ["fieldWitnessAgrees" | not (null (nominalScalarHarnessTypes a)) || not (null (enforcedConsumerNominalIdHarnessTypes a))]+ ++ ["fieldWitnessGet" | harnessSamplesByProjectedKey a] ++ ["(!)" | not (null replayTransitions) && not (null ((.regs) a))] upcastAssertions = [ "(" <> tshow (upcastLabel e m) <> ", upcasts" <> (.name) e <> ")"@@ -931,6 +932,7 @@ ++ generatedNominalTypeImportsForService (aggregateCheckedService a) ((.context) a) (generatedNominalHarnessTypes a) ++ mappedHarnessImports a ++ nominalHarnessImports a+ ++ ["import " <> structuralProjectionModule ((.context) a) <> " qualified as StructuralProjections" | harnessSamplesStructuralByKey a] ++ aggregateHarnessImports a ++ T.lines (renderPlannedImports (harnessImportPlan a)) ++ goldenImports@@ -1207,33 +1209,159 @@ commandSampleValue :: Agg -> Transition -> Text -> ResolvedAggregateType -> Text commandSampleValue aggregate transition name valueType = case valueType of- AggregateNominal _+ AggregateStructuralEnum evidence+ | Just register <- structuralEnumRegisterEquality aggregate transition name evidence ->+ registerInitialSample aggregate register+ | Just declaration <- structuralEnumDeclaration aggregate evidence,+ filters@(_ : _) <- structuralEnumSampleFilters aggregate transition name evidence ->+ "(case [value | (_, value) <- NonEmpty.toList (fixtureCases " <> renderHarnessReference aggregate (harnessQualifiedValueReference declaration.fixtures) <> "), " <> T.intercalate ", " filters <> "] of value : _ -> value; [] -> error \"enum guard requires a matching supplied fixture\")"+ AggregateNominal nominal | guardEquatesCommandAndRegister transition name -> case find matchesRegister ((.regs) aggregate) of- Just register -> regInitialValueForHarness aggregate register+ Just register -> registerInitialSample aggregate register Nothing -> fallback+ | ConsumerNominal binding <- (.ownership) nominal,+ filters@(_ : _) <- consumerEnumSampleFilters aggregate transition name nominal ->+ "(case [value | fixture <- NonEmpty.toList (nominalFixtureCases " <> renderHarnessReference aggregate (harnessQualifiedValueReference ((.fixtures) binding)) <> "), let value = nominalFixtureDomain fixture, " <> T.intercalate ", " filters <> "] of value : _ -> value; [] -> error \"enum guard requires a matching supplied fixture\")" _ -> fallback where fallback = sampleValue aggregate name valueType matchesRegister register = (.name) register == name && (.valueType) register == valueType- regInitialValueForHarness owner register = case (.initial) register of- InitialNominal _ value -> renderHarnessReference owner (harnessQualifiedValueReference value)- InitialMapped _ value -> renderHarnessReference owner (harnessQualifiedValueReference value)- _ -> case (.valueType) register of- AggregateNominal nominal -> case (.ownership) nominal of- ConsumerNominal {} -> renderRegisterInitial ((.initial) register)- GeneratedNominal ->- fromMaybe- (renderRegisterInitial ((.initial) register))- (generatedIdSampleName nominal <$ generatedIdSampleHaskell owner nominal)- _ -> renderRegisterInitial ((.initial) register) +registerInitialSample :: Agg -> ResolvedRegister -> Text+registerInitialSample owner register = case (.initial) register of+ InitialNominal _ value -> renderHarnessReference owner (harnessQualifiedValueReference value)+ InitialMapped _ value -> renderHarnessReference owner (harnessQualifiedValueReference value)+ _ -> case (.valueType) register of+ AggregateNominal nominal -> case (.ownership) nominal of+ ConsumerNominal {} -> renderRegisterInitial ((.initial) register)+ GeneratedNominal ->+ fromMaybe+ (renderRegisterInitial ((.initial) register))+ (generatedIdSampleName nominal <$ generatedIdSampleHaskell owner nominal)+ _ -> renderRegisterInitial ((.initial) register)++structuralEnumDeclaration :: Agg -> StructuralEnumEquality -> Maybe StructuralDecl+structuralEnumDeclaration aggregate evidence =+ case aggregate.typeGraph >>= Map.lookup evidence.key . (.declarations) of+ Just (ResolvedStructural declaration _) -> Just declaration+ _ -> Nothing++-- | The same-named register when the guard equates the command field with it.+-- That comparison forces the register initial as the sample.+structuralEnumRegisterEquality :: Agg -> Transition -> Text -> StructuralEnumEquality -> Maybe ResolvedRegister+structuralEnumRegisterEquality aggregate transition name evidence+ | guardEquatesCommandAndRegister transition name = structuralEnumRegister aggregate name evidence+ | otherwise = Nothing++structuralEnumRegister :: Agg -> Text -> StructuralEnumEquality -> Maybe ResolvedRegister+structuralEnumRegister aggregate name evidence =+ find (\register -> (.name) register == name && (.valueType) register == AggregateStructuralEnum evidence) aggregate.regs++-- | Fixture filters for a structural enum command field that is not forced to+-- the register initial: a register inequality excludes that initial, and each+-- qualified literal compared directly with the field constrains the projected+-- wire key through the generated witness. The first supplied fixture passing+-- every filter is sampled, so fixture order is not a harness contract.+structuralEnumSampleFilters :: Agg -> Transition -> Text -> StructuralEnumEquality -> [Text]+structuralEnumSampleFilters aggregate transition name evidence =+ [ "value /= " <> registerInitialSample aggregate register+ | Just register <- [structuralEnumRegister aggregate name evidence],+ guardComparesCommandAndRegister OpNeq transition name+ ]+ <> structuralEnumLiteralFilters aggregate transition name evidence++structuralEnumLiteralFilters :: Agg -> Transition -> Text -> StructuralEnumEquality -> [Text]+structuralEnumLiteralFilters aggregate transition name evidence =+ [ "fieldWitnessGet StructuralProjections." <> witness <> " value " <> (if operator == OpEq then "==" else "/=") <> " " <> tshow wire+ | Just witness <- [aggregate.typeGraph >>= \graph -> projectionWitnessName graph evidence.key ""],+ (operator, constructor) <- commandLiteralComparisons transition name (unMappedKey evidence.key),+ Just wire <- [lookup constructor (NE.toList evidence.constructors)]+ ]++-- | Fixture filters for a consumer-bound nominal enum command field that is+-- not forced to the register initial. They mirror the structural enum path: a+-- register inequality excludes the initial, and each qualified literal+-- constrains the canonical key through the nominal equality witness.+consumerEnumSampleFilters :: Agg -> Transition -> Text -> ResolvedNominalType -> [Text]+consumerEnumSampleFilters aggregate transition name nominal =+ [ "value /= " <> registerInitialSample aggregate register+ | EnumRepresentation {} <- [(.representation) nominal],+ Just register <- [find (\register -> (.name) register == name && (.valueType) register == AggregateNominal nominal) aggregate.regs],+ guardComparesCommandAndRegister OpNeq transition name+ ]+ <> consumerEnumLiteralFilters transition name nominal++consumerEnumLiteralFilters :: Transition -> Text -> ResolvedNominalType -> [Text]+consumerEnumLiteralFilters transition name nominal =+ [ "fieldWitnessGet NominalProjections." <> nominalEqualityWitnessName nominal <> " value " <> (if operator == OpEq then "==" else "/=") <> " " <> tshow wire+ | EnumRepresentation constructors <- [(.representation) nominal],+ (operator, constructor) <- commandLiteralComparisons transition name ((.name) nominal),+ Just wire <- [lookup constructor (NE.toList constructors)]+ ]++-- | Qualified literals of one declaration compared with a command field by+-- @==@ or @!=@. Conjunctions contribute every comparison; a disjunction+-- contributes only its first alternative, since satisfying it satisfies the+-- guard.+commandLiteralComparisons :: Transition -> Text -> Name -> [(CmpOp, Name)]+commandLiteralComparisons transition name typeName = maybe [] collect transition.guard+ where+ collect = \case+ EAnd left right -> collect left <> collect right+ EOr left _ -> collect left+ ECmp operator left right+ | operator `elem` [OpEq, OpNeq] ->+ [(operator, constructor) | Just constructor <- [literalOperand left right, literalOperand right left]]+ _ -> []+ literalOperand (EPath _ CommandRoot [field]) (ELiteral _ (LiteralQualified literalType constructor))+ | field == name && literalType == typeName = Just constructor+ literalOperand _ _ = Nothing++-- | Every command field sampled by a synthetic probe.+probeCommandFields :: Agg -> [(Transition, Text, ResolvedAggregateType)]+probeCommandFields aggregate =+ [ (transition, (.dslName) identity, valueType)+ | entry <- initialSyntheticProbeEntries aggregate,+ let transition = (.transition) entry,+ command <- (.commands) aggregate,+ (.name) command == (.command) transition,+ (identity, valueType) <- (.fields) command+ ]++-- | Whether a probe samples a structural enum field by projected wire key,+-- which requires the generated structural projection witnesses.+harnessSamplesStructuralByKey :: Agg -> Bool+harnessSamplesStructuralByKey aggregate =+ or+ [ not (null (structuralEnumLiteralFilters aggregate transition name evidence))+ | (transition, name, AggregateStructuralEnum evidence) <- probeCommandFields aggregate,+ Nothing <- [structuralEnumRegisterEquality aggregate transition name evidence]+ ]++-- | Whether a probe samples a consumer nominal enum field by canonical key,+-- which requires the generated nominal projection witnesses.+harnessSamplesNominalByKey :: Agg -> Bool+harnessSamplesNominalByKey aggregate =+ or+ [ not (null (consumerEnumLiteralFilters transition name nominal))+ | (transition, name, AggregateNominal nominal) <- probeCommandFields aggregate,+ ConsumerNominal {} <- [(.ownership) nominal],+ not (guardEquatesCommandAndRegister transition name)+ ]++harnessSamplesByProjectedKey :: Agg -> Bool+harnessSamplesByProjectedKey aggregate = harnessSamplesStructuralByKey aggregate || harnessSamplesNominalByKey aggregate+ guardEquatesCommandAndRegister :: Transition -> Text -> Bool-guardEquatesCommandAndRegister transition name = maybe False containsEquality ((.guard) transition)+guardEquatesCommandAndRegister = guardComparesCommandAndRegister OpEq++guardComparesCommandAndRegister :: CmpOp -> Transition -> Text -> Bool+guardComparesCommandAndRegister operator transition name = maybe False containsEquality ((.guard) transition) where containsEquality = \case EOr left right -> containsEquality left || containsEquality right EAnd left right -> containsEquality left || containsEquality right- ECmp OpEq left right -> matchingPaths left right || matchingPaths right left+ ECmp selected left right | selected == operator -> matchingPaths left right || matchingPaths right left _ -> False matchingPaths (EPath _ CommandRoot [commandField]) (EPath _ RegisterRoot [registerField]) = commandField == name && registerField == name@@ -1300,7 +1428,7 @@ "import Keiro.Codec.IdDomain (" <> T.intercalate ", " (idDomainConstructors <> ["validateIdDomainText"]) <> ")" ] )- <> ["import " <> nominalProjectionModule ((.context) aggregate) <> " qualified as NominalProjections" | not (null (nominalScalarHarnessTypes aggregate)) || not (null enforcedIds)]+ <> ["import " <> nominalProjectionModule ((.context) aggregate) <> " qualified as NominalProjections" | not (null (nominalScalarHarnessTypes aggregate)) || not (null enforcedIds) || harnessSamplesNominalByKey aggregate] where nominals = consumerNominalHarnessTypes aggregate enforcedIds = enforcedConsumerNominalIdHarnessTypes aggregate@@ -1545,6 +1673,7 @@ "Map", "NominalProjections", "NonEmpty",+ "StructuralProjections", "T" ]
@@ -148,6 +148,7 @@ | TextSetMappings | RefinedBase16Mappings | ExplicitIdAdmissionDomains+ | StructuralEnumEqualityGuards deriving stock (Eq, Ord, Show, Enum, Bounded) -- | An immutable, explicitly named set of runtime capabilities. The@@ -191,6 +192,8 @@ -- Admission identity is declaration-scoped so unrelated candidate services -- retain their existing fold fingerprints. capabilityFoldSegment ExplicitIdAdmissionDomains = Nothing+-- Equality contributes declaration-scoped identity only at actual use sites.+capabilityFoldSegment StructuralEnumEqualityGuards = Nothing runtimeProfileFoldSegments :: RuntimeSemanticsProfile -> [Text] runtimeProfileFoldSegments RuntimeSemanticsProfile {capabilities} =@@ -358,7 +361,7 @@ runtimeProfileV5 = RuntimeSemanticsProfile "keiro-dsl/runtime-semantics/5"- (Set.insert ExplicitIdAdmissionDomains (Set.insert RefinedBase16Mappings (Set.insert TextSetMappings (Set.insert CalendarDayMappings (Set.insert BareStructuralMappings (Set.insert StructuralNominalLeaves (Set.insert DelegatedInboxRuntime ((.capabilities) runtimeProfileV4))))))))+ (Set.insert StructuralEnumEqualityGuards (Set.insert ExplicitIdAdmissionDomains (Set.insert RefinedBase16Mappings (Set.insert TextSetMappings (Set.insert CalendarDayMappings (Set.insert BareStructuralMappings (Set.insert StructuralNominalLeaves (Set.insert DelegatedInboxRuntime ((.capabilities) runtimeProfileV4))))))))) -- | Supported versions, derived from 'languageRegistry'. supportedLanguageVersions :: NonEmpty LanguageVersion
@@ -89,7 +89,10 @@ resolveAggForService, resolveAgg, nominalEqualityUsedInGeneratedExpressions,+ nominalEqualityWitnessName, projectionSpecs,+ projectionWitnessName,+ structuralProjectionModule, resolveProjectionModules, nominalProjectionModule, codecMappedDeclarations,@@ -364,6 +367,8 @@ "exactFieldWitness", "fieldWitnessGet", "fieldWitnessAgrees",+ "checkFieldProjectionOwner",+ "checkFieldProjectionKey", "applyEventsEither", "defaultValidationOptions", "step",@@ -2626,6 +2631,7 @@ binding :: !QualifiedValueName, fixtures :: !QualifiedValueName, terminalNominal :: !(Maybe NominalLeaf),+ rootEnum :: !(Maybe (Text, [(Name, Text)])), selectors :: ![(Text, Text)] } deriving stock (Eq, Show)@@ -2640,7 +2646,7 @@ projectionsForRoot :: TypeGraph -> StructuralDecl -> ResolvedMappedShape -> [StructuralProjection] projectionsForRoot graph root rootShape = case rootShape of RRecord _ _ fields -> concatMap (walkField [] []) fields- REnum {} -> []+ REnum entries -> [(mkProjection [] [] "Text" Nothing) {rootEnum = Just ("__SHAPE__." <> root.name, [(entry.ctor, entry.tag) | entry <- entries])}] RUnion {} -> [] RBare {} -> [] RRefined {} -> []@@ -2688,6 +2694,7 @@ binding = (.binding) root, fixtures = (.fixtures) root, terminalNominal = nominal,+ rootEnum = Nothing, selectors = selectors } where@@ -2771,6 +2778,7 @@ binding = spec.binding, fixtures = spec.fixtures, terminalNominal = spec.terminalNominal,+ rootEnum = spec.rootEnum, selectors = spec.selectors } where@@ -2813,10 +2821,11 @@ where moduleName = structuralProjectionModule ctx specs = map (resolveProjectionModules ctx) (projectionSpecs graph)- exactSpecs = [spec | spec <- specs, maybe False projectionLeafHasExactDomain ((.terminalNominal) spec)]+ exactSpecs = filter isExactProjection specs+ nominalExactSpecs = [spec | spec <- exactSpecs, spec.rootEnum == Nothing] hasExact = not (null exactSpecs) hasExactId = any (maybe False projectionLeafIsId . (.terminalNominal)) exactSpecs- hasExactEnum = any (maybe False projectionLeafIsEnum . (.terminalNominal)) exactSpecs+ hasExactEnum = any (\spec -> isJust spec.rootEnum || maybe False projectionLeafIsEnum spec.terminalNominal) exactSpecs hasExactConsumer = any (maybe False projectionLeafIsConsumer . (.terminalNominal)) exactSpecs resultTypes = Set.fromList (map (.result) specs) projectionExports spec = [(.witness) spec, (.getter) spec] <> maybeToList ((.rawGetter) spec)@@ -2825,7 +2834,7 @@ <> ["import Data.Time (UTCTime)" | "UTCTime" `Set.member` resultTypes] <> ["import Numeric.Natural (Natural)" | "Natural" `Set.member` resultTypes] <> ["import Data.List.NonEmpty (NonEmpty (..))" | hasExactEnum]- <> ["import Data.List.NonEmpty qualified as NonEmpty" | hasExact]+ <> ["import Data.List.NonEmpty qualified as NonEmpty" | not (null nominalExactSpecs)] <> ["import Data.KindID qualified as KindID" | any (maybe False projectionLeafIsConsumerId . (.terminalNominal)) specs] <> [ "import Keiro.Codec.IdDomain (" <> T.intercalate ", " structuralProjectionIdImports <> ")" | hasExactId@@ -2845,7 +2854,8 @@ <> ["nominalFromRepresentation" | hasExactConsumer] structuralCodecImports = ["bindingToShape"]- <> if hasExact then ["bindingFromShape", "fixtureCases"] else []+ <> ["bindingFromShape" | hasExact]+ <> ["fixtureCases" | not (null nominalExactSpecs)] keikiCoreImports = ["FieldProjection (..)", "FieldWitness"] <> (if hasExact then ["ExactFieldProjection (..)", "exactFieldWitness"] else [])@@ -2886,7 +2896,7 @@ ( Set.fromList ( [haskellTypeReference ((.owner) spec) | spec <- specs] <> [qualifiedValueReference ((.binding) spec) | spec <- specs]- <> [qualifiedValueReference ((.fixtures) spec) | spec <- exactSpecs]+ <> [qualifiedValueReference ((.fixtures) spec) | spec <- nominalExactSpecs] <> [nominalLeafTypeReference ctx leaf | spec <- specs, Just leaf <- [(.terminalNominal) spec]] <> concatMap projectionConstructorReferences exactSpecs <> concatMap (maybe [] (projectionNominalReferences ctx) . (.terminalNominal)) specs@@ -2926,7 +2936,7 @@ witnessConstructor spec | isExactProjection spec = "exactFieldWitness" | otherwise = "fieldWitness"- isExactProjection spec = maybe False projectionLeafHasExactDomain ((.terminalNominal) spec)+ isExactProjection spec = isJust spec.rootEnum || maybe False projectionLeafHasExactDomain ((.terminalNominal) spec) renderProjectionDomain spec = case (.terminalNominal) spec of Just NominalLeaf {kind = NominalIdLeaf prefix admission} -> [ projectionPatternName spec <> " :: TextPattern",@@ -2934,6 +2944,15 @@ "" ] _ -> []+ renderExactProjection spec+ | Just (shapeModule, entries) <- spec.rootEnum =+ [ "",+ "instance ExactFieldProjection " <> spec.tag <> " where",+ " fieldProjectionDomain _ = finiteProjectionDomain (" <> renderNonEmpty (map (tshow . snd) entries) <> ")",+ " reconstructFieldOwner _ value = case value of"+ ]+ <> [" " <> tshow wire <> " -> Just (bindingFromShape " <> bindingValue spec <> " " <> renderedConstructor shapeModule constructor <> ")" | (constructor, wire) <- entries]+ <> [" _ -> Nothing"] renderExactProjection spec = case (.terminalNominal) spec of Just leaf | projectionLeafHasExactDomain leaf ->@@ -2953,6 +2972,10 @@ NominalScalarLeaf {} -> error "nominal scalar reached exact structural projection rendering" bindingValue spec = renderReferenceOrDie importPlan (qualifiedValueReference ((.binding) spec)) fixturesValue spec = renderReferenceOrDie importPlan (qualifiedValueReference ((.fixtures) spec))+ renderedConstructor shapeModule constructor = renderReferenceOrDie importPlan (HaskellReference shapeModule constructor ConstructorNamespace RequireQualified)+ projectionConstructorReferences spec+ | Just (shapeModule, entries) <- spec.rootEnum =+ [HaskellReference shapeModule constructor ConstructorNamespace RequireQualified | (constructor, _) <- entries] projectionConstructorReferences spec = [ HaskellReference shapeModuleName constructor ConstructorNamespace RequireQualified | (shapeModuleName, _selector) <- (.selectors) spec,@@ -3001,6 +3024,9 @@ ) ("bindingToShape " <> renderReferenceOrDie importPlan (qualifiedValueReference ((.binding) spec)) <> " owner") ((.selectors) spec)+ renderProjectionGetter spec+ | Just (shapeModule, entries) <- spec.rootEnum =+ "case " <> renderGetter spec <> " of " <> T.intercalate "; " [renderedConstructor shapeModule constructor <> " -> " <> tshow wire | (constructor, wire) <- entries] renderProjectionGetter spec = case (.terminalNominal) spec of Nothing -> renderGetter spec Just leaf -> case (.rawGetter) spec of@@ -3117,6 +3143,7 @@ binding = spec.binding, fixtures = spec.fixtures, terminalNominal = spec.terminalNominal,+ rootEnum = fmap (\(marker, entries) -> (replaceModule marker, entries)) spec.rootEnum, selectors = [ (replaceModule marker, selector) | (marker, selector) <- spec.selectors@@ -8700,9 +8727,26 @@ TypedAnd left right -> [left, right] TypedOr left right -> [left, right] +structuralEnumLiteral :: TypedScalarExpr -> Bool+structuralEnumLiteral expression = case (expression.valueType, expression.node) of+ (AggregateStructuralEnum {}, TypedLiteral ScalarEnumValue {}) -> True+ _ -> False++-- | Consumer nominal literals rendered through 'renderKeikiLiteral', which+-- needs the binding, the representation constructors and, for IDs, KindID. A+-- literal that is a direct comparison operand lowers to its canonical key text+-- instead; planning those names for it leaves them unused, which the+-- generated-output @-Werror@ rejects. typedConsumerLiteralNominals :: TypedScalarExpr -> [ResolvedNominalType]-typedConsumerLiteralNominals expression = own <> concatMap typedConsumerLiteralNominals (typedExpressionChildren expression)+typedConsumerLiteralNominals expression = case (.node) expression of+ TypedEqual left right -> concatMap operand [left, right]+ TypedNotEqual left right -> concatMap operand [left, right]+ TypedCompare _ left right -> concatMap operand [left, right]+ _ -> own <> concatMap typedConsumerLiteralNominals (typedExpressionChildren expression) where+ operand child = case (.node) child of+ TypedLiteral {} -> []+ _ -> typedConsumerLiteralNominals child own = case ((.valueType) expression, (.node) expression) of (AggregateNominal nominal, TypedLiteral ScalarEnumValue {}) | ConsumerNominal {} <- (.ownership) nominal -> [nominal]@@ -8752,6 +8796,7 @@ TypedNotEqual left right -> mapMaybe nominalTarget [left, right] _ -> [] nominalTarget operand = case ((.valueType) operand, (.node) operand) of+ (AggregateStructuralEnum evidence, TypedRoot provenance) -> Just (StructuralProjectionAlias provenance (ResolvedScalarProjection evidence.key "" [] Nothing)) (AggregateNominal nominal, TypedRoot provenance) | nominalComparisonProjection nominal -> Just (NominalProjectionAlias nominal provenance) _ -> Nothing@@ -8874,6 +8919,10 @@ renderComparisonTerm :: HaskellImportPlan -> [ProjectionAlias] -> Agg -> Transition -> TypedScalarExpr -> RenderedKeikiExpr renderComparisonTerm importPlan aliases aggregate transition expression = case ((.valueType) expression, (.node) expression) of+ (AggregateStructuralEnum evidence, TypedRoot provenance) ->+ renderedAtom (projectionAliasFor aliases (StructuralProjectionAlias provenance (ResolvedScalarProjection evidence.key "" [] Nothing)))+ (AggregateStructuralEnum evidence, TypedLiteral (ScalarEnumValue _ constructor)) ->+ renderedAtom ("K.lit (" <> tshow (fromMaybe (error "checked structural enum constructor disappeared") (lookup constructor (NE.toList evidence.constructors))) <> " :: Text)") (AggregateNominal nominal, TypedRoot provenance) | nominalComparisonProjection nominal -> renderedAtom (projectionAliasFor aliases (NominalProjectionAlias nominal provenance))@@ -9090,6 +9139,8 @@ ScalarBoolValue value -> "K.lit " <> if value then "True" else "False" ScalarTimeValue value -> "K.lit " <> renderRegisterInitial (InitialTime value) ScalarEnumValue _typeName constructor -> case scalarType of+ AggregateStructuralEnum evidence ->+ "K.opaqueLit (case K.checkFieldProjectionKey StructuralProjections." <> fromMaybe (error "checked root enum witness disappeared") (aggregate.typeGraph >>= \graph -> projectionWitnessName graph evidence.key "") <> " " <> tshow (fromMaybe (error "checked constructor disappeared") (lookup constructor (NE.toList evidence.constructors))) <> " of Right owner -> owner; Left problem -> error (show problem))" AggregateNominal nominal -> case (.ownership) nominal of GeneratedNominal -> "K.lit " <> constructor ConsumerNominal binding ->@@ -9224,7 +9275,7 @@ projectionTargets = map (.target) projectionAliases structuralProjectionImport = [ "import " <> structuralProjectionModule ((.context) aggregate) <> " qualified as StructuralProjections"- | any isStructuralProjection projectionTargets+ | any isStructuralProjection projectionTargets || any (anyTypedExpression structuralEnumLiteral) resolvedExpressions ] generatedNominalProjectionImport = [ "import " <> generatedNominalModule ((.context) aggregate) <> " qualified as GeneratedNominals"@@ -9703,7 +9754,7 @@ projectionTargets = nub (concatMap projectionAliasTargets outcomeExpressions) structuralProjectionImports = [ "import " <> structuralProjectionModule ((.context) a) <> " qualified as StructuralProjections"- | any isStructuralProjection projectionTargets+ | any isStructuralProjection projectionTargets || any (anyTypedExpression structuralEnumLiteral) outcomeExpressions ] generatedNominalProjectionImports = [ "import " <> generatedNominalModule ((.context) a) <> " qualified as GeneratedNominals"
@@ -54,6 +54,7 @@ mappings :: ![MappingIdentity], idDomains :: ![Text], nominalEqualities :: ![Text],+ structuralEnumEqualities :: ![Text], bindingObligations :: ![BindingHole], behaviorRequirements :: ![BehaviorRecordRow], projectionCatalogFacts :: ![Text],@@ -149,6 +150,7 @@ <> map renderMapping ((.mappings) record) <> map ("id-domain " <>) ((.idDomains) record) <> map ("nominal-equality " <>) ((.nominalEqualities) record)+ <> map ("structural-enum-equality " <>) record.structuralEnumEqualities <> map renderBindingObligation ((.bindingObligations) record) <> map renderBehaviorRequirement ((.behaviorRequirements) record) <> map ("projection-catalog-fact " <>) ((.projectionCatalogFacts) record)@@ -188,6 +190,7 @@ let mappings = ordinaryMappings <> nominalMappings let idDomains = [identity | row <- rows, Just identity <- [T.stripPrefix "id-domain " row]] let nominalEqualities = [identity | row <- rows, Just identity <- [T.stripPrefix "nominal-equality " row]]+ let structuralEnumEqualities = [identity | row <- rows, Just identity <- [T.stripPrefix "structural-enum-equality " row]] bindingEntries <- traverse parseBindingObligation (filter ("binding " `T.isPrefixOf`) rows) behaviorEntries <- traverse parseBehaviorRequirement (filter ("behavior " `T.isPrefixOf`) rows) let catalogFacts = [fact | row <- rows, Just fact <- [T.stripPrefix "projection-catalog-fact " row]]@@ -196,7 +199,7 @@ routerSelections <- traverse parseRouterSelection (filter ("router-selection " `T.isPrefixOf`) rows) processReactions <- traverse parseProcessReaction (filter ("process-reaction " `T.isPrefixOf`) rows) semanticImpact <- parseSemanticImpact rows- if hasDuplicateMappingNames mappings || hasDuplicates idDomains || hasDuplicates nominalEqualities || hasDuplicateBindingObligations bindingEntries || hasDuplicateBehaviorRequirements behaviorEntries || hasDuplicates catalogFacts || hasDuplicates (map queryContractIdentityKey queryContracts) || hasDuplicates (map (.router) routerSelections) || hasDuplicates (map (.processName) processReactions)+ if hasDuplicateMappingNames mappings || hasDuplicates idDomains || hasDuplicates nominalEqualities || hasDuplicates structuralEnumEqualities || hasDuplicateBindingObligations bindingEntries || hasDuplicateBehaviorRequirements behaviorEntries || hasDuplicates catalogFacts || hasDuplicates (map queryContractIdentityKey queryContracts) || hasDuplicates (map (.router) routerSelections) || hasDuplicates (map (.processName) processReactions) then Nothing else pure@@ -212,6 +215,7 @@ mappings = mappings, idDomains = idDomains, nominalEqualities = nominalEqualities,+ structuralEnumEqualities = structuralEnumEqualities, bindingObligations = bindingEntries, behaviorRequirements = behaviorEntries, projectionCatalogFacts = catalogFacts,
@@ -99,7 +99,7 @@ renderConformancePackageReport, ) import Keiro.Dsl.CoordinationImpact (ProcessReactionDrift, ProcessReactionSnapshot (..), RouterSelectionDrift, processReactionDrift, processReactionSnapshots, renderProcessReactionDrift, renderRouterSelectionDrift, routerSelectionDrift, routerSelectionSnapshots)-import Keiro.Dsl.ExplainBindings (BindingHole (..), BindingObligationKind (..), bindingHolesForService)+import Keiro.Dsl.ExplainBindings (BindingHole (..), BindingObligationKind (..), bindingHolesForService, structuralEnumEqualityIdentitiesForService) import Keiro.Dsl.FoldFingerprint (FoldSurfaceError, aggregateFoldSurfaceForService, renderFoldSurfaceError) import Keiro.Dsl.GeneratedHaskellLanguage (idiomaticV2LabelMigrations) import Keiro.Dsl.Goldens (GoldenPayload)@@ -1714,6 +1714,7 @@ mappings = (.mappings) (consumerPlanForService service), idDomains = idDomainIdentitiesForService service, nominalEqualities = nominalEqualityIdentitiesForService service,+ structuralEnumEqualities = structuralEnumEqualityIdentitiesForService service, bindingObligations = either (const []) id (bindingHolesForService service), behaviorRequirements = currentBehavior, projectionCatalogFacts = projectionCatalogFactsForService service,
@@ -195,7 +195,7 @@ <> ["import Data.Maybe (isJust, isNothing)" | any shapeUsesMaybe structural] <> ["import Data.Proxy (Proxy (..))" | not (null structural) || not (null consumerNominals)] <> ["import Data.Text qualified as T" | not (null structural) || not (null opaque)]- <> ["import Keiki.Core (fieldWitnessAgrees)" | not (null projections)]+ <> ["import Keiki.Core (" <> T.intercalate ", " (["fieldWitnessAgrees" | any (\spec -> spec.rootEnum == Nothing) projections] <> ["checkFieldProjectionOwner, checkFieldProjectionKey" | any (\spec -> spec.rootEnum /= Nothing) projections]) <> ")" | not (null projections)] <> ["import Keiki.Shape (CanonicalTypeName (..))" | not (null structural) || not (null consumerNominals)] <> ["import Keiro.Codec.Nominal (nominalDomainRoundTrip, nominalFixtureCases, nominalFixtureDomain, nominalRepresentationRoundTrip, nominalToRepresentation)" | not (null consumerNominals)] <> ["import Keiro.Codec.Structural (" <> T.intercalate ", " structuralCodecImports <> ")" | not (null structural) || not (null opaque)]@@ -366,13 +366,13 @@ (renderPlannedReference ((.importPlan) rendering) reference) bindingAssertionDecl :: ConformanceRendering -> (StructuralDecl, ResolvedMappedShape) -> [Text]-bindingAssertionDecl rendering (declaration, _shape) =+bindingAssertionDecl rendering (declaration, shape) = [ "", valueName <> " :: [(String, Bool)]", valueName <> " =", " (\"fixture labels: " <> canonical <> "\", validFixtureLabels cases) :", " (\"canonical identity: " <> canonical <> "\", canonicalTypeName (Proxy @" <> consumerType <> ") == " <> tshow canonical <> ") :",- " concat",+ " " <> (case shape of REnum entries -> "[(\"exhaustive enum shape round-trip: " <> canonical <> "\", all (bindingShapeRoundTrip " <> binding <> ") [" <> T.intercalate ", " [shapeConstructor rendering declaration.name entry.ctor | entry <- entries] <> "])] <> "; _ -> "") <> "concat", " [ [ (\"binding domain round-trip: " <> canonical <> "/\" <> T.unpack label, bindingDomainRoundTrip " <> binding <> " value)", " , (\"binding shape round-trip: " <> canonical <> "/\" <> T.unpack label, bindingShapeRoundTrip " <> binding <> " (bindingToShape " <> binding <> " value))", " ]",@@ -688,6 +688,9 @@ ] where specs = (.projections) rendering+ assertion spec+ | Just (_, entries) <- spec.rootEnum =+ "(\"projection owner law: " <> unCanonicalTypeId spec.canonical <> "\", all (\\(_, owner) -> either (const False) (const True) (checkFieldProjectionOwner StructuralProjections." <> spec.witness <> " owner)) (NonEmpty.toList (fixtureCases " <> ownerFixtures spec <> "))),\n (\"projection key law: " <> unCanonicalTypeId spec.canonical <> "\", all (either (const False) (const True) . checkFieldProjectionKey StructuralProjections." <> spec.witness <> ") [" <> T.intercalate ", " [tshow wire | (_, wire) <- entries] <> "])" assertion spec = "(\"projection witness agreement: " <> unCanonicalTypeId ((.canonical) spec)
@@ -859,7 +859,7 @@ validateCheckedSpec :: EffectiveLanguageContract -> Either (NE.NonEmpty TypeGraphError) TypeGraph -> ProjectionSupplyAnalysis -> Spec -> [Diagnostic] validateCheckedSpec languageContract typeGraphResult supplyAnalysis spec =- sortOn (.line) (validateNames languageContract typeGraphResult spec ++ validateMapped languageContract typeGraphResult spec ++ validateNominal languageContract spec ++ validateAggregateTypes typeGraphResult spec ++ specLevelRules languageContract supplyAnalysis spec ++ concatMap (validateNode languageContract typeGraphResult supplyAnalysis spec) ((.nodes) spec))+ sortOn (.line) (validateNames languageContract typeGraphResult spec ++ validateMapped languageContract typeGraphResult spec ++ validateNominal languageContract spec ++ validateAggregateTypes languageContract typeGraphResult spec ++ specLevelRules languageContract supplyAnalysis spec ++ concatMap (validateNode languageContract typeGraphResult supplyAnalysis spec) ((.nodes) spec)) -- | Rules added before language 4 ships consult the effective semantic -- contract, not the numeric source spelling. Versions 1 through 3 retain their@@ -917,8 +917,8 @@ problem loc diagnosticCode detail = mkErr (locLine loc) diagnosticCode (detail <> "; GHC and conformance validate consumer function bodies") -- | Resolve every direct aggregate type once at the earliest semantic gate.-validateAggregateTypes :: Either (NE.NonEmpty TypeGraphError) TypeGraph -> Spec -> [Diagnostic]-validateAggregateTypes typeGraphResult spec = case Nominal.resolveNominalTypes spec of+validateAggregateTypes :: EffectiveLanguageContract -> Either (NE.NonEmpty TypeGraphError) TypeGraph -> Spec -> [Diagnostic]+validateAggregateTypes languageContract typeGraphResult spec = case Nominal.resolveNominalTypes spec of Left _ -> [] Right _ -> concatMap aggregateRules aggregates where@@ -959,8 +959,25 @@ "aggregate '" <> (.name) aggregate <> "' declares unknown or unsupported " <> label <> " outcome type '" <> name <> "'" ] - transitionRules aggregate transition = ownershipRules ++ outcomeExpressionRules+ transitionRules aggregate transition = capabilityRules ++ ownershipRules ++ outcomeExpressionRules where+ capabilityRules+ | runtimeProfileHasCapability languageContract.runtimeProfile StructuralEnumEqualityGuards = []+ | otherwise =+ [ mkErr (locLine expression.loc) AggregateGuardCapabilityUnsupported "mapped structural enum equality and constructors require Language 6"+ | Right expression <- maybe [] (pure . resolveGuardExpr environment) transition.guard <> map (uncurry (resolveWriteExpr environment)) transition.writes,+ usesStructuralEnumEquality expression+ ]+ usesStructuralEnumEquality expression = case expression.node of+ TypedEqual left right -> isStructuralEnum left.valueType || usesStructuralEnumEquality left || usesStructuralEnumEquality right+ TypedNotEqual left right -> isStructuralEnum left.valueType || usesStructuralEnumEquality left || usesStructuralEnumEquality right+ TypedLiteral ScalarEnumValue {} -> isStructuralEnum expression.valueType+ TypedMappedLift _ _ child -> usesStructuralEnumEquality child+ TypedAnd left right -> usesStructuralEnumEquality left || usesStructuralEnumEquality right+ TypedOr left right -> usesStructuralEnumEquality left || usesStructuralEnumEquality right+ _ -> False+ isStructuralEnum AggregateStructuralEnum {} = True+ isStructuralEnum _ = False environment = expressionEnvironmentFromGraphResult typeGraphResult spec aggregate transition ownershipRules = case (.implementation) transition of LegacyHoleImplementation ->@@ -986,7 +1003,11 @@ Left _ -> [] Right expected -> case resolveScalarExpr environment (ExpectScalarType expected) expression of- Right _ -> []+ Right typed+ | not (runtimeProfileHasCapability languageContract.runtimeProfile StructuralEnumEqualityGuards),+ usesStructuralEnumEquality typed ->+ [mkErr (locLine typed.loc) AggregateGuardCapabilityUnsupported "mapped structural enum equality and constructors require Language 6"]+ | otherwise -> [] Left diagnostics -> map (outcomeExpressionDiagnostic label . id) (NE.toList diagnostics) where declaration = case (.domainOutcomeTypes) aggregate of
@@ -207,6 +207,7 @@ mappings :: ![MappingIdentity], idDomains :: ![Text], nominalEqualities :: ![Text],+ structuralEnumEqualities :: ![Text], bindingObligations :: ![BindingHole], requirements :: ![BehaviorRecordRow], projectionCatalogFacts :: ![Text],@@ -239,6 +240,7 @@ <> [mappingRowPrefix mapping <> encodeRow mapping | mapping <- (.mappings) record] <> ["id-domain " <> identity | identity <- (.idDomains) record] <> ["nominal-equality " <> identity | identity <- (.nominalEqualities) record]+ <> ["structural-enum-equality " <> identity | identity <- record.structuralEnumEqualities] <> ["binding " <> encodeRow obligation | obligation <- (.bindingObligations) record] <> ["behavior " <> encodeRow requirement | requirement <- (.requirements) record] <> ["projection-catalog-fact " <> fact | fact <- (.projectionCatalogFacts) record]@@ -276,6 +278,7 @@ let mappings = ordinaryMappings <> nominalMappings let idDomains = [identity | row <- rows, Just identity <- [T.stripPrefix "id-domain " row]] let nominalEqualities = [identity | row <- rows, Just identity <- [T.stripPrefix "nominal-equality " row]]+ let structuralEnumEqualities = [identity | row <- rows, Just identity <- [T.stripPrefix "structural-enum-equality " row]] obligations <- traverse (decodeRow "binding ") (rowsWith "binding " rows) requirements <- traverse (decodeRow "behavior ") (rowsWith "behavior " rows) let catalogFacts = [fact | row <- rows, Just fact <- [T.stripPrefix "projection-catalog-fact " row]]@@ -290,6 +293,7 @@ || hasDuplicates (map (.specName) mappings) || hasDuplicates idDomains || hasDuplicates nominalEqualities+ || hasDuplicates structuralEnumEqualities || hasDuplicates (map bindingKey obligations) || hasDuplicates (map (.key) requirements) || hasDuplicates catalogFacts@@ -312,6 +316,7 @@ mappings = mappings, idDomains = idDomains, nominalEqualities = nominalEqualities,+ structuralEnumEqualities = structuralEnumEqualities, bindingObligations = obligations, requirements = requirements, projectionCatalogFacts = catalogFacts,
@@ -70,7 +70,7 @@ renderConformancePackageReport, ) import Keiro.Dsl.CoordinationImpact (RouterSelectionDrift, renderRouterSelectionDrift, routerSelectionDrift, routerSelectionSnapshots)-import Keiro.Dsl.ExplainBindings (BindingHole (..), bindingHolesForService)+import Keiro.Dsl.ExplainBindings (BindingHole (..), bindingHolesForService, structuralEnumEqualityIdentitiesForService) import Keiro.Dsl.Goldens (GoldenPayload) import Keiro.Dsl.Grammar import Keiro.Dsl.Harness (harnessForServiceWithGoldens, harnessProcessForService, harnessReadModelForService, harnessRouterForService, harnessWorkflow)@@ -720,6 +720,7 @@ mappings = (.mappings) (consumerPlanForService checkedService), idDomains = idDomainIdentitiesForService checkedService, nominalEqualities = nominalEqualityIdentitiesForService checkedService,+ structuralEnumEqualities = structuralEnumEqualityIdentitiesForService checkedService, bindingObligations = either (const []) id (bindingHolesForService checkedService), requirements = workspaceBehaviorRows checkedService workspace, projectionCatalogFacts = projectionCatalogFactsForService checkedService,
@@ -0,0 +1,60 @@+module Keiro.Dsl.ConsumerEnumLiterals (consumerEnumLiteralsSpec) where++import Data.Text (Text)+import Data.Text qualified as T+import Data.Text.IO qualified as TIO+import Keiro.Dsl.Grammar hiding (Spec)+import Keiro.Dsl.Parser+import Keiro.Dsl.Scaffold+import Keiro.Dsl.ScaffoldRun (scaffoldServiceModules)+import Keiro.Dsl.SemanticContract+import Keiro.Dsl.Validate+import Test.Hspec++consumerEnumLiteralsSpec :: Spec+consumerEnumLiteralsSpec = describe "consumer nominal enum literals" $ do+ it "plans binding and representation imports only for literals outside comparisons" $ do+ guarded <- modulesFor (replaceGuard "cmd.orderId == reg.orderId && cmd.status == OrderStatus.Draft")+ let transducer = moduleText "NominalLedger/Transducer.hs" guarded+ transducer `shouldSatisfy` T.isInfixOf "commandStatus .== K.lit (\"draft\" :: Text)"+ transducer `shouldSatisfy` (not . T.isInfixOf "nominalFromRepresentation")+ transducer `shouldSatisfy` (not . T.isInfixOf "Shape.OrderStatus")+ transducer `shouldSatisfy` (not . T.isInfixOf "qualified as Bindings")+ written <- modulesFor (T.replace "write status := cmd.status" "write status := OrderStatus.Submitted")+ let writer = moduleText "NominalLedger/Transducer.hs" written+ writer `shouldSatisfy` T.isInfixOf "import Keiro.Codec.Nominal (nominalFromRepresentation)"+ writer `shouldSatisfy` T.isInfixOf "K.lit (nominalFromRepresentation Bindings.orderStatusBinding ShapeOrderStatus.Submitted)"+ it "samples literal-guarded consumer enum commands by canonical key instead of fixture order" $ do+ let sampled filters = "(case [value | fixture <- NonEmpty.toList (nominalFixtureCases Bindings.orderStatusFixtures), let value = nominalFixtureDomain fixture, " <> filters <> "] of value : _ -> value; [] -> error \"enum guard requires a matching supplied fixture\")"+ harnessFor guardText = moduleText "NominalLedger/Harness.hs" <$> modulesFor (replaceGuard guardText)+ equality <- harnessFor "cmd.orderId == reg.orderId && cmd.status == OrderStatus.Draft"+ equality `shouldSatisfy` T.isInfixOf "fieldWitnessGet"+ equality `shouldSatisfy` T.isInfixOf "qualified as NominalProjections"+ equality `shouldSatisfy` T.isInfixOf ("(RecordNominals (RecordNominalsData Bindings.initialOrderId " <> sampled "fieldWitnessGet NominalProjections.orderStatusEqualityWitness value == \"draft\"")+ inequality <- harnessFor "cmd.orderId == reg.orderId && cmd.status != reg.status"+ inequality `shouldSatisfy` T.isInfixOf ("(RecordNominals (RecordNominalsData Bindings.initialOrderId " <> sampled "value /= Bindings.initialOrderStatus")+ combined <- harnessFor "cmd.orderId == reg.orderId && cmd.status != reg.status && cmd.status != OrderStatus.Submitted"+ combined `shouldSatisfy` T.isInfixOf ("(RecordNominals (RecordNominalsData Bindings.initialOrderId " <> sampled "value /= Bindings.initialOrderStatus, fieldWitnessGet NominalProjections.orderStatusEqualityWitness value /= \"submitted\"")+ original <- moduleText "NominalLedger/Harness.hs" <$> modulesFor id+ original `shouldSatisfy` T.isInfixOf "(RecordNominals (RecordNominalsData Bindings.initialOrderId Bindings.initialOrderStatus "+ original `shouldSatisfy` (not . T.isInfixOf "fieldWitnessGet")++fixture :: IO Text+fixture = TIO.readFile "test/fixtures/nominal-scalars.keiro"++modulesFor :: (Text -> Text) -> IO [ScaffoldModule]+modulesFor transform = do+ source <- fixture+ service <- case parseSource "nominal-scalars.keiro" (transform source) of+ Left failure -> expectationFailure (T.unpack (renderParseFailure failure)) >> fail "parse failed"+ Right parsed -> pure (checkedSource parsed)+ filter ((== Error) . (.severity)) (validateService service) `shouldBe` []+ let modules = scaffoldServiceModules (defaultContext "nominal-scalars") service+ firewallBreaches modules `shouldBe` []+ pure modules++replaceGuard :: Text -> Text -> Text+replaceGuard guardText = T.replace "guard cmd.orderId == reg.orderId && cmd.status == reg.status" ("guard " <> guardText)++moduleText :: Text -> [ScaffoldModule] -> Text+moduleText suffix modules = T.unlines [value.text | value <- modules, suffix `T.isSuffixOf` T.pack value.path]
@@ -33,7 +33,7 @@ [GeneratedIdDomainTypeIdV7, NominalEqualityV2], [GeneratedIdDomainTypeIdV7, NominalEqualityV2, ContractIdDomainTypeIdV7, StrictSpecSurfaceValidation], [GeneratedIdDomainTypeIdV7, NominalEqualityV2, ContractIdDomainTypeIdV7, StrictSpecSurfaceValidation, ProjectionCatalogRuntime, TypedDomainCommandOutcomes, SeparatedProjectionQueryPolicy],- [GeneratedIdDomainTypeIdV7, NominalEqualityV2, ContractIdDomainTypeIdV7, StrictSpecSurfaceValidation, ProjectionCatalogRuntime, TypedDomainCommandOutcomes, SeparatedProjectionQueryPolicy, DelegatedInboxRuntime, StructuralNominalLeaves, BareStructuralMappings, CalendarDayMappings, TextSetMappings, RefinedBase16Mappings, ExplicitIdAdmissionDomains]+ [GeneratedIdDomainTypeIdV7, NominalEqualityV2, ContractIdDomainTypeIdV7, StrictSpecSurfaceValidation, ProjectionCatalogRuntime, TypedDomainCommandOutcomes, SeparatedProjectionQueryPolicy, DelegatedInboxRuntime, StructuralNominalLeaves, BareStructuralMappings, CalendarDayMappings, TextSetMappings, RefinedBase16Mappings, ExplicitIdAdmissionDomains, StructuralEnumEqualityGuards] ] map (runtimeProfileFoldSegments . (.runtimeSemanticsProfile)) (NE.toList languageRegistry) `shouldBe` [ [],
@@ -0,0 +1,226 @@+module Keiro.Dsl.MappedStructuralEnumEquality (mappedStructuralEnumEqualitySpec) where++import Control.Monad (forM_)+import Data.List.NonEmpty qualified as NE+import Data.Text (Text)+import Data.Text qualified as T+import Data.Text.IO qualified as TIO+import Keiro.Dsl.AggregateType+import Keiro.Dsl.Diff qualified as Diff+import Keiro.Dsl.ExplainBindings+import Keiro.Dsl.Expression+import Keiro.Dsl.FoldFingerprint+import Keiro.Dsl.Grammar hiding (Spec)+import Keiro.Dsl.LanguageVersion+import Keiro.Dsl.Parser+import Keiro.Dsl.ReplayImpact+import Keiro.Dsl.Scaffold+import Keiro.Dsl.ScaffoldRecord+import Keiro.Dsl.ScaffoldRun (scaffoldServiceModules)+import Keiro.Dsl.SemanticContract+import Keiro.Dsl.TypeGraph (MappedKey (..))+import Keiro.Dsl.Validate+import Keiro.Dsl.WorkspaceRecord qualified as WR+import Test.Hspec++mappedStructuralEnumEqualitySpec :: Spec+mappedStructuralEnumEqualitySpec = describe "mapped structural enum equality" $ do+ it "admits only Language 6 and adds no global fold segment" $ do+ let definitions = NE.toList languageRegistry+ [definition.version | definition <- definitions, runtimeProfileHasCapability definition.runtimeSemanticsProfile StructuralEnumEqualityGuards] `shouldBe` [currentAuthoringLanguageVersion]+ capabilityFoldSegment StructuralEnumEqualityGuards `shouldBe` Nothing+ source <- fixture+ forM_ ["4", "5"] $ \version -> do+ service <- parseChecked (T.replace "language keiro-dsl 6" ("language keiro-dsl " <> version) source)+ codes service `shouldContain` [AggregateGuardCapabilityUnsupported]+ wrapped <- parseChecked (T.replace "language keiro-dsl 6" ("language keiro-dsl " <> version) (replaceGuard "(cmd.requiredScope == reg.requiredScope) == true" source))+ codes wrapped `shouldContain` [AggregateGuardCapabilityUnsupported]+ literalWrite <- parseChecked (T.replace "language keiro-dsl 6" ("language keiro-dsl " <> version) (T.unlines (filter (not . T.isPrefixOf " guard ") (T.lines source))))+ codes literalWrite `shouldContain` [AggregateGuardCapabilityUnsupported]+ it "checks both operators with roots, qualified constructors on either side, and self comparisons" $ do+ source <- fixture+ forM_ [left <> " " <> operator <> " " <> right | operator <- ["==", "!="], (left, right) <- [("cmd.requiredScope", "reg.requiredScope"), ("cmd.requiredScope", "RequiredScope.PipelineScope"), ("RequiredScope.DiagnosticScope", "reg.requiredScope"), ("cmd.requiredScope", "cmd.requiredScope"), ("RequiredScope.PipelineScope", "RequiredScope.DiagnosticScope")]] $ \guardText -> do+ service <- parseChecked (replaceGuard guardText source)+ errors service `shouldBe` []+ let modules = scaffoldServiceModules (defaultContext "mapped-structural-enum-equality") service+ firewallBreaches modules `shouldBe` []+ it "rejects invalid operands and operations at the expression" $ do+ source <- fixture+ forM_+ [ ("cmd.requiredScope == \"pipeline\"", AggregateExpressionOperandTypeMismatch),+ ("cmd.requiredScope < reg.requiredScope", AggregateExpressionOperatorUnsupported),+ ("cmd.requiredScope + reg.requiredScope == cmd.requiredScope", AggregateExpressionOperatorUnsupported),+ ("cmd.requiredScope == RequiredScope.Unknown", AggregateExpressionLiteralInvalid),+ ("cmd.requiredScope == PipelineScope", AggregateExpressionRootUnknown),+ ("cmd.request == cmd.request", AggregateExpressionOperatorUnsupported)+ ]+ $ \(guardText, code) -> do+ service <- parseChecked (replaceGuard guardText source)+ codes service `shouldContain` [code]+ it "separates structural and nominal enums despite identical strings" $ do+ source <- fixture+ service <- parseChecked (replaceGuard "cmd.requiredScope == NominalScope.Pipeline" (T.replace "context mapped-structural-enum-equality" "context mapped-structural-enum-equality\nenum NominalScope { Pipeline=pipeline Diagnostic=diagnostic }" source))+ codes service `shouldContain` [AggregateGuardTypeMismatch]+ it "keeps declaration identity even when two enums share their Haskell owner" $ do+ source <- fixture+ let (_, enumAndRest) = T.breakOn "mapped structural enum RequiredScope" source+ (enumSource, _) = T.breakOn "mapped structural record Request" enumAndRest+ second sameOwner = T.replace "type=OtherScope" (if sameOwner then "type=RequiredScope" else "type=OtherScope") (T.replace "RequiredScope" "OtherScope" enumSource)+ forM_ [False, True] $ \sameOwner -> do+ service <- parseChecked (replaceGuard "cmd.requiredScope == cmd.otherScope" (T.replace "mapped structural record Request" (second sameOwner <> "mapped structural record Request") (T.replace "command Match {" "command Match { otherScope:OtherScope" source)))+ let spec = checkedSpec service+ owner = aggregate service+ transition = head owner.transitions+ Just syntax = transition.guard+ case resolveGuardExpr (expressionEnvironment spec owner transition) syntax of+ Left diagnostics -> map (.code) (NE.toList diagnostics) `shouldContain` [ScalarOperandTypeMismatch]+ Right _ -> expectationFailure "cross-declaration equality was accepted"+ it "retains mapped codecs, samples, initials and writes while rejecting other mapped shapes" $ do+ source <- fixture+ service <- parseChecked source+ let symbols = aggregateSymbols (checkedSpec service)+ case resolveAggregateType symbols noLoc CommandFieldUse (TRef "RequiredScope") of+ Right resolved@(AggregateStructuralEnum _) -> do+ case resolved of AggregateMapped key -> key `shouldBe` MappedKey "RequiredScope"; _ -> expectationFailure "lost mapped-value view"+ aggregateCapability EqualityGuardUse resolved `shouldBe` SolverVisible+ aggregateCapability OrderingGuardUse resolved `shouldBe` Unsupported+ aggregateCapability CommandFieldUse resolved `shouldBe` OpaqueOnly+ other -> expectationFailure (show other)+ forM_+ [ T.replace "mapped structural enum RequiredScope" "mapped structural union RequiredScope" . T.replace "wire string { PipelineScope as \"pipeline\" DiagnosticScope as \"diagnostic\" }" "wire tagged-object tag=\"tag\" contents=\"contents\" unknown-fields=reject { PipelineScope as \"pipeline\" DiagnosticScope as \"diagnostic\" }",+ T.replace "mapped structural enum RequiredScope" "mapped opaque RequiredScope" . T.replace " wire string { PipelineScope as \"pipeline\" DiagnosticScope as \"diagnostic\" }" " codec = \"scope.json\"\n version = \"1\"" . T.replace " binding = \"Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeBinding\"\n" "" . T.replace " binding-version = \"1\"\n" "" . T.replace " canonical-type = \"conformance.RequiredScope.v1\"\n" ""+ ]+ $ \transform -> do+ other <- parseChecked (transform source)+ codes other `shouldContain` [AggregateExpressionOperatorUnsupported]+ it "rejects incomplete binding metadata statically" $ do+ source <- fixture+ incomplete <- parseChecked (T.replace " binding = \"Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeBinding\"\n" "" source)+ codes incomplete `shouldContain` [MappedMissingIngredient]+ it "emits finite root witnesses and exhaustive binding laws without fixture-selected reconstruction" $ do+ source <- fixture+ service <- parseChecked source+ let modules = scaffoldServiceModules (defaultContext "mapped-structural-enum-equality") service+ projections = moduleText "StructuralProjections.hs" modules+ conformance = moduleText "StructuralConformance.hs" modules+ projections `shouldSatisfy` T.isInfixOf "finiteProjectionDomain"+ projections `shouldSatisfy` T.isInfixOf "bindingFromShape"+ projections `shouldSatisfy` (not . T.isInfixOf "NonEmpty.head")+ conformance `shouldSatisfy` T.isInfixOf "exhaustive enum shape round-trip"+ conformance `shouldSatisfy` T.isInfixOf "checkFieldProjectionOwner"+ conformance `shouldSatisfy` T.isInfixOf "checkFieldProjectionKey"+ it "records a distinct equality row and explains its total binding obligation" $ do+ source <- fixture+ service <- parseChecked source+ let identities = structuralEnumEqualityIdentitiesForService service+ identities `shouldSatisfy` (not . null)+ case bindingObligationsForService service of+ Left failure -> expectationFailure (show failure)+ Right obligations -> do+ let contracts = [identity | obligation <- obligations, Just identity <- [obligation.equalityContract]]+ contracts `shouldSatisfy` (not . null)+ contracts `shouldSatisfy` all (`elem` identities)+ contents <- TIO.readFile "test/conformance-mapped-structural-enum-equality/keiro-dsl-ledger.context.mapped-structural-enum-equality.txt"+ case parseRecord contents of+ Nothing -> expectationFailure "scaffold record did not parse"+ Just record -> do+ let updated = record {structuralEnumEqualities = identities}+ parseRecord (renderRecord updated) `shouldBe` Just updated+ parseRecord (renderRecord updated <> "structural-enum-equality " <> NE.head (NE.fromList identities) <> "\n") `shouldBe` Nothing+ renderRecord updated `shouldSatisfy` T.isInfixOf "structural-enum-equality keiro-dsl/structural-enum-equality/1:"+ workspaceContents <- TIO.readFile "test/conformance-workspace-nominals/keiro-dsl-ledger.workspace.workspace-nominal-proof.txt"+ case WR.parseWorkspaceRecord workspaceContents of+ Nothing -> expectationFailure "workspace ledger did not parse"+ Just record -> do+ let updated = record {WR.structuralEnumEqualities = identities}+ WR.parseWorkspaceRecord (WR.renderWorkspaceRecord updated) `shouldBe` Just updated+ it "scopes fold identity to equality use and keeps fixture names and order out of it" $ do+ source <- fixture+ service <- parseChecked source+ let fingerprint value = either (error . show) id (aggregateFoldFingerprintForService value (aggregate value))+ surface value = either (error . show) id (aggregateFoldSurfaceForService value (aggregate value))+ surface service `shouldSatisfy` T.isInfixOf "structural-enum-equality-use:keiro-dsl/structural-enum-equality/1:"+ forM_ [T.replace "Bindings.requiredScopeFixtures" "Bindings.changedFixtures", T.replace "PipelineScope as \"pipeline\" DiagnosticScope as \"diagnostic\"" "DiagnosticScope as \"diagnostic\" PipelineScope as \"pipeline\""] $ \transform -> do+ same <- parseChecked (transform source)+ fingerprint same `shouldBe` fingerprint service+ replayImpactServices service same `shouldBe` Right ReplayNeutral+ forM_ [T.replace "binding-version = \"1\"" "binding-version = \"2\"", T.replace "\"pipeline\"" "\"pipeline-v2\"", replaceGuard "cmd.requiredScope != reg.requiredScope", T.replace "Bindings.requiredScopeBinding" "Bindings.changedBinding", T.replace "conformance.RequiredScope.v1" "conformance.RequiredScope.v2"] $ \transform -> do+ changed <- parseChecked (transform source)+ fingerprint changed `shouldNotBe` fingerprint service+ replayImpactServices service changed `shouldSatisfy` (/= Right ReplayNeutral)+ Diff.diffServices service changed `shouldSatisfy` either (const False) (not . null)+ noEquality <- parseChecked (stripGuards source)+ surface noEquality `shouldSatisfy` (not . T.isInfixOf "structural-enum-equality-use:")+ oldLanguage <- parseChecked (T.replace "language keiro-dsl 6" "language keiro-dsl 5" (stripGuards source))+ errors oldLanguage `shouldBe` []+ fingerprint noEquality `shouldBe` fingerprint oldLanguage+ surface noEquality `shouldBe` surface oldLanguage+ noGuardDiff <- pure (Diff.diffServices noEquality service)+ noGuardDiff `shouldSatisfy` either (const False) (not . null)+ replayImpactServices noEquality service `shouldSatisfy` (/= Right ReplayNeutral)++ it "compares each supported-history revision against its own graph and preserves unrelated controls" $ do+ let load name = TIO.readFile ("test/fixtures/mapped-structural-enum-equality-history/" <> name <> ".keiro") >>= parseChecked+ fingerprints service = [(owner.name, either (error . show) id (aggregateFoldFingerprintForService service owner)) | NAggregate owner <- (checkedSpec service).nodes]+ old <- load "guarded"+ forM_ [("data-only", False), ("binding-v2", False), ("wire-v2", False), ("fixture-only", True), ("reordered", True)] $ \(name, neutral) -> do+ new <- load name+ errors new `shouldBe` []+ lookup "ScopeControl" (fingerprints new) `shouldBe` lookup "ScopeControl" (fingerprints old)+ (lookup "ScopeGate" (fingerprints new) == lookup "ScopeGate" (fingerprints old)) `shouldBe` neutral+ result <- either (\failure -> expectationFailure (show failure) >> fail "replay comparison failed") pure (replayImpactServices old new)+ (result == ReplayNeutral) `shouldBe` neutral+ dataOnly <- load "data-only"+ let surface = either (error . show) id (aggregateFoldSurfaceForService dataOnly (aggregate dataOnly))+ fingerprint = either (error . show) id (aggregateFoldFingerprintForService dataOnly (aggregate dataOnly))+ expected <- TIO.readFile "test/fixtures/mapped-structural-enum-data-only-fold.golden"+ fingerprint <> "\n" <> surface <> "\n" `shouldBe` expected+ it "samples literal-guarded commands by projected wire key instead of fixture order" $ do+ source <- fixture+ let harnessFor checked = do+ errors checked `shouldBe` []+ let modules = scaffoldServiceModules (defaultContext "mapped-structural-enum-equality") checked+ firewallBreaches modules `shouldBe` []+ pure (moduleText "ScopeGate/Harness.hs" modules)+ sampled filters = "(case [value | (_, value) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures), " <> filters <> "] of value : _ -> value; [] -> error \"enum guard requires a matching supplied fixture\")"+ harness <- parseChecked source >>= harnessFor+ harness `shouldSatisfy` T.isInfixOf "import Generated.MappedStructuralEnumEquality.StructuralProjections qualified as StructuralProjections"+ harness `shouldSatisfy` T.isInfixOf "(Match (MatchData Bindings.initialScope "+ harness `shouldSatisfy` T.isInfixOf ("(Differ (DifferData " <> sampled "value /= Bindings.initialScope")+ harness `shouldSatisfy` T.isInfixOf ("(EqRight (EqRightData " <> sampled "fieldWitnessGet StructuralProjections.requiredScopeWitness value == \"pipeline\"")+ harness `shouldSatisfy` T.isInfixOf ("(EqLeft (EqLeftData " <> sampled "fieldWitnessGet StructuralProjections.requiredScopeWitness value == \"pipeline\"")+ harness `shouldSatisfy` T.isInfixOf ("(NeRight (NeRightData " <> sampled "fieldWitnessGet StructuralProjections.requiredScopeWitness value /= \"diagnostic\"")+ harness `shouldSatisfy` T.isInfixOf ("(NeLeft (NeLeftData " <> sampled "fieldWitnessGet StructuralProjections.requiredScopeWitness value /= \"diagnostic\"")+ combined <- parseChecked (replaceGuard "cmd.requiredScope != reg.requiredScope && cmd.requiredScope != RequiredScope.DiagnosticScope" source) >>= harnessFor+ combined `shouldSatisfy` T.isInfixOf ("(Match (MatchData " <> sampled "value /= Bindings.initialScope, fieldWitnessGet StructuralProjections.requiredScopeWitness value /= \"diagnostic\"")+ alternative <- parseChecked (replaceGuard "cmd.requiredScope == RequiredScope.DiagnosticScope || cmd.requiredScope == RequiredScope.PipelineScope" source) >>= harnessFor+ alternative `shouldSatisfy` T.isInfixOf ("(Match (MatchData " <> sampled "fieldWitnessGet StructuralProjections.requiredScopeWitness value == \"diagnostic\"")+ unguarded <- parseChecked (stripGuards source) >>= harnessFor+ unguarded `shouldSatisfy` (not . T.isInfixOf "StructuralProjections")+ unguarded `shouldSatisfy` (not . T.isInfixOf "fieldWitnessGet")++fixture :: IO Text+fixture = TIO.readFile "test/fixtures/mapped-structural-enum-equality.keiro"++parseChecked :: Text -> IO CheckedService+parseChecked source = case parseSource "mapped-structural-enum-equality.keiro" source of+ Left failure -> expectationFailure (T.unpack (renderParseFailure failure)) >> fail "parse failed"+ Right parsed -> pure (checkedSource parsed)++aggregate :: CheckedService -> Aggregate+aggregate service = head [value | NAggregate value <- (checkedSpec service).nodes]++errors :: CheckedService -> [Diagnostic]+errors = filter ((== Error) . (.severity)) . validateService++codes :: CheckedService -> [DiagnosticCode]+codes = map (.code) . errors++replaceGuard :: Text -> Text -> Text+replaceGuard = T.replace "cmd.requiredScope == reg.requiredScope"++stripGuards :: Text -> Text+stripGuards = T.replace "write requiredScope := RequiredScope.PipelineScope" "write requiredScope := cmd.requiredScope" . T.unlines . filter (not . T.isPrefixOf " guard ") . T.lines++moduleText :: Text -> [ScaffoldModule] -> Text+moduleText suffix modules = T.unlines [value.text | value <- modules, suffix `T.isSuffixOf` T.pack value.path]
@@ -60,6 +60,7 @@ import Keiro.Dsl.CodecCompare import Keiro.Dsl.ConformanceBaseline (conformanceBaselineSpec) import Keiro.Dsl.ConformancePackage+import Keiro.Dsl.ConsumerEnumLiterals (consumerEnumLiteralsSpec) import Keiro.Dsl.ConsumerTypePlan import Keiro.Dsl.CoordinationImpact import Keiro.Dsl.Coverage qualified as Coverage@@ -88,6 +89,7 @@ import Keiro.Dsl.MappedConsumer (ConsumerPlan (..), MappingIdentity (..), consumerPlan) import Keiro.Dsl.MappedDiff (MappedFinding (..), diffMapped) import Keiro.Dsl.MappedRegisterConstruction (mappedRegisterConstructionSpec)+import Keiro.Dsl.MappedStructuralEnumEquality (mappedStructuralEnumEqualitySpec) import Keiro.Dsl.NominalType hiding (NominalInvalidHaskellSource, NominalInvalidIdPrefix, NominalInvalidIdentity, NominalMissingIngredient) import Keiro.Dsl.Parser (parseSource, parseSourceDocument, parseSpec) import Keiro.Dsl.PrettyPrint (renderSource, renderSpec, renderTransition)@@ -244,6 +246,8 @@ frontendCompatibilitySpec frontendSurfaceSpec mappedRegisterConstructionSpec+ mappedStructuralEnumEqualitySpec+ consumerEnumLiteralsSpec frontendProfilesSpec describe "calendar-day codec policy v1" $ do@@ -678,6 +682,7 @@ mappings = [], idDomains = [], nominalEqualities = [],+ structuralEnumEqualities = [], bindingObligations = [], behaviorRequirements = [], projectionCatalogFacts = [],@@ -1968,6 +1973,13 @@ "language-v1.keiro", "language-zero.keiro", "mapped-register-construction.keiro",+ "mapped-structural-enum-equality.keiro",+ "mapped-structural-enum-equality-history/guarded.keiro",+ "mapped-structural-enum-equality-history/data-only.keiro",+ "mapped-structural-enum-equality-history/binding-v2.keiro",+ "mapped-structural-enum-equality-history/wire-v2.keiro",+ "mapped-structural-enum-equality-history/fixture-only.keiro",+ "mapped-structural-enum-equality-history/reordered.keiro", "mapped-keyed-map-enum-key.keiro", "mapped-keyed-map-language5.keiro", "mapped-nominal-leaf-default.keiro",@@ -4338,6 +4350,7 @@ mappings = [], idDomains = [], nominalEqualities = [],+ structuralEnumEqualities = [], bindingObligations = [], behaviorRequirements = rows, projectionCatalogFacts = [],@@ -4372,6 +4385,7 @@ mappings = [], idDomains = [], nominalEqualities = [],+ structuralEnumEqualities = [], bindingObligations = [], requirements = ownedRows, projectionCatalogFacts = [],@@ -4536,6 +4550,7 @@ mappings = (.mappings) plan, idDomains = [], nominalEqualities = nominalEqualityIdentities spec,+ structuralEnumEqualities = [], bindingObligations = [], behaviorRequirements = [], projectionCatalogFacts = [],@@ -5705,6 +5720,7 @@ mappings = [], idDomains = [], nominalEqualities = [],+ structuralEnumEqualities = [], bindingObligations = [], behaviorRequirements = [], projectionCatalogFacts = [],@@ -6423,6 +6439,7 @@ mappings = [], idDomains = [], nominalEqualities = [],+ structuralEnumEqualities = [], bindingObligations = [], behaviorRequirements = [], projectionCatalogFacts = [],@@ -12333,6 +12350,7 @@ mappings = [], idDomains = [], nominalEqualities = [],+ structuralEnumEqualities = [], bindingObligations = [], behaviorRequirements = Behavior.behaviorRecordRows requirements, projectionCatalogFacts = [],@@ -14799,6 +14817,7 @@ mappings = (.mappings) (consumerPlan ((.mergedSpec) workspace)), idDomains = [], nominalEqualities = nominalEqualityIdentities ((.mergedSpec) workspace),+ structuralEnumEqualities = [], bindingObligations = either (const []) id (bindingHoles ((.mergedSpec) workspace)), requirements = [], projectionCatalogFacts = [],@@ -14849,6 +14868,7 @@ mappings = [], idDomains = [], nominalEqualities = [],+ structuralEnumEqualities = [], bindingObligations = [], behaviorRequirements = behaviorRows, projectionCatalogFacts = [],@@ -14873,6 +14893,7 @@ mappings = [], idDomains = [], nominalEqualities = [],+ structuralEnumEqualities = [], bindingObligations = [], requirements = behaviorRows, projectionCatalogFacts = [],@@ -15178,6 +15199,7 @@ recordMappings recordIdDomains recordNominalEqualities+ recordStructuralEnumEqualities recordBindingObligations recordBehaviorRequirements recordProjectionCatalogFacts@@ -15198,6 +15220,7 @@ recordMappings recordIdDomains recordNominalEqualities+ recordStructuralEnumEqualities recordBindingObligations recordBehaviorRequirements recordProjectionCatalogFacts@@ -17577,8 +17600,8 @@ WorkspaceModuleRow kind path owner role workspaceRecordWithEditionAndModules :: GeneratedHaskellNamingEdition -> [WorkspaceModuleRow] -> WorkspaceRecord -> WorkspaceRecord-workspaceRecordWithEditionAndModules namingEdition modules (WorkspaceRecord service manifest contextName moduleRoot layout members sourceLanguages languageContract _ _ mappings idDomains nominalEqualities bindingObligations requirements projectionCatalogFacts queryContractBaseline queryContracts routerSelections adopted semanticImpact) =- WorkspaceRecord service manifest contextName moduleRoot layout members sourceLanguages languageContract namingEdition modules mappings idDomains nominalEqualities bindingObligations requirements projectionCatalogFacts queryContractBaseline queryContracts routerSelections adopted semanticImpact+workspaceRecordWithEditionAndModules namingEdition modules (WorkspaceRecord service manifest contextName moduleRoot layout members sourceLanguages languageContract _ _ mappings idDomains nominalEqualities structuralEnumEqualities bindingObligations requirements projectionCatalogFacts queryContractBaseline queryContracts routerSelections adopted semanticImpact) =+ WorkspaceRecord service manifest contextName moduleRoot layout members sourceLanguages languageContract namingEdition modules mappings idDomains nominalEqualities structuralEnumEqualities bindingObligations requirements projectionCatalogFacts queryContractBaseline queryContracts routerSelections adopted semanticImpact timerNodeWithPayload :: [FieldBinding] -> TimerNode -> TimerNode timerNodeWithPayload payload (TimerNode name identity fireAt _ fire decodeUnknown maxAttempts deadLetter loc) =
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context aggregate-scalars behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context aggregate-scalars behavior source map; do not edit. module Generated.AggregateScalars.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context aggregate-scalars replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context aggregate-scalars replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit. module Generated.AggregateScalars.ScalarLedger.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit. module Generated.AggregateScalars.ScalarLedger.Codec ( scalarLedgerCodec, parseScalarLedgerEvent,
@@ -1,6 +1,6 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit. module Generated.AggregateScalars.ScalarLedger.Domain where import Data.Aeson (FromJSON, ToJSON)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit. module Generated.AggregateScalars.ScalarLedger.EventStream ( scalarLedgerCategory , scalarLedgerCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit. module Generated.AggregateScalars.ScalarLedger.Harness (harnessAssertions) where import Generated.AggregateScalars.ScalarLedger.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit. module Generated.AggregateScalars.ScalarLedger.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarLedger; do not edit. module Generated.AggregateScalars.ScalarLedger.Transducer ( scalarLedgerTransducer , scalarLedgerFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue bare_jobs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue bare_jobs; do not edit. module Generated.BareContainers.BareJobs.Queue ( BareJob (..) , encodeBareJob
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue bare_jobs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue bare_jobs; do not edit. -- | Versioned job payload envelope: @{\"v\",\"t\",\"data\"}@. -- -- Deploy workers before producers when raising its schema version. Do not
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue bare_jobs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue bare_jobs; do not edit. module Generated.BareContainers.BareJobs.QueuePolicy ( BareJobsOutcome (..) , retryPolicy, jobOutcomeFor
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel bare_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel bare_lookup; do not edit. module Generated.BareContainers.BareLookup.QueryContract ( BareLookupQueryInput , BareLookupQueryResult
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel bare_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel bare_lookup; do not edit. module Generated.BareContainers.BareLookup.ReadModel ( bareLookupReadModel , bareLookupQualifiedTable
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel bare_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel bare_lookup; do not edit. module Generated.BareContainers.BareLookup.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where import Generated.BareContainers.BareLookup.ReadModel (bareLookupReadModel)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel bare_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel bare_lookup; do not edit. module Generated.BareContainers.BareLookup.ReadModelTable (bareLookupQualifiedTable) where import Data.Text (Text)
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit. module Generated.BareContainers.BareStore.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit. module Generated.BareContainers.BareStore.Codec ( bareStoreCodec, parseBareStoreEvent,
@@ -1,6 +1,6 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit. module Generated.BareContainers.BareStore.Domain where import Data.Aeson (FromJSON, ToJSON)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit. module Generated.BareContainers.BareStore.EventStream ( bareStoreCategory , bareStoreCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit. module Generated.BareContainers.BareStore.Harness (harnessAssertions) where import Generated.BareContainers.BareStore.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit. module Generated.BareContainers.BareStore.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate BareStore; do not edit. module Generated.BareContainers.BareStore.Transducer ( bareStoreTransducer , bareStoreFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context bare-containers behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context bare-containers behavior source map; do not edit. module Generated.BareContainers.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context bare-containers generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context bare-containers generated nominal declarations; do not edit. module Generated.BareContainers.Nominals ( ItemId , parseItemId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context bare-containers generated nominal ID internals; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context bare-containers generated nominal ID internals; do not edit. module Generated.BareContainers.Nominals.Internal ( ItemId , parseItemId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from projection-catalog bare-containers; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from projection-catalog bare-containers; do not edit. {-# LANGUAGE OverloadedStrings #-} module Generated.BareContainers.ProjectionCatalog ( projectionCatalog
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context bare-containers replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context bare-containers replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context bare-containers structural nominal leaves; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context bare-containers structural nominal leaves; do not edit. module Generated.BareContainers.Structural.NominalLeaves where import Data.Aeson (Value (..), withText)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural BareEnvelope; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural BareEnvelope; do not edit. module Generated.BareContainers.Structural.Shape.BareEnvelope (BareEnvelopeShape (..)) where import GHC.Generics (Generic)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural MaybeText; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural MaybeText; do not edit. module Generated.BareContainers.Structural.Shape.MaybeText (MaybeTextShape) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural NestedIds; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural NestedIds; do not edit. module Generated.BareContainers.Structural.Shape.NestedIds (NestedIdsShape) where import Generated.BareContainers.Nominals qualified as Nominals
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural TextList; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural TextList; do not edit. module Generated.BareContainers.Structural.Shape.TextList (TextListShape) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural TextMap; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural TextMap; do not edit. module Generated.BareContainers.Structural.Shape.TextMap (TextMapShape) where import Data.Map.Strict (Map)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context bare-containers structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context bare-containers structural conformance; do not edit. module Generated.BareContainers.StructuralConformance ( structuralConformanceAssertions ) where
@@ -20,6 +20,7 @@ {"path": "test/fixtures/outcome-identifier-legacy.keiro", "sourceForm": "legacy-unversioned", "effectiveVersion": 1, "role": "compatibility-proof", "reason": "released outcome-identifier compatibility proof"} ], "compiledSuites": [+ {"component": "keiro-dsl-conformance-mapped-structural-enum-equality", "directory": "test/conformance-mapped-structural-enum-equality", "source": "test/fixtures/mapped-structural-enum-equality.keiro", "generation": "source", "role": "candidate-primary", "languageVersion": 6, "reason": "exact finite structural enum equality, literals, model reconstruction, total-binding conformance and replay"}, {"component": "keiro-dsl-conformance-mapped-register-construction", "directory": "test/conformance-mapped-register-construction", "source": "test/fixtures/mapped-register-construction.keiro", "generation": "source", "role": "candidate-primary", "languageVersion": 6, "reason": "candidate Language 6 guarded target initial and mapped lift construction with complete register replay"}, {"component": "keiro-dsl-conformance-keyword-segments", "directory": "test/conformance-keyword-segments", "source": "test/fixtures/keyword-segments.keiro", "generation": "source", "role": "candidate-primary", "languageVersion": 6, "reason": "Language 6 compiled read-model and workqueue keyword-segment naming proof for BUG-11"}, {"component": "keiro-dsl-conformance-history-dependent-holes", "directory": "test/conformance-history-dependent-holes", "source": "test/fixtures/history-dependent-holes.keiro", "generation": "source", "role": "candidate-primary", "languageVersion": 6, "reason": "Language 6 history-backed initial-hole acceptance, exact live/replay-only attribution, and persisted-codec replay proof for BUG-10"},
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context behavior-complete behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context behavior-complete behavior source map; do not edit. module Generated.BehaviorComplete.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit. module Generated.BehaviorComplete.Journey.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit. module Generated.BehaviorComplete.Journey.Codec ( journeyCodec, parseJourneyEvent,
@@ -1,6 +1,6 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit. module Generated.BehaviorComplete.Journey.Domain where import Data.Aeson (FromJSON, ToJSON)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit. module Generated.BehaviorComplete.Journey.EventStream ( journeyCategory , journeyCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit. module Generated.BehaviorComplete.Journey.Harness (harnessAssertions) where import Generated.BehaviorComplete.Journey.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit. module Generated.BehaviorComplete.Journey.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Journey; do not edit. module Generated.BehaviorComplete.Journey.Transducer ( journeyTransducer , journeyFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context behavior-complete generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context behavior-complete generated nominal declarations; do not edit. module Generated.BehaviorComplete.Nominals ( RequestId , parseRequestId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context behavior-complete generated nominal ID internals; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context behavior-complete generated nominal ID internals; do not edit. module Generated.BehaviorComplete.Nominals.Internal ( RequestId , parseRequestId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context behavior-complete replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context behavior-complete replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from mapped structural StartPayload; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from mapped structural StartPayload; do not edit. module Generated.BehaviorComplete.Structural.Shape.StartPayload (StartPayloadShape (..)) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context behavior-complete structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context behavior-complete structural conformance; do not edit. module Generated.BehaviorComplete.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,5 +1,5 @@ {-# LANGUAGE TypeFamilies #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context behavior-complete mapped structural facade; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context behavior-complete mapped structural facade; do not edit. -- Equality witnesses are emitted for Text, Int, Bool, Natural, and UTCTime. -- Nominal ID and enum leaves carry exact canonical-text domains. -- Int, Natural, and UTCTime belong to Keiki's ordered subset.
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context calendar-days behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context calendar-days behavior source map; do not edit. module Generated.CalendarDays.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue calendar_jobs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue calendar_jobs; do not edit. module Generated.CalendarDays.CalendarJobs.Queue ( CalendarJob (..) , encodeCalendarJob
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue calendar_jobs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue calendar_jobs; do not edit. -- | Versioned job payload envelope: @{\"v\",\"t\",\"data\"}@. -- -- Deploy workers before producers when raising its schema version. Do not
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue calendar_jobs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue calendar_jobs; do not edit. module Generated.CalendarDays.CalendarJobs.QueuePolicy ( CalendarJobsOutcome (..) , retryPolicy, jobOutcomeFor
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel calendar_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel calendar_lookup; do not edit. module Generated.CalendarDays.CalendarLookup.QueryContract ( CalendarLookupQueryInput , CalendarLookupQueryResult
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel calendar_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel calendar_lookup; do not edit. module Generated.CalendarDays.CalendarLookup.ReadModel ( calendarLookupReadModel , calendarLookupQualifiedTable
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel calendar_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel calendar_lookup; do not edit. module Generated.CalendarDays.CalendarLookup.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where import Generated.CalendarDays.CalendarLookup.ReadModel (calendarLookupReadModel)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel calendar_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel calendar_lookup; do not edit. module Generated.CalendarDays.CalendarLookup.ReadModelTable (calendarLookupQualifiedTable) where import Data.Text (Text)
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit. module Generated.CalendarDays.CalendarStore.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit. module Generated.CalendarDays.CalendarStore.Codec ( calendarStoreCodec, parseCalendarStoreEvent,
@@ -1,6 +1,6 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit. module Generated.CalendarDays.CalendarStore.Domain where import Data.Aeson (FromJSON, ToJSON)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit. module Generated.CalendarDays.CalendarStore.EventStream ( calendarStoreCategory , calendarStoreCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit. module Generated.CalendarDays.CalendarStore.Harness (harnessAssertions) where import Generated.CalendarDays.CalendarStore.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit. module Generated.CalendarDays.CalendarStore.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit. module Generated.CalendarDays.CalendarStore.Transducer ( calendarStoreTransducer , calendarStoreFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from projection-catalog calendar-days; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from projection-catalog calendar-days; do not edit. {-# LANGUAGE OverloadedStrings #-} module Generated.CalendarDays.ProjectionCatalog ( projectionCatalog
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context calendar-days replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context calendar-days replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural CalendarEnvelope; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural CalendarEnvelope; do not edit. module Generated.CalendarDays.Structural.Shape.CalendarEnvelope (CalendarEnvelopeShape (..)) where import Data.Map.Strict (Map)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural LocalDay; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural LocalDay; do not edit. module Generated.CalendarDays.Structural.Shape.LocalDay (LocalDayShape) where import Data.Time.Calendar (Day)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural MaybeLocalDay; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural MaybeLocalDay; do not edit. module Generated.CalendarDays.Structural.Shape.MaybeLocalDay (MaybeLocalDayShape) where import Data.Time.Calendar (Day)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context calendar-days structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context calendar-days structural conformance; do not edit. module Generated.CalendarDays.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context checked-mapping-replay behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context checked-mapping-replay behavior source map; do not edit. module Generated.CheckedMappingReplay.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context checked-mapping-replay generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context checked-mapping-replay generated nominal declarations; do not edit. module Generated.CheckedMappingReplay.Nominals ( RetainedId , parseRetainedId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context checked-mapping-replay generated nominal ID internals; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context checked-mapping-replay generated nominal ID internals; do not edit. module Generated.CheckedMappingReplay.Nominals.Internal ( RetainedId , parseRetainedId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from projection-catalog checked-mapping-replay; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from projection-catalog checked-mapping-replay; do not edit. {-# LANGUAGE OverloadedStrings #-} module Generated.CheckedMappingReplay.ProjectionCatalog ( projectionCatalog
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context checked-mapping-replay replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context checked-mapping-replay replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from contract replay_events; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from contract replay_events; do not edit. module Generated.CheckedMappingReplay.ReplayEvents.Contract ( ReplayEventsPayload (..) , ReplayLinkedData (..)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue replay_jobs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue replay_jobs; do not edit. module Generated.CheckedMappingReplay.ReplayJobs.Queue ( ReplayJob (..) , encodeReplayJob
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue replay_jobs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue replay_jobs; do not edit. -- | Versioned job payload envelope: @{\"v\",\"t\",\"data\"}@. -- -- Deploy workers before producers when raising its schema version. Do not
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue replay_jobs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue replay_jobs; do not edit. module Generated.CheckedMappingReplay.ReplayJobs.QueuePolicy ( ReplayJobsOutcome (..) , retryPolicy, jobOutcomeFor
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit. module Generated.CheckedMappingReplay.ReplayLedger.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit. module Generated.CheckedMappingReplay.ReplayLedger.Codec ( replayLedgerCodec, parseReplayLedgerEvent,
@@ -1,6 +1,6 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit. module Generated.CheckedMappingReplay.ReplayLedger.Domain where import Data.Aeson (FromJSON, ToJSON)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit. module Generated.CheckedMappingReplay.ReplayLedger.EventStream ( replayLedgerCategory , replayLedgerCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit. module Generated.CheckedMappingReplay.ReplayLedger.Harness (harnessAssertions) where import Generated.CheckedMappingReplay.ReplayLedger.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit. module Generated.CheckedMappingReplay.ReplayLedger.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayLedger; do not edit. module Generated.CheckedMappingReplay.ReplayLedger.Transducer ( replayLedgerTransducer , replayLedgerFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel replay_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel replay_lookup; do not edit. module Generated.CheckedMappingReplay.ReplayLookup.QueryContract ( ReplayLookupQueryInput , ReplayLookupQueryResult
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel replay_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel replay_lookup; do not edit. module Generated.CheckedMappingReplay.ReplayLookup.ReadModel ( replayLookupReadModel , replayLookupQualifiedTable
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel replay_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel replay_lookup; do not edit. module Generated.CheckedMappingReplay.ReplayLookup.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where import Generated.CheckedMappingReplay.ReplayLookup.ReadModel (replayLookupReadModel)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel replay_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel replay_lookup; do not edit. module Generated.CheckedMappingReplay.ReplayLookup.ReadModelTable (replayLookupQualifiedTable) where import Data.Text (Text)
@@ -1,5 +1,5 @@ {-# LANGUAGE DeriveAnyClass #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process input ReplayReaction; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process input ReplayReaction; do not edit. module Generated.CheckedMappingReplay.ReplayReaction.Input (ReplayReactionInput (..)) where import Data.Aeson (FromJSON, ToJSON)
@@ -1,5 +1,5 @@ {-# OPTIONS_GHC -Wno-missing-signatures #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process reaction ReplayReaction; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process reaction ReplayReaction; do not edit. module Generated.CheckedMappingReplay.ReplayReaction.Process ( ReplayReactionInput (..) , replayReactionProcessName
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process ReplayReaction; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process ReplayReaction; do not edit. module Generated.CheckedMappingReplay.ReplayReaction.ProcessHarness (processHarnessValues) where -- | (label, value): the spec's deterministic process/timer decisions,
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit. module Generated.CheckedMappingReplay.ReplayTarget.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit. module Generated.CheckedMappingReplay.ReplayTarget.Codec ( replayTargetCodec, parseReplayTargetEvent,
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit. module Generated.CheckedMappingReplay.ReplayTarget.Domain where import Data.Proxy (Proxy (..))
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit. module Generated.CheckedMappingReplay.ReplayTarget.EventStream ( replayTargetCategory , replayTargetCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit. module Generated.CheckedMappingReplay.ReplayTarget.Harness (harnessAssertions) where import Generated.CheckedMappingReplay.ReplayTarget.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit. module Generated.CheckedMappingReplay.ReplayTarget.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ReplayTarget; do not edit. module Generated.CheckedMappingReplay.ReplayTarget.Transducer ( replayTargetTransducer , replayTargetFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context checked-mapping-replay structural nominal leaves; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context checked-mapping-replay structural nominal leaves; do not edit. module Generated.CheckedMappingReplay.Structural.NominalLeaves where import Data.Aeson (Value (..), withText)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural ContentHash; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural ContentHash; do not edit. module Generated.CheckedMappingReplay.Structural.Shape.ContentHash (ContentHashShape) where import Data.ByteString (ByteString)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural ImportantDays; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural ImportantDays; do not edit. module Generated.CheckedMappingReplay.Structural.Shape.ImportantDays (ImportantDaysShape) where import Data.Time.Calendar (Day)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural MaybeContentHash; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural MaybeContentHash; do not edit. module Generated.CheckedMappingReplay.Structural.Shape.MaybeContentHash (MaybeContentHashShape) where import Generated.CheckedMappingReplay.Structural.Shape.ContentHash qualified as ContentHash
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural MaybeLabel; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural MaybeLabel; do not edit. module Generated.CheckedMappingReplay.Structural.Shape.MaybeLabel (MaybeLabelShape) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural ReplayEnvelope; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural ReplayEnvelope; do not edit. module Generated.CheckedMappingReplay.Structural.Shape.ReplayEnvelope (ReplayEnvelopeShape (..)) where import Data.Map.Strict (Map)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural TextLabels; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural TextLabels; do not edit. module Generated.CheckedMappingReplay.Structural.Shape.TextLabels (TextLabelsShape) where import Data.Set (Set)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context checked-mapping-replay structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context checked-mapping-replay structural conformance; do not edit. module Generated.CheckedMappingReplay.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,5 +1,5 @@ {-# LANGUAGE TypeFamilies #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context checked-mapping-replay mapped structural facade; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context checked-mapping-replay mapped structural facade; do not edit. -- Equality witnesses are emitted for Text, Int, Bool, Natural, and UTCTime. -- Nominal ID and enum leaves carry exact canonical-text domains. -- Int, Natural, and UTCTime belong to Keiki's ordered subset.
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context billing behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context billing behavior source map; do not edit. module Generated.Billing.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,6 +1,6 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE TypeFamilies #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context billing generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context billing generated nominal declarations; do not edit. module Generated.Billing.Nominals ( CustomerId , parseCustomerId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context billing generated nominal ID internals; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context billing generated nominal ID internals; do not edit. module Generated.Billing.Nominals.Internal ( CustomerId , parseCustomerId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context billing replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context billing replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit. module Generated.Billing.Subscription.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit. module Generated.Billing.Subscription.Codec ( subscriptionCodec, parseSubscriptionEvent,
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit. module Generated.Billing.Subscription.Domain where import Data.Proxy (Proxy (..))
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit. module Generated.Billing.Subscription.EventStream ( subscriptionCategory , subscriptionCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit. module Generated.Billing.Subscription.Harness (harnessAssertions) where import Generated.Billing.Subscription.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit. module Generated.Billing.Subscription.Projection ( subscriptionsProjection , subscriptionsStatusFor
@@ -1,7 +1,7 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE OverloadedLabels #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit. module Generated.Billing.Subscription.Transducer ( subscriptionTransducer , subscriptionFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context contract-declared-id generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context contract-declared-id generated nominal declarations; do not edit. module Generated.ContractDeclaredId.Nominals ( TemplateId , parseTemplateId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context contract-declared-id generated nominal ID internals; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context contract-declared-id generated nominal ID internals; do not edit. module Generated.ContractDeclaredId.Nominals.Internal ( TemplateId , parseTemplateId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context contract-declared-id structural nominal leaves; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context contract-declared-id structural nominal leaves; do not edit. module Generated.ContractDeclaredId.Structural.NominalLeaves where import Data.Aeson (Value (..), withText)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context contract-declared-id structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context contract-declared-id structural conformance; do not edit. module Generated.ContractDeclaredId.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from contract templates; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from contract templates; do not edit. module Generated.ContractDeclaredId.Templates.Contract ( TemplatesPayload (..) , TemplateClaimedData (..)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context contract-list-fields generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context contract-list-fields generated nominal declarations; do not edit. module Generated.ContractListFields.Nominals ( TemplateId , parseTemplateId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context contract-list-fields generated nominal ID internals; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context contract-list-fields generated nominal ID internals; do not edit. module Generated.ContractListFields.Nominals.Internal ( TemplateId , parseTemplateId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context contract-list-fields structural nominal leaves; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context contract-list-fields structural nominal leaves; do not edit. module Generated.ContractListFields.Structural.NominalLeaves where import Data.Aeson (Value (..), withText)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context contract-list-fields structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context contract-list-fields structural conformance; do not edit. module Generated.ContractListFields.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from contract templates; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from contract templates; do not edit. module Generated.ContractListFields.Templates.Contract ( TemplatesPayload (..) , TemplatesReassignedData (..)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 1) from contract emergency; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 1) from contract emergency; do not edit. module Generated.HospitalCapacity.Emergency.Contract ( EmergencyPayload (..) , IncidentTransferNeedDeclaredData (..)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from contract emergency; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from contract emergency; do not edit. module Generated.HospitalCapacity.Emergency.Contract ( EmergencyPayload (..) , IncidentTransferNeedDeclaredData (..)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context transfer-routing behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context transfer-routing behavior source map; do not edit. module Generated.TransferRouting.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.Codec ( hospitalCodec, parseHospitalEvent,
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.Domain where import Data.Proxy (Proxy (..))
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.EventStream ( hospitalCategory , hospitalCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.Harness (harnessAssertions) where import Generated.TransferRouting.Hospital.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.Transducer ( hospitalTransducer , hospitalFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel hospital_load; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel hospital_load; do not edit. module Generated.TransferRouting.HospitalLoad.QueryContract ( HospitalLoadQueryInput , HospitalLoadQueryResult
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel hospital_load; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel hospital_load; do not edit. module Generated.TransferRouting.HospitalLoad.ReadModel ( hospitalLoadReadModel , hospitalLoadQualifiedTable
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel hospital_load; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel hospital_load; do not edit. module Generated.TransferRouting.HospitalLoad.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where import Generated.TransferRouting.HospitalLoad.ReadModel (hospitalLoadReadModel)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel hospital_load; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel hospital_load; do not edit. module Generated.TransferRouting.HospitalLoad.ReadModelTable (hospitalLoadQualifiedTable) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from router HospitalTransferRouter; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from router HospitalTransferRouter; do not edit. module Generated.TransferRouting.HospitalTransferRouter.Router ( hospitalTransferRouterName , hospitalTransferRouterWorkerOptions
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from router HospitalTransferRouter; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from router HospitalTransferRouter; do not edit. module Generated.TransferRouting.HospitalTransferRouter.RouterHarness (routerHarnessValues) where routerHarnessValues :: [(String, String)]
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from projection-catalog transfer-routing; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from projection-catalog transfer-routing; do not edit. {-# LANGUAGE OverloadedStrings #-} module Generated.TransferRouting.ProjectionCatalog ( projectionCatalog
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context transfer-routing replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context transfer-routing replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from mapped structural HospitalLoadRow; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from mapped structural HospitalLoadRow; do not edit. module Generated.TransferRouting.Structural.Shape.HospitalLoadRow (HospitalLoadRowShape (..)) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from mapped structural TransferRouteInput; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from mapped structural TransferRouteInput; do not edit. module Generated.TransferRouting.Structural.Shape.TransferRouteInput (TransferRouteInputShape (..)) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context transfer-routing structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context transfer-routing structural conformance; do not edit. module Generated.TransferRouting.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,5 +1,5 @@ {-# LANGUAGE TypeFamilies #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context transfer-routing mapped structural facade; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context transfer-routing mapped structural facade; do not edit. -- Equality witnesses are emitted for Text, Int, Bool, Natural, and UTCTime. -- Nominal ID and enum leaves carry exact canonical-text domains. -- Int, Natural, and UTCTime belong to Keiki's ordered subset.
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit. module Generated.HospitalCapacity.AcceptedTransferNeeds.ReadModel ( acceptedTransferNeedsReadModel , acceptedTransferNeedsQualifiedTable
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit. module Generated.HospitalCapacity.AcceptedTransferNeeds.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts) where import Generated.HospitalCapacity.AcceptedTransferNeeds.ReadModel (acceptedTransferNeedsReadModel, acceptedTransferNeedsAsyncProjection)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel accepted_transfer_needs; do not edit. module Generated.HospitalCapacity.AcceptedTransferNeeds.ReadModelTable (acceptedTransferNeedsQualifiedTable) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit. module Generated.HospitalCapacity.ReservationWork.Queue ( ReservationWorkItem (..) , encodeReservationWorkItem
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit. -- | Versioned job payload envelope: @{\"v\",\"t\",\"data\"}@. -- -- Deploy workers before producers when raising its schema version. Do not
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from workqueue reservation_work; do not edit. module Generated.HospitalCapacity.ReservationWork.QueuePolicy ( ReservationWorkOutcome (..) , retryPolicy, jobOutcomeFor
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit. module Generated.HospitalCapacity.TransferDecisions.ReadModel ( transferDecisionsReadModel , transferDecisionsQualifiedTable
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit. module Generated.HospitalCapacity.TransferDecisions.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts) where import Generated.HospitalCapacity.TransferDecisions.ReadModel (transferDecisionsReadModel, transferDecisionsAsyncProjection)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel transfer_decisions; do not edit. module Generated.HospitalCapacity.TransferDecisions.ReadModelTable (transferDecisionsQualifiedTable) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context domain-outcomes behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context domain-outcomes behavior source map; do not edit. module Generated.DomainOutcomes.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,5 +1,5 @@ {-# LANGUAGE DeriveAnyClass #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context domain-outcomes generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context domain-outcomes generated nominal declarations; do not edit. module Generated.DomainOutcomes.Nominals where import Data.Aeson (FromJSON, ToJSON)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context domain-outcomes replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context domain-outcomes replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit. module Generated.DomainOutcomes.Reservation.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit. module Generated.DomainOutcomes.Reservation.Codec ( reservationCodec, parseReservationEvent,
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit. module Generated.DomainOutcomes.Reservation.Domain where import Data.Proxy (Proxy (..))
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit. module Generated.DomainOutcomes.Reservation.EventStream ( reservationCategory , reservationCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit. module Generated.DomainOutcomes.Reservation.Harness (harnessAssertions) where import Generated.DomainOutcomes.Reservation.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit. module Generated.DomainOutcomes.Reservation.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Reservation; do not edit. module Generated.DomainOutcomes.Reservation.Transducer ( reservationTransducer , reservationFoldFingerprint
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit. module Generated.HistoryDependentHoles.Assignment.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit. module Generated.HistoryDependentHoles.Assignment.Codec ( assignmentCodec, parseAssignmentEvent,
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit. module Generated.HistoryDependentHoles.Assignment.Domain where import Data.Proxy (Proxy (..))
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit. module Generated.HistoryDependentHoles.Assignment.EventStream ( assignmentCategory , assignmentCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit. module Generated.HistoryDependentHoles.Assignment.Harness (harnessAssertions) where import Generated.HistoryDependentHoles.Assignment.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit. module Generated.HistoryDependentHoles.Assignment.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Assignment; do not edit. module Generated.HistoryDependentHoles.Assignment.Transducer ( assignmentTransducer , assignmentFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context history-dependent-holes behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context history-dependent-holes behavior source map; do not edit. module Generated.HistoryDependentHoles.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context history-dependent-holes replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context history-dependent-holes replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context history-dependent-holes structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context history-dependent-holes structural conformance; do not edit. module Generated.HistoryDependentHoles.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context id-admission-domains behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context id-admission-domains behavior source map; do not edit. module Generated.IdAdmissionDomains.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from contract identities; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from contract identities; do not edit. module Generated.IdAdmissionDomains.Identities.Contract ( IdentitiesPayload (..) , IdentityLinkedData (..)
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit. module Generated.IdAdmissionDomains.IdentityLedger.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit. module Generated.IdAdmissionDomains.IdentityLedger.Codec ( identityLedgerCodec, parseIdentityLedgerEvent,
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit. module Generated.IdAdmissionDomains.IdentityLedger.Domain where import Data.Proxy (Proxy (..))
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit. module Generated.IdAdmissionDomains.IdentityLedger.EventStream ( identityLedgerCategory , identityLedgerCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit. module Generated.IdAdmissionDomains.IdentityLedger.Harness (harnessAssertions) where import Generated.IdAdmissionDomains.IdentityLedger.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit. module Generated.IdAdmissionDomains.IdentityLedger.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IdentityLedger; do not edit. module Generated.IdAdmissionDomains.IdentityLedger.Transducer ( identityLedgerTransducer , identityLedgerFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue identity_work; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue identity_work; do not edit. module Generated.IdAdmissionDomains.IdentityWork.Queue ( IdentityWork (..) , encodeIdentityWork
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue identity_work; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue identity_work; do not edit. -- | Versioned job payload envelope: @{\"v\",\"t\",\"data\"}@. -- -- Deploy workers before producers when raising its schema version. Do not
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue identity_work; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue identity_work; do not edit. module Generated.IdAdmissionDomains.IdentityWork.QueuePolicy ( IdentityWorkOutcome (..) , retryPolicy, jobOutcomeFor
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context id-admission-domains generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context id-admission-domains generated nominal declarations; do not edit. module Generated.IdAdmissionDomains.Nominals ( LegacyId , parseLegacyId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context id-admission-domains generated nominal ID internals; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context id-admission-domains generated nominal ID internals; do not edit. module Generated.IdAdmissionDomains.Nominals.Internal ( LegacyId , parseLegacyId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context id-admission-domains replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context id-admission-domains replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context id-admission-domains structural nominal leaves; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context id-admission-domains structural nominal leaves; do not edit. module Generated.IdAdmissionDomains.Structural.NominalLeaves where import Data.Aeson (Value (..), withText)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural IdentityEnvelope; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural IdentityEnvelope; do not edit. module Generated.IdAdmissionDomains.Structural.Shape.IdentityEnvelope (IdentityEnvelopeShape (..)) where import Data.Map.Strict (Map)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context id-admission-domains structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context id-admission-domains structural conformance; do not edit. module Generated.IdAdmissionDomains.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,5 +1,5 @@ {-# LANGUAGE TypeFamilies #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context id-admission-domains mapped structural facade; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context id-admission-domains mapped structural facade; do not edit. -- Equality witnesses are emitted for Text, Int, Bool, Natural, and UTCTime. -- Nominal ID and enum leaves carry exact canonical-text domains. -- Int, Natural, and UTCTime belong to Keiki's ordered subset.
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 3) from context id-domain-migration behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 3) from context id-domain-migration behavior source map; do not edit. module Generated.IdDomainMigration.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 3) from context id-domain-migration generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 3) from context id-domain-migration generated nominal declarations; do not edit. module Generated.IdDomainMigration.Nominals ( OrderId , parseOrderId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 3) from context id-domain-migration generated nominal ID internals; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 3) from context id-domain-migration generated nominal ID internals; do not edit. module Generated.IdDomainMigration.Nominals.Internal ( OrderId , parseOrderId
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit. module Generated.IdDomainMigration.OrderBook.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit. module Generated.IdDomainMigration.OrderBook.Codec ( orderBookCodec, parseOrderBookEvent,
@@ -1,6 +1,6 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit. module Generated.IdDomainMigration.OrderBook.Domain where import Data.Aeson (FromJSON, ToJSON)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit. module Generated.IdDomainMigration.OrderBook.EventStream ( orderBookCategory , orderBookCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit. module Generated.IdDomainMigration.OrderBook.Harness (harnessAssertions) where import Generated.IdDomainMigration.OrderBook.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit. module Generated.IdDomainMigration.OrderBook.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 3) from aggregate OrderBook; do not edit. module Generated.IdDomainMigration.OrderBook.Transducer ( orderBookTransducer , orderBookFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 3) from context id-domain-migration replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 3) from context id-domain-migration replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context import-planning-collisions behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context import-planning-collisions behavior source map; do not edit. module Generated.ImportPlanningCollisions.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit. module Generated.ImportPlanningCollisions.CollisionLedger.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit. module Generated.ImportPlanningCollisions.CollisionLedger.Codec ( collisionLedgerCodec, parseCollisionLedgerEvent,
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit. module Generated.ImportPlanningCollisions.CollisionLedger.Domain where import GHC.Generics (Generic)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit. module Generated.ImportPlanningCollisions.CollisionLedger.EventStream ( collisionLedgerCategory , collisionLedgerCommandCategory
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit. module Generated.ImportPlanningCollisions.CollisionLedger.Harness (harnessAssertions) where import Generated.ImportPlanningCollisions.CollisionLedger.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit. module Generated.ImportPlanningCollisions.CollisionLedger.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate CollisionLedger; do not edit. module Generated.ImportPlanningCollisions.CollisionLedger.Transducer ( collisionLedgerTransducer , collisionLedgerFoldFingerprint
@@ -1,5 +1,5 @@ {-# LANGUAGE TypeFamilies #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context import-planning-collisions nominal scalar projection facade; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context import-planning-collisions nominal scalar projection facade; do not edit. module Generated.ImportPlanningCollisions.NominalProjections where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context import-planning-collisions replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context import-planning-collisions replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from mapped structural Details; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from mapped structural Details; do not edit. module Generated.ImportPlanningCollisions.Structural.Shape.Details (DetailsShape (..)) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context import-planning-collisions structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context import-planning-collisions structural conformance; do not edit. module Generated.ImportPlanningCollisions.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,5 +1,5 @@ {-# LANGUAGE TypeFamilies #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context import-planning-collisions mapped structural facade; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context import-planning-collisions mapped structural facade; do not edit. -- Equality witnesses are emitted for Text, Int, Bool, Natural, and UTCTime. -- Nominal ID and enum leaves carry exact canonical-text domains. -- Int, Natural, and UTCTime belong to Keiki's ordered subset.
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from contract emergency; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from contract emergency; do not edit. module Generated.HospitalCapacity.Emergency.Contract ( EmergencyPayload (..) , IncidentTransferNeedDeclaredData (..)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from intake incidentInbox; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from intake incidentInbox; do not edit. module Generated.HospitalCapacity.IncidentInbox.Inbox ( InboxFailure (..) , IncidentInboxOutcome (..)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from contract emergency; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from contract emergency; do not edit. module Generated.HospitalCapacity.Emergency.Contract ( EmergencyPayload (..) , IncidentTransferNeedDeclaredData (..)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from intake incidentInbox; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from intake incidentInbox; do not edit. module Generated.HospitalCapacity.IncidentInbox.Inbox ( InboxFailure (..) , IncidentInboxOutcome (..)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from contract emergency; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from contract emergency; do not edit. module Generated.HospitalCapacity.Emergency.Contract ( EmergencyPayload (..) , IncidentTransferNeedDeclaredData (..)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from intake incidentInbox; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from intake incidentInbox; do not edit. module Generated.HospitalCapacity.IncidentInbox.Inbox ( InboxFailure (..) , IncidentInboxOutcome (..)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue job_type; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue job_type; do not edit. module Generated.KeywordSegments.JobType.Queue ( JobTypePayload (..) , encodeJobTypePayload
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue job_type; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue job_type; do not edit. -- | Versioned job payload envelope: @{\"v\",\"t\",\"data\"}@. -- -- Deploy workers before producers when raising its schema version. Do not
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue job_type; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue job_type; do not edit. module Generated.KeywordSegments.JobType.QueuePolicy ( JobTypeOutcome (..) , retryPolicy, jobOutcomeFor
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context keyword-segments generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context keyword-segments generated nominal declarations; do not edit. module Generated.KeywordSegments.Nominals ( SubscriptionId , parseSubscriptionId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context keyword-segments generated nominal ID internals; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context keyword-segments generated nominal ID internals; do not edit. module Generated.KeywordSegments.Nominals.Internal ( SubscriptionId , parseSubscriptionId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from projection-catalog keyword-segments; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from projection-catalog keyword-segments; do not edit. {-# LANGUAGE OverloadedStrings #-} module Generated.KeywordSegments.ProjectionCatalog ( projectionCatalog
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context keyword-segments structural nominal leaves; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context keyword-segments structural nominal leaves; do not edit. module Generated.KeywordSegments.Structural.NominalLeaves where import Data.Aeson (Value (..), withText)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context keyword-segments structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context keyword-segments structural conformance; do not edit. module Generated.KeywordSegments.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel validate_custom_type; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel validate_custom_type; do not edit. module Generated.KeywordSegments.ValidateCustomType.QueryContract ( ValidateCustomTypeQueryInput , ValidateCustomTypeQueryResult
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel validate_custom_type; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel validate_custom_type; do not edit. module Generated.KeywordSegments.ValidateCustomType.ReadModel ( validateCustomTypeReadModel , validateCustomTypeQualifiedTable
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel validate_custom_type; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel validate_custom_type; do not edit. module Generated.KeywordSegments.ValidateCustomType.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where import Generated.KeywordSegments.ValidateCustomType.ReadModel (validateCustomTypeReadModel)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel validate_custom_type; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel validate_custom_type; do not edit. module Generated.KeywordSegments.ValidateCustomType.ReadModelTable (validateCustomTypeQualifiedTable) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from workqueue mapped_jobs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from workqueue mapped_jobs; do not edit. module Generated.MappedQueue.MappedJobs.Queue ( MappedJob (..) , encodeMappedJob
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from workqueue mapped_jobs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from workqueue mapped_jobs; do not edit. -- | Versioned job payload envelope: @{\"v\",\"t\",\"data\"}@. -- -- Deploy workers before producers when raising its schema version. Do not
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from workqueue mapped_jobs; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from workqueue mapped_jobs; do not edit. module Generated.MappedQueue.MappedJobs.QueuePolicy ( MappedJobsOutcome (..) , retryPolicy, jobOutcomeFor
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from mapped structural JobMetadata; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from mapped structural JobMetadata; do not edit. module Generated.MappedQueue.Structural.Shape.JobMetadata (JobMetadataShape (..)) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from mapped structural JobPayload; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from mapped structural JobPayload; do not edit. module Generated.MappedQueue.Structural.Shape.JobPayload (JobPayloadShape (..)) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context mapped-queue structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context mapped-queue structural conformance; do not edit. module Generated.MappedQueue.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,5 +1,5 @@ {-# LANGUAGE TypeFamilies #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context mapped-queue mapped structural facade; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context mapped-queue mapped structural facade; do not edit. -- Equality witnesses are emitted for Text, Int, Bool, Natural, and UTCTime. -- Nominal ID and enum leaves carry exact canonical-text domains. -- Int, Natural, and UTCTime belong to Keiki's ordered subset.
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel account_summary; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel account_summary; do not edit. module Generated.MappedReadmodel.AccountSummary.QueryContract ( AccountSummaryQueryInput , AccountSummaryQueryResult
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel account_summary; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel account_summary; do not edit. module Generated.MappedReadmodel.AccountSummary.ReadModel ( accountSummaryReadModel , accountSummaryQualifiedTable
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel account_summary; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel account_summary; do not edit. module Generated.MappedReadmodel.AccountSummary.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where import Generated.MappedReadmodel.AccountSummary.ReadModel (accountSummaryReadModel)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel account_summary; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel account_summary; do not edit. module Generated.MappedReadmodel.AccountSummary.ReadModelTable (accountSummaryQualifiedTable) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from projection-catalog mapped-readmodel; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from projection-catalog mapped-readmodel; do not edit. {-# LANGUAGE OverloadedStrings #-} module Generated.MappedReadmodel.ProjectionCatalog ( projectionCatalog
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from mapped structural AccountLookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from mapped structural AccountLookup; do not edit. module Generated.MappedReadmodel.Structural.Shape.AccountLookup (AccountLookupShape (..)) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from mapped structural AccountProfile; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from mapped structural AccountProfile; do not edit. module Generated.MappedReadmodel.Structural.Shape.AccountProfile (AccountProfileShape (..)) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from mapped structural AccountSummary; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from mapped structural AccountSummary; do not edit. module Generated.MappedReadmodel.Structural.Shape.AccountSummary (AccountSummaryShape (..)) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from mapped structural TenantKey; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from mapped structural TenantKey; do not edit. module Generated.MappedReadmodel.Structural.Shape.TenantKey (TenantKeyShape (..)) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from mapped structural UnusedFilter; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from mapped structural UnusedFilter; do not edit. module Generated.MappedReadmodel.Structural.Shape.UnusedFilter (UnusedFilterShape (..)) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context mapped-readmodel structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context mapped-readmodel structural conformance; do not edit. module Generated.MappedReadmodel.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,5 +1,5 @@ {-# LANGUAGE TypeFamilies #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context mapped-readmodel mapped structural facade; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context mapped-readmodel mapped structural facade; do not edit. -- Equality witnesses are emitted for Text, Int, Bool, Natural, and UTCTime. -- Nominal ID and enum leaves carry exact canonical-text domains. -- Int, Natural, and UTCTime belong to Keiki's ordered subset.
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context mapped-register-construction behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-register-construction behavior source map; do not edit. module Generated.MappedRegisterConstruction.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit. module Generated.MappedRegisterConstruction.Lifecycle.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit. module Generated.MappedRegisterConstruction.Lifecycle.Codec ( lifecycleCodec, parseLifecycleEvent,
@@ -1,6 +1,6 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit. module Generated.MappedRegisterConstruction.Lifecycle.Domain where import Data.Aeson (FromJSON, ToJSON)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit. module Generated.MappedRegisterConstruction.Lifecycle.EventStream ( lifecycleCategory , lifecycleCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit. module Generated.MappedRegisterConstruction.Lifecycle.Harness (harnessAssertions) where import Generated.MappedRegisterConstruction.Lifecycle.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit. module Generated.MappedRegisterConstruction.Lifecycle.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Lifecycle; do not edit. module Generated.MappedRegisterConstruction.Lifecycle.Transducer ( lifecycleTransducer , lifecycleFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context mapped-register-construction replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-register-construction replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context mapped-register-construction structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-register-construction structural conformance; do not edit. module Generated.MappedRegisterConstruction.StructuralConformance ( structuralConformanceAssertions ) where
@@ -0,0 +1,29 @@+module Conformance.MappedStructuralEnumEquality.Bindings where++import Conformance.MappedStructuralEnumEquality.Domain qualified as Domain+import Data.List.NonEmpty (NonEmpty (..))+import Generated.MappedStructuralEnumEquality.Structural.Shape.RequiredScope qualified as Scope+import Generated.MappedStructuralEnumEquality.Structural.Shape.Request qualified as Request+import Keiro.Codec.Structural (FixtureCases (..), StructuralBinding (..))++requiredScopeBinding :: StructuralBinding Domain.RequiredScope Scope.RequiredScopeShape+requiredScopeBinding = StructuralBinding toShape fromShape+ where+ toShape Domain.PipelineScope = Scope.PipelineScope+ toShape Domain.DiagnosticScope = Scope.DiagnosticScope+ fromShape Scope.PipelineScope = Domain.PipelineScope+ fromShape Scope.DiagnosticScope = Domain.DiagnosticScope++requiredScopeFixtures :: FixtureCases Domain.RequiredScope+requiredScopeFixtures = FixtureCases (("pipeline", Domain.PipelineScope) :| [("diagnostic", Domain.DiagnosticScope)])++initialScope :: Domain.RequiredScope+initialScope = Domain.PipelineScope++requestBinding :: StructuralBinding Domain.Request Request.RequestShape+requestBinding = StructuralBinding+ (\(Domain.Request scope) -> Request.Request (bindingToShape requiredScopeBinding scope))+ (\(Request.Request scope) -> Domain.Request (bindingFromShape requiredScopeBinding scope))++requestFixtures :: FixtureCases Domain.Request+requestFixtures = FixtureCases (("pipeline", Domain.Request Domain.PipelineScope) :| [("diagnostic", Domain.Request Domain.DiagnosticScope)])
@@ -0,0 +1,29 @@+{-# LANGUAGE DeriveAnyClass #-}+module Conformance.MappedStructuralEnumEquality.Domain where++import Data.Aeson (ToJSON (..), FromJSON (..), Value (..), withText)+import Control.DeepSeq (NFData)+import GHC.Generics (Generic)+import Keiki.Shape (CanonicalTypeName (..))++data RequiredScope = PipelineScope | DiagnosticScope+ deriving stock (Eq, Show, Generic)+ deriving anyclass (NFData)++newtype Request = Request { requiredScope :: RequiredScope }+ deriving stock (Eq, Show, Generic)+ deriving anyclass (NFData, ToJSON, FromJSON)++instance ToJSON RequiredScope where+ toJSON PipelineScope = String "pipeline"+ toJSON DiagnosticScope = String "diagnostic"+instance FromJSON RequiredScope where+ parseJSON = withText "RequiredScope" $ \case+ "pipeline" -> pure PipelineScope+ "diagnostic" -> pure DiagnosticScope+ _ -> fail "unknown scope"++instance CanonicalTypeName RequiredScope where+ canonicalTypeName _ = "conformance.RequiredScope.v1"+instance CanonicalTypeName Request where+ canonicalTypeName _ = "conformance.Request.v1"
@@ -0,0 +1,42 @@+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-structural-enum-equality behavior source map; do not edit.+module Generated.MappedStructuralEnumEquality.BehaviorSourceMap+ ( BehaviorSourceLocation (..)+ , behaviorSourceLocation+ , renderBehaviorSourceLocation+ ) where++import Data.Text (Text)+import Data.Text qualified as T++data BehaviorSourceLocation = BehaviorSourceLocation+ { file :: !FilePath+ , line :: !Int+ , column :: !Int+ }+ deriving stock (Eq, Ord, Show)++behaviorSourceLocation :: Text -> Maybe BehaviorSourceLocation+behaviorSourceLocation key = case key of+ "behavior-v1-070772cfee379456" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 28 16)+ "behavior-v1-1cdfb1b7e2088a1a" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 28 16)+ "behavior-v1-2609ef2ca7eca507" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 28 16)+ "behavior-v1-373ac328a7acad82" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 28 16)+ "behavior-v1-3bd69ca93310ff6c" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 69 3)+ "behavior-v1-677f2db2c9c2a230" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 51 3)+ "behavior-v1-734985bac0c81864" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 28 16)+ "behavior-v1-aad7a9b25d6c4dff" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 75 3)+ "behavior-v1-ab778d2eeb34cd73" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 28 16)+ "behavior-v1-b44fa84cbf45f2dc" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 57 3)+ "behavior-v1-c8ec15a0f293621d" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 28 16)+ "behavior-v1-ee7fcaed44a911f9" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 63 3)+ "behavior-v1-f136428bd6a3061f" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 81 3)+ "behavior-v1-fbe937c9ea4bf8c9" -> Just (BehaviorSourceLocation "keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro" 45 3)+ _ -> Nothing++renderBehaviorSourceLocation :: Text -> Text+renderBehaviorSourceLocation key = case behaviorSourceLocation key of+ Just location -> T.pack location.file <> ":" <> tshow location.line <> ":" <> tshow location.column+ Nothing -> "<internal invariant: missing behavior source for " <> key <> ">"++tshow :: Show value => value -> Text+tshow = T.pack . show
@@ -0,0 +1,23 @@+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-structural-enum-equality replay-audit assembly; do not edit.+--+-- Deployment contract:+-- * replay-neutral diff: no data audit is required;+-- * affected diff: run AuditTargeted with the emitted affected set+-- against a production copy under the candidate binary;+-- * one-time runtime cutover: run AuditFull;+-- * any non-zero audit exit blocks deployment.+module Generated.MappedStructuralEnumEquality.ReplayAudit (auditTargets) where++import Generated.MappedStructuralEnumEquality.ScopeGate.EventStream qualified as ScopeGate+import Keiro.ReplayAudit (AuditTarget (..), SomeAuditTarget (..), streamInCategory)+import Keiro.Stream qualified as Stream++auditTargets :: [SomeAuditTarget]+auditTargets =+ [ SomeAuditTarget+ AuditTarget+ { eventStream = ScopeGate.scopeGateEventStream+ , category = Stream.categoryText ScopeGate.scopeGateCategory+ , mkStream = streamInCategory (Stream.categoryText ScopeGate.scopeGateCategory)+ }+ ]
@@ -0,0 +1,512 @@+{-# LANGUAGE OverloadedLabels #-}+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ScopeGate; do not edit.+module Generated.MappedStructuralEnumEquality.ScopeGate.BehaviorContract+ ( BehaviorKey (..)+ , unBehaviorKey+ , ObligationKind (..)+ , EvidenceLevel (..)+ , GuardCoverage (..)+ , BehaviorRequirement (..)+ , RejectionClass (..)+ , LiveExpectation (..)+ , BehaviorWitness (..)+ , BehaviorFailure (..)+ , BehaviorConformanceReport (..)+ , behaviorRequirements+ , behaviorCoverageReport+ , behaviorObligationReport+ , behaviorConformancePassed+ , behaviorConformancePassedWith+ , renderBehaviorConformanceText+ ) where++import Generated.MappedStructuralEnumEquality.ScopeGate.Codec (encodeScopeGateEvent, parseScopeGateEvent, scopeGateCodec)+import Generated.MappedStructuralEnumEquality.ScopeGate.Domain+import Generated.MappedStructuralEnumEquality.ScopeGate.Transducer (scopeGateTransducer)+import Generated.MappedStructuralEnumEquality.BehaviorSourceMap qualified as BehaviorSourceMap+import Data.Aeson (ToJSON (..), object, (.=))+import Data.List (sortOn)+import Data.List.NonEmpty (NonEmpty)+import Data.List.NonEmpty qualified as NonEmpty+import Data.Map.Strict qualified as Map+import Data.Text (Text)+import Data.Text qualified as T+import Keiki.Core qualified as K (EdgeMode (..), EdgeRef (..), RegFile, ReplayAttribution (..), ReplayEventSpan (..), ReplaySuccess (..), StepFailure (..), StepSuccess (..), applyEventsDetailedEither, stepDetailedEither, (!))+import Keiro.Codec qualified as Codec (Codec (eventType), EventType (..))++newtype BehaviorKey = BehaviorKey { unBehaviorKey :: Text }+ deriving stock (Eq, Ord, Show)++unBehaviorKey :: BehaviorKey -> Text+unBehaviorKey (BehaviorKey value) = value++data ObligationKind = LiveTransition | RequiredRejection | ReplayTransition+ deriving stock (Eq, Ord, Show)++data EvidenceLevel = GeneratedAuthoritative | HoleWitnessed | LegacyRuntimeWitness+ deriving stock (Eq, Ord, Show)++data GuardCoverage = GuardTotal | GuardPartial | GuardUnknown | GuardNotApplicable+ deriving stock (Eq, Ord, Show)++data BehaviorRequirement = BehaviorRequirement+ { key :: !BehaviorKey+ , kind :: !ObligationKind+ , evidence :: !EvidenceLevel+ , guardCoverage :: !GuardCoverage+ , source :: !ScopeGateVertex+ , commandName :: !Text+ , expectedEdge :: !(Maybe (K.EdgeRef ScopeGateVertex))+ , target :: !(Maybe ScopeGateVertex)+ , eventKinds :: ![Text]+ }+ deriving stock (Eq, Show)++data RejectionClass = RejectNoOutgoingEdges | RejectNoMatchingEdge+ deriving stock (Eq, Show)++data LiveExpectation+ = Emits (NonEmpty ScopeGateEvent)+ | Rejects RejectionClass+ | NoOp+ deriving stock (Eq, Show)++data BehaviorWitness+ = Pending BehaviorKey+ | LiveWitness+ { key :: BehaviorKey+ , history :: [ScopeGateEvent]+ , command :: ScopeGateCommand+ , expected :: LiveExpectation+ }+ | ReplayWitness+ { key :: BehaviorKey+ , historyPrefix :: [ScopeGateEvent]+ , observedChunk :: [ScopeGateEvent]+ }+ deriving stock (Eq, Show)++data BehaviorFailure = BehaviorFailure+ { key :: !BehaviorKey+ , subject :: !Text+ , code :: !Text+ , detail :: !Text+ }+ deriving stock (Eq, Show)++instance ToJSON BehaviorFailure where+ toJSON behaviorFailure = object+ [ "key" .= unBehaviorKey behaviorFailure.key+ , "subject" .= behaviorFailure.subject+ , "code" .= behaviorFailure.code+ , "detail" .= behaviorFailure.detail+ ]++data BehaviorConformanceReport = BehaviorConformanceReport+ { required :: ![BehaviorKey]+ , filled :: ![BehaviorKey]+ , pending :: ![BehaviorKey]+ , missing :: ![BehaviorKey]+ , duplicate :: ![BehaviorKey]+ , stale :: ![BehaviorKey]+ , failed :: ![BehaviorFailure]+ , verified :: ![BehaviorKey]+ , unverified :: ![BehaviorKey]+ }+ deriving stock (Eq, Show)++instance ToJSON BehaviorConformanceReport where+ toJSON report = object+ [ "schema" .= ("keiro/behavior-conformance/1" :: Text)+ , "required" .= keyTexts report.required+ , "filled" .= keyTexts report.filled+ , "pending" .= keyTexts report.pending+ , "missing" .= keyTexts report.missing+ , "duplicate" .= keyTexts report.duplicate+ , "stale" .= keyTexts report.stale+ , "failed" .= report.failed+ , "verified" .= keyTexts report.verified+ , "unverified" .= keyTexts report.unverified+ ]++behaviorRequirements :: [BehaviorRequirement]+behaviorRequirements =+ [ -- ScopeGateDone x EqRight: required rejection+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-070772cfee379456"+ , kind = RequiredRejection+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardNotApplicable+ , source = ScopeGateDone+ , commandName = "EqRight"+ , expectedEdge = Nothing+ , target = Nothing+ , eventKinds = []+ }+ , -- ScopeGateDone x NeLeft: required rejection+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-1cdfb1b7e2088a1a"+ , kind = RequiredRejection+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardNotApplicable+ , source = ScopeGateDone+ , commandName = "NeLeft"+ , expectedEdge = Nothing+ , target = Nothing+ , eventKinds = []+ }+ , -- ScopeGateDone x NeRight: required rejection+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-2609ef2ca7eca507"+ , kind = RequiredRejection+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardNotApplicable+ , source = ScopeGateDone+ , commandName = "NeRight"+ , expectedEdge = Nothing+ , target = Nothing+ , eventKinds = []+ }+ , -- ScopeGateDone x Differ: required rejection+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-373ac328a7acad82"+ , kind = RequiredRejection+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardNotApplicable+ , source = ScopeGateDone+ , commandName = "Differ"+ , expectedEdge = Nothing+ , target = Nothing+ , eventKinds = []+ }+ , -- ScopeGateReady x NeRight: live transition+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-3bd69ca93310ff6c"+ , kind = LiveTransition+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardUnknown+ , source = ScopeGateReady+ , commandName = "NeRight"+ , expectedEdge = (Just (K.EdgeRef ScopeGateReady 4))+ , target = Just ScopeGateDone+ , eventKinds = ["NeRightAccepted"]+ }+ , -- ScopeGateReady x Differ: live transition+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-677f2db2c9c2a230"+ , kind = LiveTransition+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardUnknown+ , source = ScopeGateReady+ , commandName = "Differ"+ , expectedEdge = (Just (K.EdgeRef ScopeGateReady 1))+ , target = Just ScopeGateDone+ , eventKinds = ["Differed"]+ }+ , -- ScopeGateDone x Self: required rejection+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-734985bac0c81864"+ , kind = RequiredRejection+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardNotApplicable+ , source = ScopeGateDone+ , commandName = "Self"+ , expectedEdge = Nothing+ , target = Nothing+ , eventKinds = []+ }+ , -- ScopeGateReady x NeLeft: live transition+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-aad7a9b25d6c4dff"+ , kind = LiveTransition+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardUnknown+ , source = ScopeGateReady+ , commandName = "NeLeft"+ , expectedEdge = (Just (K.EdgeRef ScopeGateReady 5))+ , target = Just ScopeGateDone+ , eventKinds = ["NeLeftAccepted"]+ }+ , -- ScopeGateDone x Match: required rejection+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-ab778d2eeb34cd73"+ , kind = RequiredRejection+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardNotApplicable+ , source = ScopeGateDone+ , commandName = "Match"+ , expectedEdge = Nothing+ , target = Nothing+ , eventKinds = []+ }+ , -- ScopeGateReady x EqRight: live transition+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-b44fa84cbf45f2dc"+ , kind = LiveTransition+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardUnknown+ , source = ScopeGateReady+ , commandName = "EqRight"+ , expectedEdge = (Just (K.EdgeRef ScopeGateReady 2))+ , target = Just ScopeGateDone+ , eventKinds = ["EqRightAccepted"]+ }+ , -- ScopeGateDone x EqLeft: required rejection+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-c8ec15a0f293621d"+ , kind = RequiredRejection+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardNotApplicable+ , source = ScopeGateDone+ , commandName = "EqLeft"+ , expectedEdge = Nothing+ , target = Nothing+ , eventKinds = []+ }+ , -- ScopeGateReady x EqLeft: live transition+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-ee7fcaed44a911f9"+ , kind = LiveTransition+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardUnknown+ , source = ScopeGateReady+ , commandName = "EqLeft"+ , expectedEdge = (Just (K.EdgeRef ScopeGateReady 3))+ , target = Just ScopeGateDone+ , eventKinds = ["EqLeftAccepted"]+ }+ , -- ScopeGateReady x Self: live transition+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-f136428bd6a3061f"+ , kind = LiveTransition+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardUnknown+ , source = ScopeGateReady+ , commandName = "Self"+ , expectedEdge = (Just (K.EdgeRef ScopeGateReady 6))+ , target = Just ScopeGateDone+ , eventKinds = ["SelfAccepted"]+ }+ , -- ScopeGateReady x Match: live transition+ BehaviorRequirement+ { key = BehaviorKey "behavior-v1-fbe937c9ea4bf8c9"+ , kind = LiveTransition+ , evidence = GeneratedAuthoritative+ , guardCoverage = GuardUnknown+ , source = ScopeGateReady+ , commandName = "Match"+ , expectedEdge = (Just (K.EdgeRef ScopeGateReady 0))+ , target = Just ScopeGateDone+ , eventKinds = ["Matched"]+ }+ ]++behaviorCoverageReport :: [BehaviorWitness] -> BehaviorConformanceReport+behaviorCoverageReport = coverageReportFor behaviorRequirements++-- | Execute one required obligation and the witnesses carrying its key.+-- Hole-owned initial harness probes use the consumer's history-backed evidence.+behaviorObligationReport :: BehaviorKey -> [BehaviorWitness] -> BehaviorConformanceReport+behaviorObligationReport key witnesses =+ coverageReportFor+ [requirement | requirement <- behaviorRequirements, requirement.key == key]+ [witness | witness <- witnesses, behaviorWitnessKey witness == key]++coverageReportFor :: [BehaviorRequirement] -> [BehaviorWitness] -> BehaviorConformanceReport+coverageReportFor requirements witnesses =+ BehaviorConformanceReport+ { required = sortedKeys (Map.keys requiredByKey)+ , filled = sortedKeys [key | (key, [witness]) <- Map.toList witnessGroups, Map.member key requiredByKey, not (isPending witness)]+ , pending = sortedKeys [key | (key, rows) <- Map.toList witnessGroups, Map.member key requiredByKey, any isPending rows]+ , missing = sortedKeys [key | key <- Map.keys requiredByKey, Map.notMember key witnessGroups]+ , duplicate = sortedKeys [key | (key, rows) <- Map.toList witnessGroups, length rows > 1]+ , stale = sortedKeys [key | key <- Map.keys witnessGroups, Map.notMember key requiredByKey]+ , failed = sortOn (unBehaviorKey . (.key)) failures+ , verified = sortedKeys [requirement.key | (requirement, Right ()) <- executions, proofStrength requirement]+ , unverified = sortedKeys [requirement.key | (requirement, Right ()) <- executions, not (proofStrength requirement)]+ }+ where+ requiredByKey = Map.fromList [(requirement.key, requirement) | requirement <- requirements]+ witnessGroups = Map.fromListWith (flip (<>)) [(behaviorWitnessKey witness, [witness]) | witness <- witnesses]+ executions =+ [ (requirement, runWitness requirement witness)+ | (key, [witness]) <- Map.toList witnessGroups+ , not (isPending witness)+ , Just requirement <- [Map.lookup key requiredByKey]+ ]+ failures = [behaviorFailure | (_, Left behaviorFailure) <- executions]++behaviorConformancePassed :: BehaviorConformanceReport -> Bool+behaviorConformancePassed = behaviorConformancePassedWith False++behaviorConformancePassedWith :: Bool -> BehaviorConformanceReport -> Bool+behaviorConformancePassedWith failOnUnverified report =+ null report.pending+ && null report.missing+ && null report.duplicate+ && null report.stale+ && null report.failed+ && (not failOnUnverified || null report.unverified)++renderBehaviorConformanceText :: BehaviorConformanceReport -> Text+renderBehaviorConformanceText report = T.unlines+ [ "behavior conformance: ScopeGate"+ , "schema: keiro/behavior-conformance/1"+ , countLine "required" report.required+ , countLine "filled" report.filled+ , countLine "pending" report.pending+ , countLine "missing" report.missing+ , countLine "duplicate" report.duplicate+ , countLine "stale" report.stale+ , "failed: " <> tshow (length report.failed)+ , countLine "verified" report.verified+ , countLine "unverified" report.unverified+ ] <> T.unlines ["FAIL " <> unBehaviorKey behaviorFailure.key <> " " <> behaviorFailure.subject <> " [" <> behaviorFailure.code <> "] " <> behaviorFailure.detail | behaviorFailure <- report.failed]++runWitness :: BehaviorRequirement -> BehaviorWitness -> Either BehaviorFailure ()+runWitness requirement witness = case witness of+ Pending _ -> failure requirement "pending" "witness is still Pending"+ LiveWitness _ history command expectation -> runLive requirement history command expectation+ ReplayWitness _ prefix chunk -> runReplay requirement prefix chunk++runLive :: BehaviorRequirement -> [ScopeGateEvent] -> ScopeGateCommand -> LiveExpectation -> Either BehaviorFailure ()+runLive requirement history command expectation = do+ settled <- settleHistory requirement "history" history+ ensure requirement (K.replaySuccessState settled == requirement.source) "history-wrong-source" "history does not settle at the required source vertex"+ ensure requirement (commandKind command == requirement.commandName) "command-mismatch" "witness command constructor does not match the required state/command cell"+ case requirement.kind of+ ReplayTransition -> failure requirement "witness-kind" "a replay-only requirement needs ReplayWitness"+ RequiredRejection -> runRejection requirement (K.replaySuccessState settled, K.replaySuccessRegs settled) command expectation+ LiveTransition -> runAcceptance requirement (K.replaySuccessState settled, K.replaySuccessRegs settled) command expectation++runRejection :: BehaviorRequirement -> (ScopeGateVertex, K.RegFile ScopeGateRegs) -> ScopeGateCommand -> LiveExpectation -> Either BehaviorFailure ()+runRejection requirement seed command expectation = case expectation of+ Emits _ -> failure requirement "expectation-kind" "a rejection requirement cannot expect emitted events"+ NoOp -> failure requirement "expectation-kind" "a rejection requirement cannot expect an accepted no-op"+ Rejects expectedClass -> case K.stepDetailedEither scopeGateTransducer seed command of+ Left K.NoOutgoingEdges {} -> ensure requirement (expectedClass == RejectNoOutgoingEdges) "rejection-class" "expected NoMatchingEdge but runtime returned NoOutgoingEdges"+ Left K.NoMatchingEdge {} -> ensure requirement (expectedClass == RejectNoMatchingEdge) "rejection-class" "expected NoOutgoingEdges but runtime returned NoMatchingEdge"+ Left K.AmbiguousEdges {} -> failure requirement "ambiguous-edges" "AmbiguousEdges can never satisfy a rejection witness"+ Right _ -> failure requirement "unexpected-acceptance" "runtime accepted a command required to reject"++runAcceptance :: BehaviorRequirement -> (ScopeGateVertex, K.RegFile ScopeGateRegs) -> ScopeGateCommand -> LiveExpectation -> Either BehaviorFailure ()+runAcceptance requirement seed command expectation = case expectation of+ Rejects _ -> failure requirement "expectation-kind" "a live-transition requirement needs Emits or NoOp"+ NoOp -> case K.stepDetailedEither scopeGateTransducer seed command of+ Left stepFailure -> failure requirement "unexpected-rejection" (tshow stepFailure)+ Right success -> do+ checkAcceptedEnvelope requirement success+ ensure requirement (null (K.stepSuccessOutputs success)) "noop-emitted" "NoOp emitted one or more events"+ ensure requirement (K.stepSuccessState success == fst seed) "noop-vertex-change" "NoOp changed the control vertex"+ ensure requirement (regsEqual (K.stepSuccessRegs success) (snd seed)) "noop-register-change" "NoOp changed one or more registers"+ Emits expectedEvents -> case K.stepDetailedEither scopeGateTransducer seed command of+ Left stepFailure -> failure requirement "unexpected-rejection" (tshow stepFailure)+ Right success -> do+ checkAcceptedEnvelope requirement success+ let expected = NonEmpty.toList expectedEvents+ actual = K.stepSuccessOutputs success+ ensure requirement (actual == expected) "event-value-mismatch" ("runtime event values differ from the exact witness expectation; actual=" <> tshow actual <> " expected=" <> tshow expected)+ ensure requirement (map eventKind actual == requirement.eventKinds) "event-envelope-mismatch" ("runtime event kinds differ from the declared ordered envelope; actual=" <> tshow (map eventKind actual) <> " expected=" <> tshow requirement.eventKinds)+ decoded <- either (failure requirement "emitted-codec-decode") Right (decodeEvents actual)+ replayed <- case K.applyEventsDetailedEither scopeGateTransducer seed decoded of+ Left replayFailure -> failure requirement "emitted-replay-failed" (tshow replayFailure)+ Right replaySuccess -> Right replaySuccess+ ensure requirement (K.replaySuccessState replayed == K.stepSuccessState success) "forward-replay-vertex" "decoded emissions replay to a different vertex"+ ensure requirement (regsEqual (K.replaySuccessRegs replayed) (K.stepSuccessRegs success)) "forward-replay-registers" "decoded emissions replay to different registers"+ checkSingleAttribution requirement K.Live (length decoded) (K.replaySuccessTrace replayed)++checkAcceptedEnvelope :: BehaviorRequirement -> K.StepSuccess ScopeGateRegs ScopeGateVertex ScopeGateEvent -> Either BehaviorFailure ()+checkAcceptedEnvelope requirement success = do+ ensure requirement (K.stepSuccessMode success == K.Live) "forward-mode" ("forward execution selected a non-live edge; actual=" <> tshow (K.stepSuccessMode success) <> " expected=" <> tshow K.Live)+ ensure requirement (Just (K.stepSuccessEdge success) == requirement.expectedEdge) "edge-attribution" ("runtime selected a different guarded sibling; actual=" <> tshow (Just (K.stepSuccessEdge success)) <> " expected=" <> tshow requirement.expectedEdge)+ ensure requirement (Just (K.stepSuccessState success) == requirement.target) "target-mismatch" ("runtime reached a different target vertex; actual=" <> tshow (Just (K.stepSuccessState success)) <> " expected=" <> tshow requirement.target)++runReplay :: BehaviorRequirement -> [ScopeGateEvent] -> [ScopeGateEvent] -> Either BehaviorFailure ()+runReplay requirement prefix chunk = case requirement.kind of+ ReplayTransition -> do+ settled <- settleHistory requirement "history-prefix" prefix+ ensure requirement (K.replaySuccessState settled == requirement.source) "history-wrong-source" "history prefix does not settle at the replay edge source"+ ensure requirement (not (null chunk)) "empty-replay-chunk" "a replay-only edge has no observable empty chunk"+ decoded <- either (failure requirement "replay-chunk-codec-decode") Right (decodeEvents chunk)+ replayed <- case K.applyEventsDetailedEither scopeGateTransducer (K.replaySuccessState settled, K.replaySuccessRegs settled) decoded of+ Left replayFailure -> failure requirement "replay-chunk-failed" (tshow replayFailure)+ Right replaySuccess -> Right replaySuccess+ ensure requirement (Just (K.replaySuccessState replayed) == requirement.target) "target-mismatch" ("replay chunk reached a different target vertex; actual=" <> tshow (Just (K.replaySuccessState replayed)) <> " expected=" <> tshow requirement.target)+ checkSingleAttribution requirement K.ReplayOnly (length decoded) (K.replaySuccessTrace replayed)+ _ -> failure requirement "witness-kind" "ReplayWitness supplied for a non-replay requirement"++checkSingleAttribution :: BehaviorRequirement -> K.EdgeMode -> Int -> [K.ReplayAttribution ScopeGateVertex] -> Either BehaviorFailure ()+checkSingleAttribution requirement expectedMode eventCount trace = case trace of+ [attribution] -> do+ ensure requirement (Just (K.replayAttributionEdge attribution) == requirement.expectedEdge) "replay-edge-attribution" ("replay selected a different edge; actual=" <> tshow (Just (K.replayAttributionEdge attribution)) <> " expected=" <> tshow requirement.expectedEdge)+ ensure requirement (K.replayAttributionMode attribution == expectedMode) "replay-mode-attribution" ("replay selected the wrong live/replay-only phase; actual=" <> tshow (K.replayAttributionMode attribution) <> " expected=" <> tshow expectedMode)+ ensure requirement (K.replayAttributionSource attribution == requirement.source) "replay-source-attribution" ("replay attribution starts at the wrong source; actual=" <> tshow (K.replayAttributionSource attribution) <> " expected=" <> tshow requirement.source)+ ensure requirement (Just (K.replayAttributionTarget attribution) == requirement.target) "replay-target-attribution" ("replay attribution ends at the wrong target; actual=" <> tshow (Just (K.replayAttributionTarget attribution)) <> " expected=" <> tshow requirement.target)+ ensure requirement (K.replayAttributionSpan attribution == K.ReplayEventSpan 0 eventCount) "replay-span-attribution" ("replay attribution did not consume the exact chunk; actual=" <> tshow (K.replayAttributionSpan attribution) <> " expected=" <> tshow (K.ReplayEventSpan 0 eventCount))+ _ -> failure requirement "replay-trace-cardinality" "expected exactly one completed-edge attribution"++settleHistory :: BehaviorRequirement -> Text -> [ScopeGateEvent] -> Either BehaviorFailure (K.ReplaySuccess ScopeGateRegs ScopeGateVertex)+settleHistory requirement label history = do+ decoded <- either (failure requirement (label <> "-codec-decode")) Right (decodeEvents history)+ case K.applyEventsDetailedEither scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) decoded of+ Left replayFailure -> failure requirement (label <> "-replay-failed") (tshow replayFailure)+ Right replaySuccess -> Right replaySuccess++decodeEvents :: [ScopeGateEvent] -> Either Text [ScopeGateEvent]+decodeEvents = traverse (\event -> parseScopeGateEvent (Codec.eventType scopeGateCodec event) (encodeScopeGateEvent event))++commandKind :: ScopeGateCommand -> Text+commandKind command = case command of+ Match _ -> "Match"+ Differ _ -> "Differ"+ EqRight _ -> "EqRight"+ EqLeft _ -> "EqLeft"+ NeRight _ -> "NeRight"+ NeLeft _ -> "NeLeft"+ Self _ -> "Self"++eventKind :: ScopeGateEvent -> Text+eventKind event = case Codec.eventType scopeGateCodec event of Codec.EventType tag -> tag++regsEqual :: K.RegFile ScopeGateRegs -> K.RegFile ScopeGateRegs -> Bool+regsEqual left right = (left K.! #requiredScope) == (right K.! #requiredScope)++proofStrength :: BehaviorRequirement -> Bool+proofStrength requirement =+ requirement.evidence == GeneratedAuthoritative+ && requirement.guardCoverage `elem` [GuardTotal, GuardNotApplicable]++behaviorWitnessKey :: BehaviorWitness -> BehaviorKey+behaviorWitnessKey witness = case witness of+ Pending key -> key+ LiveWitness { key = key } -> key+ ReplayWitness { key = key } -> key++isPending :: BehaviorWitness -> Bool+isPending Pending {} = True+isPending _ = False++ensure :: BehaviorRequirement -> Bool -> Text -> Text -> Either BehaviorFailure ()+ensure requirement condition code detail = if condition then Right () else failure requirement code detail+failure :: BehaviorRequirement -> Text -> Text -> Either BehaviorFailure failed+failure requirement code detail =+ Left+ ( BehaviorFailure+ requirement.key+ (tshow requirement.source <> " x " <> requirement.commandName <> ": " <> kindPhrase <> " (" <> BehaviorSourceMap.renderBehaviorSourceLocation (unBehaviorKey requirement.key) <> ")")+ code+ detail+ )+ where+ kindPhrase = case requirement.kind of+ LiveTransition -> "live transition"+ RequiredRejection -> "required rejection"+ ReplayTransition -> "replay-only transition"+sortedKeys :: [BehaviorKey] -> [BehaviorKey]+sortedKeys = sortOn unBehaviorKey+keyTexts :: [BehaviorKey] -> [Text]+keyTexts = map unBehaviorKey+countLine :: Text -> [BehaviorKey] -> Text+countLine label values = label <> ": " <> tshow (length values)+tshow :: Show value => value -> Text+tshow = T.pack . show
@@ -0,0 +1,203 @@+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ScopeGate; do not edit.+module Generated.MappedStructuralEnumEquality.ScopeGate.Codec (+ scopeGateCodec,+ parseScopeGateEvent,+ encodeScopeGateEvent,+ encodeRequestMapped,+ decodeRequestMapped,+ encodeRequiredScopeMapped,+ decodeRequiredScopeMapped,+) where++import Generated.MappedStructuralEnumEquality.ScopeGate.Domain+import Control.Monad (unless)+import Data.Aeson (Value (..), object, withObject, withText, (.=))+import Data.Aeson.Key qualified as Key+import Data.Aeson.KeyMap qualified as KeyMap+import Data.Aeson.Types (Parser, explicitParseField, parseEither)+import Data.List.NonEmpty (NonEmpty (..))+import Data.List.NonEmpty qualified as NonEmpty+import Data.Text (Text)+import qualified Data.Text as T+import Keiro.Codec.Structural (bindingFromShape, bindingToShape)+import Keiro.Codec (Codec (..), EventType (..))+++import Conformance.MappedStructuralEnumEquality.Bindings qualified as Bindings+import Conformance.MappedStructuralEnumEquality.Domain (Request, RequiredScope)+import Generated.MappedStructuralEnumEquality.Structural.Shape.Request qualified as ShapeRequest+import Generated.MappedStructuralEnumEquality.Structural.Shape.RequiredScope qualified as ShapeRequiredScope++++encodeRequestMapped :: Request -> Value+encodeRequestMapped = encodeRequestShape . bindingToShape Bindings.requestBinding++parseRequestMapped :: Value -> Parser Request+parseRequestMapped value = bindingFromShape Bindings.requestBinding <$> parseRequestShape value++decodeRequestMapped :: Value -> Either Text Request+decodeRequestMapped = mapLeftText . parseEither parseRequestMapped++encodeRequestShape :: ShapeRequest.RequestShape -> Value+encodeRequestShape shape =+ object+ [ "requiredScope" .= encodeRequiredScopeShape (shape.requiredScope)+ ]++parseRequestShape :: Value -> Parser ShapeRequest.RequestShape+parseRequestShape = withObject "RequestShape" $ \objectValue -> do+ rejectUnknownFields "Request" ["requiredScope"] objectValue+ ShapeRequest.Request+ <$> explicitParseField (parseRequiredScopeShape) objectValue "requiredScope"++encodeRequiredScopeMapped :: RequiredScope -> Value+encodeRequiredScopeMapped = encodeRequiredScopeShape . bindingToShape Bindings.requiredScopeBinding++parseRequiredScopeMapped :: Value -> Parser RequiredScope+parseRequiredScopeMapped value = bindingFromShape Bindings.requiredScopeBinding <$> parseRequiredScopeShape value++decodeRequiredScopeMapped :: Value -> Either Text RequiredScope+decodeRequiredScopeMapped = mapLeftText . parseEither parseRequiredScopeMapped++encodeRequiredScopeShape :: ShapeRequiredScope.RequiredScopeShape -> Value+encodeRequiredScopeShape = \case+ ShapeRequiredScope.PipelineScope -> String "pipeline"+ ShapeRequiredScope.DiagnosticScope -> String "diagnostic"++parseRequiredScopeShape :: Value -> Parser ShapeRequiredScope.RequiredScopeShape+parseRequiredScopeShape = withText "RequiredScopeShape" $ \tag -> case tag of+ "pipeline" -> pure ShapeRequiredScope.PipelineScope+ "diagnostic" -> pure ShapeRequiredScope.DiagnosticScope+ unknownTag -> fail ("unknown RequiredScope wire value " <> show unknownTag <> "; expected one of: pipeline, diagnostic")++scopeGateEventTypes :: NonEmpty EventType+scopeGateEventTypes = EventType "Matched" :| [EventType "Differed", EventType "EqRightAccepted", EventType "EqLeftAccepted", EventType "NeRightAccepted", EventType "NeLeftAccepted", EventType "SelfAccepted"]++scopeGateCodec :: Codec ScopeGateEvent+scopeGateCodec =+ Codec+ { eventTypes = scopeGateEventTypes+ , eventType = \case+ Matched{} -> EventType "Matched"+ Differed{} -> EventType "Differed"+ EqRightAccepted{} -> EventType "EqRightAccepted"+ EqLeftAccepted{} -> EventType "EqLeftAccepted"+ NeRightAccepted{} -> EventType "NeRightAccepted"+ NeLeftAccepted{} -> EventType "NeLeftAccepted"+ SelfAccepted{} -> EventType "SelfAccepted"+ , schemaVersion = 1+ , encode = encodeScopeGateEvent+ , decode = parseScopeGateEvent+ , upcasters = []+ }++encodeScopeGateEvent :: ScopeGateEvent -> Value+encodeScopeGateEvent = \case+ Matched payload ->+ object+ [ "kind" .= ("Matched" :: Text)+ , "requiredScope" .= encodeRequiredScopeMapped payload.requiredScope+ , "request" .= encodeRequestMapped payload.request+ ]+ Differed payload ->+ object+ [ "kind" .= ("Differed" :: Text)+ , "requiredScope" .= encodeRequiredScopeMapped payload.requiredScope+ , "request" .= encodeRequestMapped payload.request+ ]+ EqRightAccepted payload ->+ object+ [ "kind" .= ("EqRightAccepted" :: Text)+ , "requiredScope" .= encodeRequiredScopeMapped payload.requiredScope+ , "request" .= encodeRequestMapped payload.request+ ]+ EqLeftAccepted payload ->+ object+ [ "kind" .= ("EqLeftAccepted" :: Text)+ , "requiredScope" .= encodeRequiredScopeMapped payload.requiredScope+ , "request" .= encodeRequestMapped payload.request+ ]+ NeRightAccepted payload ->+ object+ [ "kind" .= ("NeRightAccepted" :: Text)+ , "requiredScope" .= encodeRequiredScopeMapped payload.requiredScope+ , "request" .= encodeRequestMapped payload.request+ ]+ NeLeftAccepted payload ->+ object+ [ "kind" .= ("NeLeftAccepted" :: Text)+ , "requiredScope" .= encodeRequiredScopeMapped payload.requiredScope+ , "request" .= encodeRequestMapped payload.request+ ]+ SelfAccepted payload ->+ object+ [ "kind" .= ("SelfAccepted" :: Text)+ , "requiredScope" .= encodeRequiredScopeMapped payload.requiredScope+ , "request" .= encodeRequestMapped payload.request+ ]++parseScopeGateEvent :: EventType -> Value -> Either Text ScopeGateEvent+parseScopeGateEvent (EventType tag) = mapLeftText . parseEither (withObject "ScopeGateEvent" go)+ where+ go o = do+ case tag of+ "Matched" ->+ Matched+ <$> ( MatchedData+ <$> explicitParseField parseRequiredScopeMapped o "requiredScope"+ <*> explicitParseField parseRequestMapped o "request"+ )+ "Differed" ->+ Differed+ <$> ( DifferedData+ <$> explicitParseField parseRequiredScopeMapped o "requiredScope"+ <*> explicitParseField parseRequestMapped o "request"+ )+ "EqRightAccepted" ->+ EqRightAccepted+ <$> ( EqRightAcceptedData+ <$> explicitParseField parseRequiredScopeMapped o "requiredScope"+ <*> explicitParseField parseRequestMapped o "request"+ )+ "EqLeftAccepted" ->+ EqLeftAccepted+ <$> ( EqLeftAcceptedData+ <$> explicitParseField parseRequiredScopeMapped o "requiredScope"+ <*> explicitParseField parseRequestMapped o "request"+ )+ "NeRightAccepted" ->+ NeRightAccepted+ <$> ( NeRightAcceptedData+ <$> explicitParseField parseRequiredScopeMapped o "requiredScope"+ <*> explicitParseField parseRequestMapped o "request"+ )+ "NeLeftAccepted" ->+ NeLeftAccepted+ <$> ( NeLeftAcceptedData+ <$> explicitParseField parseRequiredScopeMapped o "requiredScope"+ <*> explicitParseField parseRequestMapped o "request"+ )+ "SelfAccepted" ->+ SelfAccepted+ <$> ( SelfAcceptedData+ <$> explicitParseField parseRequiredScopeMapped o "requiredScope"+ <*> explicitParseField parseRequestMapped o "request"+ )+ _ -> fail ("unknown event type " <> show tag <> "; expected one of: " <> renderExpectedEventTypes scopeGateEventTypes)++mapLeftText :: Either String b -> Either Text b+mapLeftText = either (Left . T.pack) Right++renderExpectedEventTypes :: NonEmpty EventType -> String+renderExpectedEventTypes =+ T.unpack+ . T.intercalate ", "+ . map (\(EventType eventTypeName) -> eventTypeName)+ . NonEmpty.toList++rejectUnknownFields :: String -> [Text] -> KeyMap.KeyMap Value -> Parser ()+rejectUnknownFields label allowed objectValue =+ unless (null extras) (fail (label <> " contains unknown fields: " <> show extras))+ where+ extras = filter (`notElem` allowed) (map Key.toText (KeyMap.keys objectValue))
@@ -0,0 +1,135 @@+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE TemplateHaskell #-}+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ScopeGate; do not edit.+module Generated.MappedStructuralEnumEquality.ScopeGate.Domain where++import Data.Aeson (FromJSON, ToJSON)+import Data.Proxy (Proxy (..))+import GHC.Generics (Generic)+import Keiki.Core (RegFile (..))+import Keiki.Shape (CanonicalStateShape, CanonicalTypeName)+import Conformance.MappedStructuralEnumEquality.Bindings qualified as Bindings+import Conformance.MappedStructuralEnumEquality.Domain (Request, RequiredScope)+import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)++data ScopeGateVertex = ScopeGateReady | ScopeGateDone+ deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)+ deriving anyclass (ToJSON, FromJSON)+instance CanonicalStateShape ScopeGateVertex+instance CanonicalTypeName ScopeGateVertex++data MatchData = MatchData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data DifferData = DifferData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data EqRightData = EqRightData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data EqLeftData = EqLeftData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data NeRightData = NeRightData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data NeLeftData = NeLeftData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data SelfData = SelfData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data ScopeGateCommand = Match !MatchData+ | Differ !DifferData+ | EqRight !EqRightData+ | EqLeft !EqLeftData+ | NeRight !NeRightData+ | NeLeft !NeLeftData+ | Self !SelfData+ deriving stock (Generic, Eq, Show)++data MatchedData = MatchedData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data DifferedData = DifferedData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data EqRightAcceptedData = EqRightAcceptedData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data EqLeftAcceptedData = EqLeftAcceptedData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data NeRightAcceptedData = NeRightAcceptedData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data NeLeftAcceptedData = NeLeftAcceptedData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data SelfAcceptedData = SelfAcceptedData+ { requiredScope :: !RequiredScope+ , request :: !Request+ }+ deriving stock (Generic, Eq, Show)++data ScopeGateEvent = Matched !MatchedData+ | Differed !DifferedData+ | EqRightAccepted !EqRightAcceptedData+ | EqLeftAccepted !EqLeftAcceptedData+ | NeRightAccepted !NeRightAcceptedData+ | NeLeftAccepted !NeLeftAcceptedData+ | SelfAccepted !SelfAcceptedData+ deriving stock (Generic, Eq, Show)++type ScopeGateRegs =+ '[ '("requiredScope", RequiredScope)+ ]++initialScopeGateRegs :: RegFile ScopeGateRegs+initialScopeGateRegs =+ RCons (Proxy @"requiredScope") Bindings.initialScope RNil++$(deriveAggregateCtorsAll ''ScopeGateCommand ''ScopeGateRegs)++++$(deriveWireCtorsAll ''ScopeGateEvent)
@@ -0,0 +1,63 @@+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ScopeGate; do not edit.+module Generated.MappedStructuralEnumEquality.ScopeGate.EventStream+ ( scopeGateCategory+ , scopeGateCommandCategory+ , scopeGateEventStream+ , scopeGateEventStreamDef+ , ScopeGateEventStream+ , ScopeGateEventStreamDef+ , scopeGateSnapshotFixture+ ) where++import Generated.MappedStructuralEnumEquality.ScopeGate.Domain+import Generated.MappedStructuralEnumEquality.ScopeGate.Codec (scopeGateCodec)+import Generated.MappedStructuralEnumEquality.ScopeGate.Transducer (scopeGateFoldFingerprint, scopeGateTransducer)+import Keiki.Core (HsPred)+import Keiro.EventStream (EventStream (..), SnapshotPolicy (..))+import Keiro.EventStream.Validate (ValidatedEventStream, mkEventStreamOrThrow)+import Data.Text (Text)+import Keiro.Snapshot.Codec (defaultStateCodec, withFoldFingerprint)+import Keiro.Stream qualified as Stream++-- The validated aggregate stream category (hole-kind 5: referenced, never retyped).+-- Entity streams are '<category>-<id>' via Keiro.Stream.entityStream.+-- categoryUnsafe is safe here because this generated literal passed the DSL category proof.+scopeGateCategory :: Stream.StreamCategory ScopeGateEventStreamDef+scopeGateCategory = Stream.categoryUnsafe "scopeGate"++-- The same category text, typed for command envelopes such as PMCommand.+scopeGateCommandCategory :: Stream.StreamCategory ScopeGateCommand+scopeGateCommandCategory = Stream.categoryUnsafe "scopeGate"++type ScopeGateEventStreamDef =+ EventStream (HsPred ScopeGateRegs ScopeGateCommand) ScopeGateRegs ScopeGateVertex ScopeGateCommand ScopeGateEvent++type ScopeGateEventStream =+ ValidatedEventStream (HsPred ScopeGateRegs ScopeGateCommand) ScopeGateRegs ScopeGateVertex ScopeGateCommand ScopeGateEvent++scopeGateEventStreamDef :: ScopeGateEventStreamDef+scopeGateEventStreamDef =+ EventStream+ { transducer = scopeGateTransducer,+ initialState = ScopeGateReady,+ initialRegisters = initialScopeGateRegs,+ eventCodec = scopeGateCodec,+ resolveStreamName = Stream.streamName,+ snapshotPolicy = Every 1,+ -- The snapshot discriminator composes: the spec's state-codec version (bump it+ -- in the spec's `state-codec version=` clause), keiki's register and+ -- control-state shape hashes, and this fold fingerprint derived from the+ -- spec's transition surface (guards, writes, emits, states, register+ -- initials, referenced rules). Spec-visible fold changes invalidate old+ -- snapshots automatically. Version-2 Hole-owned transitions additionally+ -- compose their explicit hand-owned FoldVersion tokens here; bump the+ -- corresponding token whenever that Hole behavior changes.+ stateCodec = Just (withFoldFingerprint scopeGateFoldFingerprint (defaultStateCodec 1))+ }++scopeGateSnapshotFixture :: (Int, Text)+scopeGateSnapshotFixture = (1, "scope-gate-v1")++scopeGateEventStream :: ScopeGateEventStream+scopeGateEventStream =+ mkEventStreamOrThrow "ScopeGate" scopeGateEventStreamDef
@@ -0,0 +1,364 @@+{-# LANGUAGE OverloadedLabels #-}+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ScopeGate; do not edit.+module Generated.MappedStructuralEnumEquality.ScopeGate.Harness (harnessAssertions) where++import Generated.MappedStructuralEnumEquality.ScopeGate.Domain+import Generated.MappedStructuralEnumEquality.ScopeGate.Codec (encodeScopeGateEvent, parseScopeGateEvent, scopeGateCodec, encodeRequestMapped, decodeRequestMapped, encodeRequiredScopeMapped, decodeRequiredScopeMapped)+import Generated.MappedStructuralEnumEquality.ScopeGate.Transducer (scopeGateTransducer)+import Keiki.Core (applyEventsEither, defaultValidationOptions, step, validateTransducer, fieldWitnessGet, (!))+import Keiro.Codec (eventType)+import Data.Aeson qualified as Aeson+import Data.Aeson.Key qualified as AesonKey+import Data.Aeson.KeyMap qualified as AesonKeyMap+import Data.Either (isLeft)+import Data.List.NonEmpty qualified as NonEmpty+import Data.Text qualified as T+import Keiro.Codec.Structural (FixtureCases (..))+import Generated.MappedStructuralEnumEquality.StructuralProjections qualified as StructuralProjections+import Conformance.MappedStructuralEnumEquality.Bindings qualified as Bindings++-- | (label, passed). A driver runs these and exits non-zero on any False,+-- naming the failing assertion. Filling a hole wrongly turns a specific+-- entry False; the scaffold cannot.+harnessAssertions :: [(String, Bool)]+harnessAssertions =+ [ ("validateTransducer is empty", null (validateTransducer defaultValidationOptions scopeGateTransducer))+ -- clock-free: spec samples no wall clock (verified at scaffold time)+ , ("golden round-trip: Matched", roundTrips sampleEventMatched)+ , ("golden round-trip: Differed", roundTrips sampleEventDiffered)+ , ("golden round-trip: EqRightAccepted", roundTrips sampleEventEqRightAccepted)+ , ("golden round-trip: EqLeftAccepted", roundTrips sampleEventEqLeftAccepted)+ , ("golden round-trip: NeRightAccepted", roundTrips sampleEventNeRightAccepted)+ , ("golden round-trip: NeLeftAccepted", roundTrips sampleEventNeLeftAccepted)+ , ("golden round-trip: SelfAccepted", roundTrips sampleEventSelfAccepted)+ , ("accepts Match from ScopeGateReady", acceptMatch)+ , ("accepts Differ from ScopeGateReady", acceptDiffer)+ , ("accepts EqRight from ScopeGateReady", acceptEqRight)+ , ("accepts EqLeft from ScopeGateReady", acceptEqLeft)+ , ("accepts NeRight from ScopeGateReady", acceptNeRight)+ , ("accepts NeLeft from ScopeGateReady", acceptNeLeft)+ , ("accepts Self from ScopeGateReady", acceptSelf)+ ]+ ++ mappedConformanceAssertions+ ++ forwardReplayMatch+ ++ forwardReplayDiffer+ ++ forwardReplayEqRight+ ++ forwardReplayEqLeft+ ++ forwardReplayNeRight+ ++ forwardReplayNeLeft+ ++ forwardReplaySelf++roundTrips :: ScopeGateEvent -> Bool+roundTrips e = parseScopeGateEvent (eventType scopeGateCodec e) (encodeScopeGateEvent e) == Right e++sampleEventMatched :: ScopeGateEvent+sampleEventMatched = Matched (MatchedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))++sampleEventDiffered :: ScopeGateEvent+sampleEventDiffered = Differed (DifferedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))++sampleEventEqRightAccepted :: ScopeGateEvent+sampleEventEqRightAccepted = EqRightAccepted (EqRightAcceptedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))++sampleEventEqLeftAccepted :: ScopeGateEvent+sampleEventEqLeftAccepted = EqLeftAccepted (EqLeftAcceptedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))++sampleEventNeRightAccepted :: ScopeGateEvent+sampleEventNeRightAccepted = NeRightAccepted (NeRightAcceptedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))++sampleEventNeLeftAccepted :: ScopeGateEvent+sampleEventNeLeftAccepted = NeLeftAccepted (NeLeftAcceptedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))++sampleEventSelfAccepted :: ScopeGateEvent+sampleEventSelfAccepted = SelfAccepted (SelfAcceptedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))++acceptMatch :: Bool+acceptMatch =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (Match (MatchData Bindings.initialScope (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Just (v, _, _) -> v == ScopeGateDone+ Nothing -> False++acceptDiffer :: Bool+acceptDiffer =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (Differ (DifferData (case [value | (_, value) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures), value /= Bindings.initialScope] of value : _ -> value; [] -> error "enum guard requires a matching supplied fixture") (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Just (v, _, _) -> v == ScopeGateDone+ Nothing -> False++acceptEqRight :: Bool+acceptEqRight =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (EqRight (EqRightData (case [value | (_, value) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures), fieldWitnessGet StructuralProjections.requiredScopeWitness value == "pipeline"] of value : _ -> value; [] -> error "enum guard requires a matching supplied fixture") (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Just (v, _, _) -> v == ScopeGateDone+ Nothing -> False++acceptEqLeft :: Bool+acceptEqLeft =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (EqLeft (EqLeftData (case [value | (_, value) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures), fieldWitnessGet StructuralProjections.requiredScopeWitness value == "pipeline"] of value : _ -> value; [] -> error "enum guard requires a matching supplied fixture") (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Just (v, _, _) -> v == ScopeGateDone+ Nothing -> False++acceptNeRight :: Bool+acceptNeRight =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (NeRight (NeRightData (case [value | (_, value) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures), fieldWitnessGet StructuralProjections.requiredScopeWitness value /= "diagnostic"] of value : _ -> value; [] -> error "enum guard requires a matching supplied fixture") (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Just (v, _, _) -> v == ScopeGateDone+ Nothing -> False++acceptNeLeft :: Bool+acceptNeLeft =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (NeLeft (NeLeftData (case [value | (_, value) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures), fieldWitnessGet StructuralProjections.requiredScopeWitness value /= "diagnostic"] of value : _ -> value; [] -> error "enum guard requires a matching supplied fixture") (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Just (v, _, _) -> v == ScopeGateDone+ Nothing -> False++acceptSelf :: Bool+acceptSelf =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (Self (SelfData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Just (v, _, _) -> v == ScopeGateDone+ Nothing -> False++-- forward/replay equality (plan 147): cross the persisted codec boundary,+-- replay the emitted chain, and compare the final vertex and every register.+forwardReplayMatch :: [(String, Bool)]+forwardReplayMatch =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (Match (MatchData Bindings.initialScope (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Nothing -> [(prefix <> "forward step accepted", False)]+ Just (forwardVertex, forwardRegs, emitted) ->+ case mapM (\event -> parseScopeGateEvent (eventType scopeGateCodec event) (encodeScopeGateEvent event)) emitted of+ Left _ -> [(prefix <> "emitted chain decodes", False)]+ Right decodedEvents ->+ case applyEventsEither scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) decodedEvents of+ Left _ -> [(prefix <> "replay succeeds", False)]+ Right (replayVertex, replayRegs) ->+ [ (prefix <> "final vertex", replayVertex == forwardVertex)+ , (prefix <> "register requiredScope", (replayRegs ! #requiredScope) == (forwardRegs ! #requiredScope))+ ]+ where+ prefix = "forward/replay equality: Match from ScopeGateReady -- "++-- forward/replay equality (plan 147): cross the persisted codec boundary,+-- replay the emitted chain, and compare the final vertex and every register.+forwardReplayDiffer :: [(String, Bool)]+forwardReplayDiffer =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (Differ (DifferData (case [value | (_, value) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures), value /= Bindings.initialScope] of value : _ -> value; [] -> error "enum guard requires a matching supplied fixture") (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Nothing -> [(prefix <> "forward step accepted", False)]+ Just (forwardVertex, forwardRegs, emitted) ->+ case mapM (\event -> parseScopeGateEvent (eventType scopeGateCodec event) (encodeScopeGateEvent event)) emitted of+ Left _ -> [(prefix <> "emitted chain decodes", False)]+ Right decodedEvents ->+ case applyEventsEither scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) decodedEvents of+ Left _ -> [(prefix <> "replay succeeds", False)]+ Right (replayVertex, replayRegs) ->+ [ (prefix <> "final vertex", replayVertex == forwardVertex)+ , (prefix <> "register requiredScope", (replayRegs ! #requiredScope) == (forwardRegs ! #requiredScope))+ ]+ where+ prefix = "forward/replay equality: Differ from ScopeGateReady -- "++-- forward/replay equality (plan 147): cross the persisted codec boundary,+-- replay the emitted chain, and compare the final vertex and every register.+forwardReplayEqRight :: [(String, Bool)]+forwardReplayEqRight =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (EqRight (EqRightData (case [value | (_, value) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures), fieldWitnessGet StructuralProjections.requiredScopeWitness value == "pipeline"] of value : _ -> value; [] -> error "enum guard requires a matching supplied fixture") (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Nothing -> [(prefix <> "forward step accepted", False)]+ Just (forwardVertex, forwardRegs, emitted) ->+ case mapM (\event -> parseScopeGateEvent (eventType scopeGateCodec event) (encodeScopeGateEvent event)) emitted of+ Left _ -> [(prefix <> "emitted chain decodes", False)]+ Right decodedEvents ->+ case applyEventsEither scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) decodedEvents of+ Left _ -> [(prefix <> "replay succeeds", False)]+ Right (replayVertex, replayRegs) ->+ [ (prefix <> "final vertex", replayVertex == forwardVertex)+ , (prefix <> "register requiredScope", (replayRegs ! #requiredScope) == (forwardRegs ! #requiredScope))+ ]+ where+ prefix = "forward/replay equality: EqRight from ScopeGateReady -- "++-- forward/replay equality (plan 147): cross the persisted codec boundary,+-- replay the emitted chain, and compare the final vertex and every register.+forwardReplayEqLeft :: [(String, Bool)]+forwardReplayEqLeft =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (EqLeft (EqLeftData (case [value | (_, value) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures), fieldWitnessGet StructuralProjections.requiredScopeWitness value == "pipeline"] of value : _ -> value; [] -> error "enum guard requires a matching supplied fixture") (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Nothing -> [(prefix <> "forward step accepted", False)]+ Just (forwardVertex, forwardRegs, emitted) ->+ case mapM (\event -> parseScopeGateEvent (eventType scopeGateCodec event) (encodeScopeGateEvent event)) emitted of+ Left _ -> [(prefix <> "emitted chain decodes", False)]+ Right decodedEvents ->+ case applyEventsEither scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) decodedEvents of+ Left _ -> [(prefix <> "replay succeeds", False)]+ Right (replayVertex, replayRegs) ->+ [ (prefix <> "final vertex", replayVertex == forwardVertex)+ , (prefix <> "register requiredScope", (replayRegs ! #requiredScope) == (forwardRegs ! #requiredScope))+ ]+ where+ prefix = "forward/replay equality: EqLeft from ScopeGateReady -- "++-- forward/replay equality (plan 147): cross the persisted codec boundary,+-- replay the emitted chain, and compare the final vertex and every register.+forwardReplayNeRight :: [(String, Bool)]+forwardReplayNeRight =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (NeRight (NeRightData (case [value | (_, value) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures), fieldWitnessGet StructuralProjections.requiredScopeWitness value /= "diagnostic"] of value : _ -> value; [] -> error "enum guard requires a matching supplied fixture") (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Nothing -> [(prefix <> "forward step accepted", False)]+ Just (forwardVertex, forwardRegs, emitted) ->+ case mapM (\event -> parseScopeGateEvent (eventType scopeGateCodec event) (encodeScopeGateEvent event)) emitted of+ Left _ -> [(prefix <> "emitted chain decodes", False)]+ Right decodedEvents ->+ case applyEventsEither scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) decodedEvents of+ Left _ -> [(prefix <> "replay succeeds", False)]+ Right (replayVertex, replayRegs) ->+ [ (prefix <> "final vertex", replayVertex == forwardVertex)+ , (prefix <> "register requiredScope", (replayRegs ! #requiredScope) == (forwardRegs ! #requiredScope))+ ]+ where+ prefix = "forward/replay equality: NeRight from ScopeGateReady -- "++-- forward/replay equality (plan 147): cross the persisted codec boundary,+-- replay the emitted chain, and compare the final vertex and every register.+forwardReplayNeLeft :: [(String, Bool)]+forwardReplayNeLeft =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (NeLeft (NeLeftData (case [value | (_, value) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures), fieldWitnessGet StructuralProjections.requiredScopeWitness value /= "diagnostic"] of value : _ -> value; [] -> error "enum guard requires a matching supplied fixture") (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Nothing -> [(prefix <> "forward step accepted", False)]+ Just (forwardVertex, forwardRegs, emitted) ->+ case mapM (\event -> parseScopeGateEvent (eventType scopeGateCodec event) (encodeScopeGateEvent event)) emitted of+ Left _ -> [(prefix <> "emitted chain decodes", False)]+ Right decodedEvents ->+ case applyEventsEither scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) decodedEvents of+ Left _ -> [(prefix <> "replay succeeds", False)]+ Right (replayVertex, replayRegs) ->+ [ (prefix <> "final vertex", replayVertex == forwardVertex)+ , (prefix <> "register requiredScope", (replayRegs ! #requiredScope) == (forwardRegs ! #requiredScope))+ ]+ where+ prefix = "forward/replay equality: NeLeft from ScopeGateReady -- "++-- forward/replay equality (plan 147): cross the persisted codec boundary,+-- replay the emitted chain, and compare the final vertex and every register.+forwardReplaySelf :: [(String, Bool)]+forwardReplaySelf =+ case step scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) (Self (SelfData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))) of+ Nothing -> [(prefix <> "forward step accepted", False)]+ Just (forwardVertex, forwardRegs, emitted) ->+ case mapM (\event -> parseScopeGateEvent (eventType scopeGateCodec event) (encodeScopeGateEvent event)) emitted of+ Left _ -> [(prefix <> "emitted chain decodes", False)]+ Right decodedEvents ->+ case applyEventsEither scopeGateTransducer (ScopeGateReady, initialScopeGateRegs) decodedEvents of+ Left _ -> [(prefix <> "replay succeeds", False)]+ Right (replayVertex, replayRegs) ->+ [ (prefix <> "final vertex", replayVertex == forwardVertex)+ , (prefix <> "register requiredScope", (replayRegs ! #requiredScope) == (forwardRegs ! #requiredScope))+ ]+ where+ prefix = "forward/replay equality: Self from ScopeGateReady -- "++mappedConformanceAssertions :: [(String, Bool)]+mappedConformanceAssertions =+ concat+ [ matchedRequiredScopeAssertions+ , matchedRequestAssertions+ , differedRequiredScopeAssertions+ , differedRequestAssertions+ , eqRightAcceptedRequiredScopeAssertions+ , eqRightAcceptedRequestAssertions+ , eqLeftAcceptedRequiredScopeAssertions+ , eqLeftAcceptedRequestAssertions+ , neRightAcceptedRequiredScopeAssertions+ , neRightAcceptedRequestAssertions+ , neLeftAcceptedRequiredScopeAssertions+ , neLeftAcceptedRequestAssertions+ , selfAcceptedRequiredScopeAssertions+ , selfAcceptedRequestAssertions+ , structuralWirePolicyAssertions+ ]++matchedRequiredScopeAssertions :: [(String, Bool)]+matchedRequiredScopeAssertions =+ [ ("mapped codec round-trip: Matched/requiredScope/" <> T.unpack label, roundTrips (Matched (MatchedData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures)+ ]++matchedRequestAssertions :: [(String, Bool)]+matchedRequestAssertions =+ [ ("mapped codec round-trip: Matched/request/" <> T.unpack label, roundTrips (Matched (MatchedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) mappedValue)))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requestFixtures)+ ]++differedRequiredScopeAssertions :: [(String, Bool)]+differedRequiredScopeAssertions =+ [ ("mapped codec round-trip: Differed/requiredScope/" <> T.unpack label, roundTrips (Differed (DifferedData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures)+ ]++differedRequestAssertions :: [(String, Bool)]+differedRequestAssertions =+ [ ("mapped codec round-trip: Differed/request/" <> T.unpack label, roundTrips (Differed (DifferedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) mappedValue)))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requestFixtures)+ ]++eqRightAcceptedRequiredScopeAssertions :: [(String, Bool)]+eqRightAcceptedRequiredScopeAssertions =+ [ ("mapped codec round-trip: EqRightAccepted/requiredScope/" <> T.unpack label, roundTrips (EqRightAccepted (EqRightAcceptedData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures)+ ]++eqRightAcceptedRequestAssertions :: [(String, Bool)]+eqRightAcceptedRequestAssertions =+ [ ("mapped codec round-trip: EqRightAccepted/request/" <> T.unpack label, roundTrips (EqRightAccepted (EqRightAcceptedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) mappedValue)))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requestFixtures)+ ]++eqLeftAcceptedRequiredScopeAssertions :: [(String, Bool)]+eqLeftAcceptedRequiredScopeAssertions =+ [ ("mapped codec round-trip: EqLeftAccepted/requiredScope/" <> T.unpack label, roundTrips (EqLeftAccepted (EqLeftAcceptedData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures)+ ]++eqLeftAcceptedRequestAssertions :: [(String, Bool)]+eqLeftAcceptedRequestAssertions =+ [ ("mapped codec round-trip: EqLeftAccepted/request/" <> T.unpack label, roundTrips (EqLeftAccepted (EqLeftAcceptedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) mappedValue)))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requestFixtures)+ ]++neRightAcceptedRequiredScopeAssertions :: [(String, Bool)]+neRightAcceptedRequiredScopeAssertions =+ [ ("mapped codec round-trip: NeRightAccepted/requiredScope/" <> T.unpack label, roundTrips (NeRightAccepted (NeRightAcceptedData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures)+ ]++neRightAcceptedRequestAssertions :: [(String, Bool)]+neRightAcceptedRequestAssertions =+ [ ("mapped codec round-trip: NeRightAccepted/request/" <> T.unpack label, roundTrips (NeRightAccepted (NeRightAcceptedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) mappedValue)))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requestFixtures)+ ]++neLeftAcceptedRequiredScopeAssertions :: [(String, Bool)]+neLeftAcceptedRequiredScopeAssertions =+ [ ("mapped codec round-trip: NeLeftAccepted/requiredScope/" <> T.unpack label, roundTrips (NeLeftAccepted (NeLeftAcceptedData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures)+ ]++neLeftAcceptedRequestAssertions :: [(String, Bool)]+neLeftAcceptedRequestAssertions =+ [ ("mapped codec round-trip: NeLeftAccepted/request/" <> T.unpack label, roundTrips (NeLeftAccepted (NeLeftAcceptedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) mappedValue)))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requestFixtures)+ ]++selfAcceptedRequiredScopeAssertions :: [(String, Bool)]+selfAcceptedRequiredScopeAssertions =+ [ ("mapped codec round-trip: SelfAccepted/requiredScope/" <> T.unpack label, roundTrips (SelfAccepted (SelfAcceptedData mappedValue (snd (NonEmpty.head (fixtureCases Bindings.requestFixtures))))))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures)+ ]++selfAcceptedRequestAssertions :: [(String, Bool)]+selfAcceptedRequestAssertions =+ [ ("mapped codec round-trip: SelfAccepted/request/" <> T.unpack label, roundTrips (SelfAccepted (SelfAcceptedData (snd (NonEmpty.head (fixtureCases Bindings.requiredScopeFixtures))) mappedValue)))+ | (label, mappedValue) <- NonEmpty.toList (fixtureCases Bindings.requestFixtures)+ ]++structuralWirePolicyAssertions :: [(String, Bool)]+structuralWirePolicyAssertions =+ [ ("wire policy unknown fields: conformance.Request.v1", all (\(_, value) -> isLeft (decodeRequestMapped (insertObjectField "__keiro_unknown" (Aeson.Bool True) (encodeRequestMapped value)))) (NonEmpty.toList (fixtureCases Bindings.requestFixtures)))+ , ("wire enum arm: conformance.RequiredScope.v1/pipeline", any (\(_, value) -> encodeRequiredScopeMapped value == Aeson.String "pipeline" && decodeRequiredScopeMapped (Aeson.String "pipeline") == Right value) (NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures)))+ , ("wire enum arm: conformance.RequiredScope.v1/diagnostic", any (\(_, value) -> encodeRequiredScopeMapped value == Aeson.String "diagnostic" && decodeRequiredScopeMapped (Aeson.String "diagnostic") == Right value) (NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures)))+ , ("wire enum unknown tag: conformance.RequiredScope.v1", isLeft (decodeRequiredScopeMapped (Aeson.String "__keiro_unknown")))+ ]++insertObjectField :: T.Text -> Aeson.Value -> Aeson.Value -> Aeson.Value+insertObjectField key inserted (Aeson.Object objectValue) = Aeson.Object (AesonKeyMap.insert (AesonKey.fromText key) inserted objectValue)+insertObjectField _ _ value = value
@@ -0,0 +1,4 @@+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ScopeGate; do not edit.+module Generated.MappedStructuralEnumEquality.ScopeGate.Projection () where++-- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -0,0 +1,134 @@+{-# LANGUAGE BlockArguments #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE QualifiedDo #-}+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ScopeGate; do not edit.+module Generated.MappedStructuralEnumEquality.ScopeGate.Transducer+ ( scopeGateTransducer+ , scopeGateFoldFingerprint+ , BehaviorOwnership (..)+ , scopeGatePredicateVerifications+ ) where++import Generated.MappedStructuralEnumEquality.ScopeGate.Domain+import Data.Text (Text)+import Generated.MappedStructuralEnumEquality.StructuralProjections qualified as StructuralProjections+import Conformance.MappedStructuralEnumEquality.Domain (RequiredScope)+import Keiki.Builder qualified as B+import Keiki.Core (HsPred, SymTransducer, (.==), (./=), (.&&), (.||))+import Keiki.Core qualified as K+import Keiki.Symbolic qualified as S+import Keiki.Builder ((=:))+import Keiki.Generics (RegFieldsOf)++scopeGateTransducer+ :: SymTransducer+ (HsPred ScopeGateRegs ScopeGateCommand)+ ScopeGateRegs+ ScopeGateVertex+ ScopeGateCommand+ ScopeGateEvent+scopeGateTransducer =+ B.buildTransducer ScopeGateReady initialScopeGateRegs isTerminal do+ B.from ScopeGateReady do+ B.onCmd inCtorMatch $ \d -> B.do+ let commandRequiredScope = K.inpProj StructuralProjections.requiredScopeWitness inCtorMatch (#requiredScope :: K.Index (RegFieldsOf MatchData) RequiredScope)+ registerRequiredScope = K.regProj StructuralProjections.requiredScopeWitness (#requiredScope :: K.Index ScopeGateRegs RequiredScope)+ B.requireGuard $+ commandRequiredScope .== registerRequiredScope+ B.slot @"requiredScope" =: d.requiredScope+ B.emit wireMatched (MatchedTermFields+ { requiredScope = d.requiredScope+ , request = d.request+ })+ B.goto ScopeGateDone+ B.onCmd inCtorDiffer $ \d -> B.do+ let commandRequiredScope = K.inpProj StructuralProjections.requiredScopeWitness inCtorDiffer (#requiredScope :: K.Index (RegFieldsOf DifferData) RequiredScope)+ registerRequiredScope = K.regProj StructuralProjections.requiredScopeWitness (#requiredScope :: K.Index ScopeGateRegs RequiredScope)+ B.requireGuard $+ commandRequiredScope ./= registerRequiredScope+ B.slot @"requiredScope" =: d.requiredScope+ B.emit wireDiffered (DifferedTermFields+ { requiredScope = d.requiredScope+ , request = d.request+ })+ B.goto ScopeGateDone+ B.onCmd inCtorEqRight $ \d -> B.do+ let commandRequiredScope = K.inpProj StructuralProjections.requiredScopeWitness inCtorEqRight (#requiredScope :: K.Index (RegFieldsOf EqRightData) RequiredScope)+ B.requireGuard $+ commandRequiredScope .== K.lit ("pipeline" :: Text)+ B.slot @"requiredScope" =: d.requiredScope+ B.emit wireEqRightAccepted (EqRightAcceptedTermFields+ { requiredScope = d.requiredScope+ , request = d.request+ })+ B.goto ScopeGateDone+ B.onCmd inCtorEqLeft $ \d -> B.do+ let commandRequiredScope = K.inpProj StructuralProjections.requiredScopeWitness inCtorEqLeft (#requiredScope :: K.Index (RegFieldsOf EqLeftData) RequiredScope)+ B.requireGuard $+ K.lit ("pipeline" :: Text) .== commandRequiredScope+ B.slot @"requiredScope" =: d.requiredScope+ B.emit wireEqLeftAccepted (EqLeftAcceptedTermFields+ { requiredScope = d.requiredScope+ , request = d.request+ })+ B.goto ScopeGateDone+ B.onCmd inCtorNeRight $ \d -> B.do+ let commandRequiredScope = K.inpProj StructuralProjections.requiredScopeWitness inCtorNeRight (#requiredScope :: K.Index (RegFieldsOf NeRightData) RequiredScope)+ B.requireGuard $+ commandRequiredScope ./= K.lit ("diagnostic" :: Text)+ B.slot @"requiredScope" =: d.requiredScope+ B.emit wireNeRightAccepted (NeRightAcceptedTermFields+ { requiredScope = d.requiredScope+ , request = d.request+ })+ B.goto ScopeGateDone+ B.onCmd inCtorNeLeft $ \d -> B.do+ let commandRequiredScope = K.inpProj StructuralProjections.requiredScopeWitness inCtorNeLeft (#requiredScope :: K.Index (RegFieldsOf NeLeftData) RequiredScope)+ B.requireGuard $+ K.lit ("diagnostic" :: Text) ./= commandRequiredScope+ B.slot @"requiredScope" =: d.requiredScope+ B.emit wireNeLeftAccepted (NeLeftAcceptedTermFields+ { requiredScope = d.requiredScope+ , request = d.request+ })+ B.goto ScopeGateDone+ B.onCmd inCtorSelf $ \d -> B.do+ let commandRequiredScope = K.inpProj StructuralProjections.requiredScopeWitness inCtorSelf (#requiredScope :: K.Index (RegFieldsOf SelfData) RequiredScope)+ B.requireGuard $+ commandRequiredScope .== commandRequiredScope+ .&& (commandRequiredScope ./= commandRequiredScope+ .|| commandRequiredScope .== commandRequiredScope)+ B.slot @"requiredScope" =: K.opaqueLit (case K.checkFieldProjectionKey StructuralProjections.requiredScopeWitness "pipeline" of Right owner -> owner; Left problem -> error (show problem))+ B.emit wireSelfAccepted (SelfAcceptedTermFields+ { requiredScope = d.requiredScope+ , request = d.request+ })+ B.goto ScopeGateDone+ where+ isTerminal = \case+ ScopeGateDone -> True+ _ -> False++scopeGateFoldFingerprint :: Text+scopeGateFoldFingerprint = "e0a7710ac6ee88af5cb2a06e40fa922f"++data BehaviorOwnership = GeneratedOwned | HoleOwned+ deriving stock (Eq, Show)++-- Every checked transition predicate is audited through Keiki's conservative+-- symbolic verifier. Opaque Hole terms remain explicitly unverified.+scopeGatePredicateVerifications :: IO [(Text, BehaviorOwnership, S.PredicateVerification)]+scopeGatePredicateVerifications = sequence+ [ verifyTransition "transition1ReadyMatch" GeneratedOwned ScopeGateReady 0+ , verifyTransition "transition2ReadyDiffer" GeneratedOwned ScopeGateReady 1+ , verifyTransition "transition3ReadyEqRight" GeneratedOwned ScopeGateReady 2+ , verifyTransition "transition4ReadyEqLeft" GeneratedOwned ScopeGateReady 3+ , verifyTransition "transition5ReadyNeRight" GeneratedOwned ScopeGateReady 4+ , verifyTransition "transition6ReadyNeLeft" GeneratedOwned ScopeGateReady 5+ , verifyTransition "transition7ReadySelf" GeneratedOwned ScopeGateReady 6+ ]+ where+ verifyTransition label owner source edgeIndex =+ case drop edgeIndex (K.edgesOut scopeGateTransducer source) of+ K.Edge predicate _ _ _ _ : _ -> (\result -> (label, owner, result)) <$> S.verifyPredicate predicate+ [] -> pure (label, owner, S.UnverifiedSolverFailure "generated transition edge missing")
@@ -0,0 +1,10 @@+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural Request; do not edit.+module Generated.MappedStructuralEnumEquality.Structural.Shape.Request (RequestShape (..)) where++import GHC.Generics (Generic)+import Generated.MappedStructuralEnumEquality.Structural.Shape.RequiredScope qualified as RequiredScope++data RequestShape = Request+ { requiredScope :: !RequiredScope.RequiredScopeShape+ }+ deriving stock (Eq, Generic, Show)
@@ -0,0 +1,7 @@+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural RequiredScope; do not edit.+module Generated.MappedStructuralEnumEquality.Structural.Shape.RequiredScope (RequiredScopeShape (..)) where++import GHC.Generics (Generic)++data RequiredScopeShape = PipelineScope | DiagnosticScope+ deriving stock (Eq, Generic, Show)
@@ -0,0 +1,72 @@+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-structural-enum-equality structural conformance; do not edit.+module Generated.MappedStructuralEnumEquality.StructuralConformance+ ( structuralConformanceAssertions+ ) where++import Data.List (nub)+import Data.List.NonEmpty qualified as NonEmpty+import Data.Proxy (Proxy (..))+import Data.Text qualified as T+import Keiki.Core (checkFieldProjectionOwner, checkFieldProjectionKey)+import Keiki.Shape (CanonicalTypeName (..))+import Keiro.Codec.Structural (FixtureCases (..), bindingDomainRoundTrip, bindingShapeRoundTrip, bindingToShape)+import Generated.MappedStructuralEnumEquality.StructuralProjections qualified as StructuralProjections+import Conformance.MappedStructuralEnumEquality.Bindings qualified as Bindings+import Conformance.MappedStructuralEnumEquality.Domain (Request, RequiredScope)+import Generated.MappedStructuralEnumEquality.Structural.Shape.RequiredScope qualified as ShapeRequiredScope++structuralConformanceAssertions :: [(String, Bool)]+structuralConformanceAssertions =+ concat+ [ requestBindingAssertions+ , requiredScopeBindingAssertions+ , [("fixture coverage: conformance.Request.v1", coverageRequest)]+ , [("fixture coverage: conformance.RequiredScope.v1", coverageRequiredScope)]+ , structuralProjectionAssertions+ ]++validFixtureLabels :: NonEmpty.NonEmpty (T.Text, value) -> Bool+validFixtureLabels cases =+ all (not . T.null) labels && length labels == length (nub labels)+ where+ labels = map fst (NonEmpty.toList cases)++requestBindingAssertions :: [(String, Bool)]+requestBindingAssertions =+ ("fixture labels: conformance.Request.v1", validFixtureLabels cases) :+ ("canonical identity: conformance.Request.v1", canonicalTypeName (Proxy @Request) == "conformance.Request.v1") :+ concat+ [ [ ("binding domain round-trip: conformance.Request.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.requestBinding value)+ , ("binding shape round-trip: conformance.Request.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.requestBinding (bindingToShape Bindings.requestBinding value))+ ]+ | (label, value) <- NonEmpty.toList cases+ ]+ where+ cases = fixtureCases Bindings.requestFixtures++requiredScopeBindingAssertions :: [(String, Bool)]+requiredScopeBindingAssertions =+ ("fixture labels: conformance.RequiredScope.v1", validFixtureLabels cases) :+ ("canonical identity: conformance.RequiredScope.v1", canonicalTypeName (Proxy @RequiredScope) == "conformance.RequiredScope.v1") :+ [("exhaustive enum shape round-trip: conformance.RequiredScope.v1", all (bindingShapeRoundTrip Bindings.requiredScopeBinding) [ShapeRequiredScope.PipelineScope, ShapeRequiredScope.DiagnosticScope])] <> concat+ [ [ ("binding domain round-trip: conformance.RequiredScope.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.requiredScopeBinding value)+ , ("binding shape round-trip: conformance.RequiredScope.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.requiredScopeBinding (bindingToShape Bindings.requiredScopeBinding value))+ ]+ | (label, value) <- NonEmpty.toList cases+ ]+ where+ cases = fixtureCases Bindings.requiredScopeFixtures++coverageRequest :: Bool+coverageRequest = True++coverageRequiredScope :: Bool+coverageRequiredScope = any (\case ShapeRequiredScope.PipelineScope -> True; _ -> False) shapes && any (\case ShapeRequiredScope.DiagnosticScope -> True; _ -> False) shapes+ where+ shapes = map (bindingToShape Bindings.requiredScopeBinding . snd) (NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures))++structuralProjectionAssertions :: [(String, Bool)]+structuralProjectionAssertions =+ [ ("projection owner law: conformance.RequiredScope.v1", all (\(_, owner) -> either (const False) (const True) (checkFieldProjectionOwner StructuralProjections.requiredScopeWitness owner)) (NonEmpty.toList (fixtureCases Bindings.requiredScopeFixtures))),+ ("projection key law: conformance.RequiredScope.v1", all (either (const False) (const True) . checkFieldProjectionKey StructuralProjections.requiredScopeWitness) ["pipeline", "diagnostic"])+ ]
@@ -0,0 +1,40 @@+{-# LANGUAGE TypeFamilies #-}+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-structural-enum-equality mapped structural facade; do not edit.+-- Equality witnesses are emitted for Text, Int, Bool, Natural, and UTCTime.+-- Nominal ID and enum leaves carry exact canonical-text domains.+-- Int, Natural, and UTCTime belong to Keiki's ordered subset.+module Generated.MappedStructuralEnumEquality.StructuralProjections+ ( requiredScopeWitness+ , requiredScopeGet+ ) where++import Data.Text (Text)+import Data.List.NonEmpty (NonEmpty (..))+import Keiro.Codec.Structural (bindingToShape, bindingFromShape)+import Keiki.Core (FieldProjection (..), FieldWitness, ExactFieldProjection (..), exactFieldWitness)+import Keiki.ProjectionDomain (finiteProjectionDomain)+import Conformance.MappedStructuralEnumEquality.Bindings qualified as Bindings+import Conformance.MappedStructuralEnumEquality.Domain (RequiredScope)+import Generated.MappedStructuralEnumEquality.Structural.Shape.RequiredScope qualified as ShapeRequiredScope++data RequiredScopeProjection++requiredScopeGet :: RequiredScope -> Text+requiredScopeGet owner = case bindingToShape Bindings.requiredScopeBinding owner of ShapeRequiredScope.PipelineScope -> "pipeline"; ShapeRequiredScope.DiagnosticScope -> "diagnostic"++instance FieldProjection RequiredScopeProjection where+ type FieldName RequiredScopeProjection = ""+ type FieldOwner RequiredScopeProjection = RequiredScope+ type FieldResult RequiredScopeProjection = Text+ fieldShapeId _ = "conformance.RequiredScope.v1"+ projectFieldValue _ = requiredScopeGet++instance ExactFieldProjection RequiredScopeProjection where+ fieldProjectionDomain _ = finiteProjectionDomain ("pipeline" :| ["diagnostic"])+ reconstructFieldOwner _ value = case value of+ "pipeline" -> Just (bindingFromShape Bindings.requiredScopeBinding ShapeRequiredScope.PipelineScope)+ "diagnostic" -> Just (bindingFromShape Bindings.requiredScopeBinding ShapeRequiredScope.DiagnosticScope)+ _ -> Nothing++requiredScopeWitness :: FieldWitness RequiredScopeProjection+requiredScopeWitness = exactFieldWitness @RequiredScopeProjection
@@ -0,0 +1,154 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE TypeApplications #-}+module Main (main) where++import Conformance.MappedStructuralEnumEquality.Domain+import Control.Monad (forM, forM_, unless)+import Data.Aeson (Value (..), object, (.=))+import Data.Aeson qualified as Aeson+import Data.Maybe (isJust)+import Data.Proxy (Proxy (..))+import Data.Text (Text)+import Data.Text qualified as T+import Generated.MappedStructuralEnumEquality.ScopeGate.Codec+import Generated.MappedStructuralEnumEquality.ScopeGate.EventStream (scopeGateEventStreamDef)+import Keiro.EventStream qualified as EventStream+import Keiro.Snapshot.Codec (withFoldFingerprint)+import Generated.MappedStructuralEnumEquality.ScopeGate.Domain+import Generated.MappedStructuralEnumEquality.ScopeGate.Harness (harnessAssertions)+import Generated.MappedStructuralEnumEquality.ScopeGate.Transducer (scopeGateTransducer)+import Generated.MappedStructuralEnumEquality.StructuralConformance (structuralConformanceAssertions)+import Generated.MappedStructuralEnumEquality.StructuralProjections qualified as Projections+import Keiki.Core qualified as K+import Keiki.Symbolic qualified as S+import Keiro.Codec (eventType)+import System.Exit (exitFailure)++main :: IO ()+main = do+ symbolic <- symbolicChecks+ let checks = structuralConformanceAssertions <> harnessAssertions <> symbolic <>+ [("concrete equality and inequality truth tables", concreteMatrix),+ ("expected enum wire meanings", expectedWire),+ ("nested and direct event JSON stays canonical", eventWire),+ ("event JSON bytes preserve declared spellings", exactEventBytes),+ ("generated events decode and replay to forward state", replayAgreement),+ ("compatible snapshot agrees with full replay and changed folds have a different discriminator", snapshotAgreement)]+ forM_ checks $ \(label, passed) -> putStrLn ((if passed then "PASS " else "FAIL ") <> label)+ unless (all snd checks) exitFailure++scopes :: [(RequiredScope, Text)]+scopes = [(PipelineScope, "pipeline"), (DiagnosticScope, "diagnostic")]++regs :: RequiredScope -> K.RegFile ScopeGateRegs+regs scope = K.RCons (Proxy @"requiredScope") scope K.RNil++command :: Int -> RequiredScope -> ScopeGateCommand+command 0 scope = Match (MatchData scope (Request scope))+command 1 scope = Differ (DifferData scope (Request scope))+command 2 scope = EqRight (EqRightData scope (Request scope))+command 3 scope = EqLeft (EqLeftData scope (Request scope))+command 4 scope = NeRight (NeRightData scope (Request scope))+command 5 scope = NeLeft (NeLeftData scope (Request scope))+command 6 scope = Self (SelfData scope (Request scope))+command _ _ = error "unknown fixture command"++accepts :: Int -> RequiredScope -> RequiredScope -> Bool+accepts 0 owner input = owner == input+accepts 1 owner input = owner /= input+accepts 2 _ input = input == PipelineScope+accepts 3 _ input = input == PipelineScope+accepts 4 _ input = input /= DiagnosticScope+accepts 5 _ input = input /= DiagnosticScope+accepts 6 _ _ = True+accepts _ _ _ = error "unknown fixture command"++concreteMatrix :: Bool+concreteMatrix = and+ [ isJust (K.step scopeGateTransducer (ScopeGateReady, regs owner) (command index input)) == accepts index owner input+ | index <- [0..6], (owner, _) <- scopes, (input, _) <- scopes ]++expectedWire :: Bool+expectedWire = and [encodeRequiredScopeMapped owner == String key | (owner, key) <- scopes]++eventWire :: Bool+eventWire = and+ [ encodeScopeGateEvent (Matched (MatchedData owner (Request owner))) ==+ object ["kind" .= ("Matched" :: Text), "requiredScope" .= key, "request" .= object ["requiredScope" .= key]]+ | (owner, key) <- scopes ]++exactEventBytes :: Bool+exactEventBytes =+ Aeson.encode (encodeScopeGateEvent (Matched (MatchedData PipelineScope (Request PipelineScope)))) == "{\"kind\":\"Matched\",\"request\":{\"requiredScope\":\"pipeline\"},\"requiredScope\":\"pipeline\"}"+ && Aeson.encode (encodeScopeGateEvent (Matched (MatchedData DiagnosticScope (Request DiagnosticScope)))) == "{\"kind\":\"Matched\",\"request\":{\"requiredScope\":\"diagnostic\"},\"requiredScope\":\"diagnostic\"}"++replayAgreement :: Bool+replayAgreement = and+ [ case K.step scopeGateTransducer initial (command index input) of+ Nothing -> True+ Just (vertex, registers, events) ->+ case traverse (\event -> parseScopeGateEvent (eventType scopeGateCodec event) (encodeScopeGateEvent event)) events of+ Left _ -> False+ Right decoded -> case K.applyEventsEither scopeGateTransducer initial decoded of+ Left _ -> False+ Right (replayedVertex, replayedRegisters) -> vertex == replayedVertex && registers K.! #requiredScope == replayedRegisters K.! #requiredScope+ | index <- [0..6], (owner, _) <- scopes, (input, _) <- scopes, let initial = (ScopeGateReady, regs owner) ]++scopeTerm :: K.Term ScopeGateRegs ScopeGateCommand '[] Text+scopeTerm = K.regProj Projections.requiredScopeWitness (#requiredScope :: K.Index ScopeGateRegs RequiredScope)++symbolicChecks :: IO [(String, Bool)]+symbolicChecks = do+ matrix <- forM [(index, owner, ownerKey, input, inputKey) | index <- [0..6], (owner, ownerKey) <- scopes, (input, inputKey) <- scopes] $ \(index, owner, ownerKey, input, inputKey) -> do+ let generated = case drop index (K.edgesOut scopeGateTransducer ScopeGateReady) of+ K.Edge edgePredicate _ _ _ _ : _ -> edgePredicate+ _ -> error "generated edge missing"+ predicate = K.PAnd generated (K.PAnd (K.PEq scopeTerm (K.lit ownerKey)) (K.PEq (inputTerm index) (K.lit inputKey)))+ result <- S.verifyPredicateDetailed predicate+ pure ("generated concrete/symbolic matrix: " <> show (index, owner, input), case result of+ S.PredicateSatisfiable S.ExactTranslation values -> accepts index owner input && not (null values) && all modelRoundTrip values+ S.PredicateUnsatisfiable S.ExactTranslation -> not (accepts index owner input)+ _ -> False)+ models <- forM scopes $ \(owner, key) -> do+ result <- S.verifyPredicateDetailed (K.PEq scopeTerm (K.lit key))+ pure ("exact finite reconstruction: " <> show owner, case result of+ S.PredicateSatisfiable strength values -> S.predicateTranslationExact (K.PEq scopeTerm (K.lit key)) && not (null values) && all (\value -> S.projectionModelKeyAs @Text value == Just key && S.projectionModelOwnerAs @RequiredScope value == Just owner) values && strength == S.ExactTranslation+ _ -> False)+ outside <- S.verifyPredicateDetailed (K.PAnd (K.PNot (K.PEq scopeTerm (K.lit "pipeline"))) (K.PNot (K.PEq scopeTerm (K.lit "diagnostic"))))+ pure (matrix <> models <> [("finite domain excludes every undeclared key", case outside of S.PredicateUnsatisfiable _ -> True; _ -> False)])++inputTerm :: Int -> K.Term ScopeGateRegs ScopeGateCommand '[ '("requiredScope", RequiredScope), '("request", Request)] Text+inputTerm index = K.inpProj Projections.requiredScopeWitness constructor #requiredScope+ where+ constructor = case index of+ 0 -> inCtorMatch+ 1 -> inCtorDiffer+ 2 -> inCtorEqRight+ 3 -> inCtorEqLeft+ 4 -> inCtorNeRight+ 5 -> inCtorNeLeft+ 6 -> inCtorSelf+ _ -> error "unknown fixture command"++modelRoundTrip :: S.ProjectionModel -> Bool+modelRoundTrip value = case (S.projectionModelKeyAs @Text value, S.projectionModelOwnerAs @RequiredScope value) of+ (Just key, Just owner) -> (owner, key) `elem` scopes && Projections.requiredScopeGet owner == key+ _ -> False++snapshotAgreement :: Bool+snapshotAgreement = case EventStream.stateCodec scopeGateEventStreamDef of+ Nothing -> False+ Just codec ->+ let initial = (ScopeGateReady, regs PipelineScope)+ events = [Matched (MatchedData PipelineScope (Request PipelineScope))]+ full = K.applyEventsEither scopeGateTransducer initial events+ fromSnapshot = do+ decoded <- EventStream.decode codec (EventStream.encode codec initial)+ either (Left . T.pack . show) Right (K.applyEventsEither scopeGateTransducer decoded events)+ changed = withFoldFingerprint "changed-scope-fold" codec+ in EventStream.stateCodecVersion changed == EventStream.stateCodecVersion codec+ && EventStream.shapeHash changed == EventStream.shapeHash codec+ && EventStream.stateShapeHash changed /= EventStream.stateShapeHash codec+ && case (full, fromSnapshot) of+ (Right (leftVertex, leftRegs), Right (rightVertex, rightRegs)) -> leftVertex == rightVertex && leftRegs K.! #requiredScope == rightRegs K.! #requiredScope+ _ -> False
@@ -0,0 +1,37 @@+module MappedStructuralEnumEquality.ScopeGate.BehaviorHoles (behaviorWitnesses) where++import Conformance.MappedStructuralEnumEquality.Domain+import Data.List.NonEmpty (NonEmpty (..))+import Generated.MappedStructuralEnumEquality.ScopeGate.BehaviorContract+import Generated.MappedStructuralEnumEquality.ScopeGate.Domain++behaviorWitnesses :: [BehaviorWitness]+behaviorWitnesses = map witness behaviorRequirements+ where+ matched = Matched (MatchedData PipelineScope (Request PipelineScope))+ witness requirement = LiveWitness+ { key = requirement.key,+ history = if requirement.source == ScopeGateDone then [matched] else [],+ command = commandFor requirement.commandName,+ expected = case requirement.kind of+ RequiredRejection -> Rejects RejectNoMatchingEdge+ LiveTransition -> Emits (eventFor requirement.commandName :| [])+ ReplayTransition -> error "fixture has no replay-only transitions"+ }++ commandFor "Match" = Match (MatchData PipelineScope (Request PipelineScope))+ commandFor "Differ" = Differ (DifferData DiagnosticScope (Request DiagnosticScope))+ commandFor "EqRight" = EqRight (EqRightData PipelineScope (Request PipelineScope))+ commandFor "EqLeft" = EqLeft (EqLeftData PipelineScope (Request PipelineScope))+ commandFor "NeRight" = NeRight (NeRightData PipelineScope (Request PipelineScope))+ commandFor "NeLeft" = NeLeft (NeLeftData PipelineScope (Request PipelineScope))+ commandFor "Self" = Self (SelfData PipelineScope (Request PipelineScope))+ commandFor _ = error "unknown fixture command"+ eventFor "Match" = matched+ eventFor "Differ" = Differed (DifferedData DiagnosticScope (Request DiagnosticScope))+ eventFor "EqRight" = EqRightAccepted (EqRightAcceptedData PipelineScope (Request PipelineScope))+ eventFor "EqLeft" = EqLeftAccepted (EqLeftAcceptedData PipelineScope (Request PipelineScope))+ eventFor "NeRight" = NeRightAccepted (NeRightAcceptedData PipelineScope (Request PipelineScope))+ eventFor "NeLeft" = NeLeftAccepted (NeLeftAcceptedData PipelineScope (Request PipelineScope))+ eventFor "Self" = SelfAccepted (SelfAcceptedData PipelineScope (Request PipelineScope))+ eventFor _ = error "unknown fixture event"
@@ -0,0 +1,43 @@+-- keiro-dsl build manifest for keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro+-- Paste the complete fragment below into the consuming Cabal stanza.+-- The generated layer is overwritten on every scaffold; hole modules are+-- create-if-absent (filled by hand).++default-language: GHC2024+default-extensions:+ DuplicateRecordFields+ NoFieldSelectors+ OverloadedRecordDot+ OverloadedStrings++other-modules:+ Conformance.MappedStructuralEnumEquality.Bindings+ Generated.MappedStructuralEnumEquality.BehaviorSourceMap+ Generated.MappedStructuralEnumEquality.ReplayAudit+ Generated.MappedStructuralEnumEquality.ScopeGate.BehaviorContract+ Generated.MappedStructuralEnumEquality.ScopeGate.Codec+ Generated.MappedStructuralEnumEquality.ScopeGate.Domain+ Generated.MappedStructuralEnumEquality.ScopeGate.EventStream+ Generated.MappedStructuralEnumEquality.ScopeGate.Harness+ Generated.MappedStructuralEnumEquality.ScopeGate.Projection+ Generated.MappedStructuralEnumEquality.ScopeGate.Transducer+ Generated.MappedStructuralEnumEquality.Structural.Shape.Request+ Generated.MappedStructuralEnumEquality.Structural.Shape.RequiredScope+ Generated.MappedStructuralEnumEquality.StructuralConformance+ Generated.MappedStructuralEnumEquality.StructuralProjections+ MappedStructuralEnumEquality.ScopeGate.BehaviorHoles++build-depends:+ , aeson+ , base+ , keiki+ , keiro+ , keiro-dsl+ , text++consumer-packages:+ keiro-dsl++consumer-modules:+ Conformance.MappedStructuralEnumEquality.Bindings+ Conformance.MappedStructuralEnumEquality.Domain
@@ -0,0 +1,61 @@+keiro-dsl scaffold record v1+spec: keiro-dsl/test/fixtures/mapped-structural-enum-equality.keiro+module-root: (none)+layout: prefixed+source-language {"declaredLanguageVersion":6,"effectiveLanguageVersion":6,"sourceForm":"declared"}+semantic-contract {"languageSupport":"candidate","languageVersion":6,"runtimeSemantics":"keiro-dsl/runtime-semantics/5"}+naming-edition idiomatic-v2+module-role {"family":"StructuralConformance","kind":"generated","ownerKind":"context","ownerName":"context mapped-structural-enum-equality structural conformance","path":"Generated/MappedStructuralEnumEquality/StructuralConformance.hs"}+module-role {"family":"BehaviorSourceMap","kind":"generated","ownerKind":"context","ownerName":"context mapped-structural-enum-equality behavior source map","path":"Generated/MappedStructuralEnumEquality/BehaviorSourceMap.hs"}+module-role {"family":"Request","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural Request (line 14)","path":"Generated/MappedStructuralEnumEquality/Structural/Shape/Request.hs"}+module-role {"family":"RequiredScope","kind":"generated","ownerKind":"mapped","ownerName":"mapped structural RequiredScope (line 4)","path":"Generated/MappedStructuralEnumEquality/Structural/Shape/RequiredScope.hs"}+module-role {"family":"StructuralProjections","kind":"generated","ownerKind":"context","ownerName":"context mapped-structural-enum-equality mapped structural facade","path":"Generated/MappedStructuralEnumEquality/StructuralProjections.hs"}+module-role {"family":"Bindings","kind":"hole","ownerKind":"consumer","ownerName":"consumer binding skeleton Conformance.MappedStructuralEnumEquality.Bindings","path":"Conformance/MappedStructuralEnumEquality/Bindings.hs"}+module-role {"family":"ReplayAudit","kind":"generated","ownerKind":"context","ownerName":"context mapped-structural-enum-equality replay-audit assembly","path":"Generated/MappedStructuralEnumEquality/ReplayAudit.hs"}+module-role {"family":"Domain","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate ScopeGate (line 25)","path":"Generated/MappedStructuralEnumEquality/ScopeGate/Domain.hs"}+module-role {"family":"Codec","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate ScopeGate (line 25)","path":"Generated/MappedStructuralEnumEquality/ScopeGate/Codec.hs"}+module-role {"family":"Transducer","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate ScopeGate (line 25)","path":"Generated/MappedStructuralEnumEquality/ScopeGate/Transducer.hs"}+module-role {"family":"BehaviorContract","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate ScopeGate (line 25)","path":"Generated/MappedStructuralEnumEquality/ScopeGate/BehaviorContract.hs"}+module-role {"family":"BehaviorHoles","kind":"hole","ownerKind":"aggregate","ownerName":"aggregate behavior witnesses ScopeGate (line 25)","path":"MappedStructuralEnumEquality/ScopeGate/BehaviorHoles.hs"}+module-role {"family":"EventStream","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate ScopeGate (line 25)","path":"Generated/MappedStructuralEnumEquality/ScopeGate/EventStream.hs"}+module-role {"family":"Projection","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate ScopeGate (line 25)","path":"Generated/MappedStructuralEnumEquality/ScopeGate/Projection.hs"}+module-role {"family":"Harness","kind":"generated","ownerKind":"aggregate","ownerName":"aggregate ScopeGate (line 25)","path":"Generated/MappedStructuralEnumEquality/ScopeGate/Harness.hs"}+generated Generated/MappedStructuralEnumEquality/StructuralConformance.hs+generated Generated/MappedStructuralEnumEquality/BehaviorSourceMap.hs+generated Generated/MappedStructuralEnumEquality/Structural/Shape/Request.hs+generated Generated/MappedStructuralEnumEquality/Structural/Shape/RequiredScope.hs+generated Generated/MappedStructuralEnumEquality/StructuralProjections.hs+hole Conformance/MappedStructuralEnumEquality/Bindings.hs+generated Generated/MappedStructuralEnumEquality/ReplayAudit.hs+generated Generated/MappedStructuralEnumEquality/ScopeGate/Domain.hs+generated Generated/MappedStructuralEnumEquality/ScopeGate/Codec.hs+generated Generated/MappedStructuralEnumEquality/ScopeGate/Transducer.hs+generated Generated/MappedStructuralEnumEquality/ScopeGate/BehaviorContract.hs+hole MappedStructuralEnumEquality/ScopeGate/BehaviorHoles.hs+generated Generated/MappedStructuralEnumEquality/ScopeGate/EventStream.hs+generated Generated/MappedStructuralEnumEquality/ScopeGate/Projection.hs+generated Generated/MappedStructuralEnumEquality/ScopeGate/Harness.hs+mapping {"bindingSymbol":"Conformance.MappedStructuralEnumEquality.Bindings.requestBinding","bindingVersion":"1","canonicalType":"conformance.Request.v1","mode":"structural","module":"Conformance.MappedStructuralEnumEquality.Domain","package":"keiro-dsl","schema":1,"specName":"Request","type":"Request"}+mapping {"bindingSymbol":"Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeBinding","bindingVersion":"1","canonicalType":"conformance.RequiredScope.v1","mode":"structural","module":"Conformance.MappedStructuralEnumEquality.Domain","package":"keiro-dsl","schema":1,"specName":"RequiredScope","type":"RequiredScope"}+structural-enum-equality keiro-dsl/structural-enum-equality/1:["RequiredScope","keiro-dsl","Conformance.MappedStructuralEnumEquality.Domain","RequiredScope","Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeBinding","1","conformance.RequiredScope.v1","[[\"DiagnosticScope\",\"diagnostic\"],[\"PipelineScope\",\"pipeline\"]]"]+binding {"kind":"binding","mappedName":"Request","module":"Conformance.MappedStructuralEnumEquality.Bindings","path":"requiredScope","schema":1,"signature":"requestBinding.requiredScope :: RequiredScope","symbol":"requestBinding"}+binding {"kind":"fixtures","mappedName":"Request","module":"Conformance.MappedStructuralEnumEquality.Bindings","path":null,"schema":1,"signature":"requestFixtures :: FixtureCases Conformance.MappedStructuralEnumEquality.Domain.Request","symbol":"requestFixtures"}+binding {"kind":"binding","mappedName":"RequiredScope","module":"Conformance.MappedStructuralEnumEquality.Bindings","path":"DiagnosticScope","schema":1,"signature":"requiredScopeBinding.DiagnosticScope :: constructor case","symbol":"requiredScopeBinding"}+binding {"kind":"binding","mappedName":"RequiredScope","module":"Conformance.MappedStructuralEnumEquality.Bindings","path":"PipelineScope","schema":1,"signature":"requiredScopeBinding.PipelineScope :: constructor case","symbol":"requiredScopeBinding"}+binding {"kind":"fixtures","mappedName":"RequiredScope","module":"Conformance.MappedStructuralEnumEquality.Bindings","path":null,"schema":1,"signature":"requiredScopeFixtures :: FixtureCases Conformance.MappedStructuralEnumEquality.Domain.RequiredScope","symbol":"requiredScopeFixtures"}+binding {"kind":"initial-value","mappedName":"RequiredScope","module":"Conformance.MappedStructuralEnumEquality.Bindings","path":null,"schema":1,"signature":"initialScope :: Conformance.MappedStructuralEnumEquality.Domain.RequiredScope","symbol":"initialScope"}+behavior {"aggregate":"ScopeGate","command":"EqRight","evidence":"generated-authoritative","key":"behavior-v1-070772cfee379456","kind":"required-rejection","outputs":[],"source":"Done"}+behavior {"aggregate":"ScopeGate","command":"NeLeft","evidence":"generated-authoritative","key":"behavior-v1-1cdfb1b7e2088a1a","kind":"required-rejection","outputs":[],"source":"Done"}+behavior {"aggregate":"ScopeGate","command":"NeRight","evidence":"generated-authoritative","key":"behavior-v1-2609ef2ca7eca507","kind":"required-rejection","outputs":[],"source":"Done"}+behavior {"aggregate":"ScopeGate","command":"Differ","evidence":"generated-authoritative","key":"behavior-v1-373ac328a7acad82","kind":"required-rejection","outputs":[],"source":"Done"}+behavior {"aggregate":"ScopeGate","command":"NeRight","evidence":"generated-authoritative","key":"behavior-v1-3bd69ca93310ff6c","kind":"live-transition","outputs":[{"command":"NeRight","ownership":"generated-command-identity"}],"source":"Ready"}+behavior {"aggregate":"ScopeGate","command":"Differ","evidence":"generated-authoritative","key":"behavior-v1-677f2db2c9c2a230","kind":"live-transition","outputs":[{"command":"Differ","ownership":"generated-command-identity"}],"source":"Ready"}+behavior {"aggregate":"ScopeGate","command":"Self","evidence":"generated-authoritative","key":"behavior-v1-734985bac0c81864","kind":"required-rejection","outputs":[],"source":"Done"}+behavior {"aggregate":"ScopeGate","command":"NeLeft","evidence":"generated-authoritative","key":"behavior-v1-aad7a9b25d6c4dff","kind":"live-transition","outputs":[{"command":"NeLeft","ownership":"generated-command-identity"}],"source":"Ready"}+behavior {"aggregate":"ScopeGate","command":"Match","evidence":"generated-authoritative","key":"behavior-v1-ab778d2eeb34cd73","kind":"required-rejection","outputs":[],"source":"Done"}+behavior {"aggregate":"ScopeGate","command":"EqRight","evidence":"generated-authoritative","key":"behavior-v1-b44fa84cbf45f2dc","kind":"live-transition","outputs":[{"command":"EqRight","ownership":"generated-command-identity"}],"source":"Ready"}+behavior {"aggregate":"ScopeGate","command":"EqLeft","evidence":"generated-authoritative","key":"behavior-v1-c8ec15a0f293621d","kind":"required-rejection","outputs":[],"source":"Done"}+behavior {"aggregate":"ScopeGate","command":"EqLeft","evidence":"generated-authoritative","key":"behavior-v1-ee7fcaed44a911f9","kind":"live-transition","outputs":[{"command":"EqLeft","ownership":"generated-command-identity"}],"source":"Ready"}+behavior {"aggregate":"ScopeGate","command":"Self","evidence":"generated-authoritative","key":"behavior-v1-f136428bd6a3061f","kind":"live-transition","outputs":[{"command":"Self","ownership":"generated-command-identity"}],"source":"Ready"}+behavior {"aggregate":"ScopeGate","command":"Match","evidence":"generated-authoritative","key":"behavior-v1-fbe937c9ea4bf8c9","kind":"live-transition","outputs":[{"command":"Match","ownership":"generated-command-identity"}],"source":"Ready"}+semantic-impact {"declarations":[{"consequences":[{"consumer":"ScopeGate","kind":"consumer-build"},{"aggregate":"ScopeGate","kind":"private-event-history"}],"consumerEvidence":[{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command Differ .request : Request","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command EqLeft .request : Request","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command EqRight .request : Request","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command Match .request : Request","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command NeLeft .request : Request","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command NeRight .request : Request","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command Self .request : Request","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event Differed .request : Request","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event EqLeftAccepted .request : Request","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event EqRightAccepted .request : Request","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event Matched .request : Request","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event NeLeftAccepted .request : Request","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event NeRightAccepted .request : Request","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event SelfAccepted .request : Request","surface":"private-event-payload"}],"consumers":["ScopeGate"],"declaration":"Request","identity":"structural\u001fkeiro-dsl:Conformance.MappedStructuralEnumEquality.Domain:Request\u001fConformance.MappedStructuralEnumEquality.Bindings.requestBinding\u001f1\u001fconformance.Request.v1\u001fConformance.MappedStructuralEnumEquality.Bindings.requestFixtures\u001f\u001f0937ea60012cd4a9\u001frecord:Request:requiredScope=requiredScope"},{"consequences":[{"consumer":"ScopeGate","kind":"consumer-build"},{"aggregate":"ScopeGate","kind":"private-event-history"},{"aggregate":"ScopeGate","kind":"snapshot-hydration"}],"consumerEvidence":[{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command Differ .request : Request .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command Differ .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command EqLeft .request : Request .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command EqLeft .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command EqRight .request : Request .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command EqRight .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command Match .request : Request .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command Match .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command NeLeft .request : Request .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command NeLeft .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command NeRight .request : Request .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command NeRight .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command Self .request : Request .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate command Self .requiredScope : RequiredScope","surface":"aggregate-command"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event Differed .request : Request .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event Differed .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event EqLeftAccepted .request : Request .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event EqLeftAccepted .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event EqRightAccepted .request : Request .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event EqRightAccepted .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event Matched .request : Request .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event Matched .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event NeLeftAccepted .request : Request .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event NeLeftAccepted .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event NeRightAccepted .request : Request .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event NeRightAccepted .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event SelfAccepted .request : Request .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate event SelfAccepted .requiredScope : RequiredScope","surface":"private-event-payload"},{"consumer":"ScopeGate","operation":null,"path":"ScopeGate register requiredScope : RequiredScope","surface":"snapshot-register"}],"consumers":["ScopeGate"],"declaration":"RequiredScope","identity":"structural\u001fkeiro-dsl:Conformance.MappedStructuralEnumEquality.Domain:RequiredScope\u001fConformance.MappedStructuralEnumEquality.Bindings.requiredScopeBinding\u001f1\u001fconformance.RequiredScope.v1\u001fConformance.MappedStructuralEnumEquality.Bindings.requiredScopeFixtures\u001fConformance.MappedStructuralEnumEquality.Bindings.initialScope\u001f0b2821aba8872fd3\u001fenum:DiagnosticScope=diagnostic,PipelineScope=pipeline"}],"mappedSurfaceEvidenceVersion":1,"serviceInventory":["Request","RequiredScope"]}
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context transfer-routing behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context transfer-routing behavior source map; do not edit. module Generated.TransferRouting.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.Codec ( hospitalCodec, parseHospitalEvent,
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.Domain where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.EventStream ( hospitalCategory , hospitalCommandCategory
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.Harness (harnessAssertions) where import Generated.TransferRouting.Hospital.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.TransferRouting.Hospital.Transducer ( hospitalTransducer , hospitalFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel hospital_load; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel hospital_load; do not edit. module Generated.TransferRouting.HospitalLoad.ReadModel ( hospitalLoadReadModel , hospitalLoadQualifiedTable
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel hospital_load; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel hospital_load; do not edit. module Generated.TransferRouting.HospitalLoad.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts) where import Generated.TransferRouting.HospitalLoad.ReadModel (hospitalLoadReadModel, hospitalLoadAsyncProjection)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel hospital_load; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel hospital_load; do not edit. module Generated.TransferRouting.HospitalLoad.ReadModelTable (hospitalLoadQualifiedTable) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from router HospitalTransferRouter; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from router HospitalTransferRouter; do not edit. module Generated.TransferRouting.HospitalTransferRouter.Router ( hospitalTransferRouterName , hospitalTransferRouterWorkerOptions
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from router HospitalTransferRouter; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from router HospitalTransferRouter; do not edit. module Generated.TransferRouting.HospitalTransferRouter.RouterHarness (routerHarnessValues) where routerHarnessValues :: [(String, String)]
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context transfer-routing replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context transfer-routing replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context mapped-nominal-query-only generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-nominal-query-only generated nominal declarations; do not edit. module Generated.MappedNominalQueryOnly.Nominals ( TemplateId , parseTemplateId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context mapped-nominal-query-only generated nominal ID internals; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-nominal-query-only generated nominal ID internals; do not edit. module Generated.MappedNominalQueryOnly.Nominals.Internal ( TemplateId , parseTemplateId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from projection-catalog mapped-nominal-query-only; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from projection-catalog mapped-nominal-query-only; do not edit. {-# LANGUAGE OverloadedStrings #-} module Generated.MappedNominalQueryOnly.ProjectionCatalog ( projectionCatalog
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context mapped-nominal-query-only structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-nominal-query-only structural conformance; do not edit. module Generated.MappedNominalQueryOnly.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit. module Generated.MappedNominalQueryOnly.TemplateLookup.QueryContract ( TemplateLookupQueryInput , TemplateLookupQueryResult
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit. module Generated.MappedNominalQueryOnly.TemplateLookup.ReadModel ( templateLookupReadModel , templateLookupQualifiedTable
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit. module Generated.MappedNominalQueryOnly.TemplateLookup.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where import Generated.MappedNominalQueryOnly.TemplateLookup.ReadModel (templateLookupReadModel)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel template_lookup; do not edit. module Generated.MappedNominalQueryOnly.TemplateLookup.ReadModelTable (templateLookupQualifiedTable) where import Data.Text (Text)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context mapped-nominal-queue-only generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-nominal-queue-only generated nominal declarations; do not edit. module Generated.MappedNominalQueueOnly.Nominals ( TemplateId , parseTemplateId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context mapped-nominal-queue-only generated nominal ID internals; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-nominal-queue-only generated nominal ID internals; do not edit. module Generated.MappedNominalQueueOnly.Nominals.Internal ( TemplateId , parseTemplateId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context mapped-nominal-queue-only structural nominal leaves; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-nominal-queue-only structural nominal leaves; do not edit. module Generated.MappedNominalQueueOnly.Structural.NominalLeaves where import Data.Aeson (Value (..), withText)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context mapped-nominal-queue-only structural conformance; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context mapped-nominal-queue-only structural conformance; do not edit. module Generated.MappedNominalQueueOnly.StructuralConformance ( structuralConformanceAssertions ) where
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue template_work; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue template_work; do not edit. module Generated.MappedNominalQueueOnly.TemplateWork.Queue ( TemplateWork (..) , encodeTemplateWork
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue template_work; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue template_work; do not edit. -- | Versioned job payload envelope: @{\"v\",\"t\",\"data\"}@. -- -- Deploy workers before producers when raising its schema version. Do not
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue template_work; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue template_work; do not edit. module Generated.MappedNominalQueueOnly.TemplateWork.QueuePolicy ( TemplateWorkOutcome (..) , retryPolicy, jobOutcomeFor
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context nominal-scalars behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context nominal-scalars behavior source map; do not edit. module Generated.NominalScalars.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from bound nominal enum representation OrderStatus; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from bound nominal enum representation OrderStatus; do not edit. module Generated.NominalScalars.Nominal.Shape.OrderStatus (OrderStatusRepresentation (..), orderStatusRepresentationText) where import Data.Text (Text)
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit. module Generated.NominalScalars.NominalLedger.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit. module Generated.NominalScalars.NominalLedger.Codec ( nominalLedgerCodec, parseNominalLedgerEvent,
@@ -1,6 +1,6 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit. module Generated.NominalScalars.NominalLedger.Domain where import Data.Aeson (FromJSON, ToJSON)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit. module Generated.NominalScalars.NominalLedger.EventStream ( nominalLedgerCategory , nominalLedgerCommandCategory
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedLabels #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit. module Generated.NominalScalars.NominalLedger.Harness (harnessAssertions) where import Generated.NominalScalars.NominalLedger.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit. module Generated.NominalScalars.NominalLedger.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,7 +1,7 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE OverloadedLabels #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate NominalLedger; do not edit. module Generated.NominalScalars.NominalLedger.Transducer ( nominalLedgerTransducer , nominalLedgerFoldFingerprint
@@ -1,5 +1,5 @@ {-# LANGUAGE TypeFamilies #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context nominal-scalars nominal scalar projection facade; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context nominal-scalars nominal scalar projection facade; do not edit. module Generated.NominalScalars.NominalProjections where import Data.KindID qualified as KindID
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context nominal-scalars replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context nominal-scalars replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -10,6 +10,7 @@ import Control.Monad (forM_, unless) import Data.Aeson (Value (..), object, toJSON, (.=)) import Data.Aeson.Key (Key)+import Data.List (sortOn) import qualified Data.Aeson.KeyMap as KeyMap import qualified Data.KindID as KindID import qualified Data.List.NonEmpty as NE@@ -227,10 +228,11 @@ (\fixture -> encodeRepresentation (nominalFixtureDomain fixture) == nominalFixtureWire fixture) (NE.toList (nominalFixtureCases fixtures)) +-- Coverage is a set property: supplied fixture order is not a contract. enumCoverage :: Bool enumCoverage =- representations == [Representation.Draft, Representation.Submitted]- && wires == [String "draft", String "submitted"]+ sortOn fst (zip representations wires)+ == [(Representation.Draft, String "draft"), (Representation.Submitted, String "submitted")] where fixtures = NE.toList (nominalFixtureCases Bindings.orderStatusFixtures) representations = map (nominalToRepresentation Bindings.orderStatusBinding . nominalFixtureDomain) fixtures
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context surge-demo behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context surge-demo behavior source map; do not edit. module Generated.SurgeDemo.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.SurgeDemo.Hospital.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.SurgeDemo.Hospital.Codec ( hospitalCodec, parseHospitalEvent,
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.SurgeDemo.Hospital.Domain where import GHC.Generics (Generic)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.SurgeDemo.Hospital.EventStream ( hospitalCategory , hospitalCommandCategory
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.SurgeDemo.Hospital.Harness (harnessAssertions) where import Generated.SurgeDemo.Hospital.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.SurgeDemo.Hospital.Projection ( hospitalProjection , hospitalStatusFor
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Hospital; do not edit. module Generated.SurgeDemo.Hospital.Transducer ( hospitalTransducer , hospitalFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context surge-demo generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context surge-demo generated nominal declarations; do not edit. module Generated.SurgeDemo.Nominals ( HospitalId , parseHospitalId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context surge-demo generated nominal ID internals; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context surge-demo generated nominal ID internals; do not edit. module Generated.SurgeDemo.Nominals.Internal ( HospitalId , parseHospitalId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context surge-demo replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context surge-demo replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit. module Generated.SurgeDemo.Surge.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit. module Generated.SurgeDemo.Surge.Codec ( surgeCodec, parseSurgeEvent,
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit. module Generated.SurgeDemo.Surge.Domain where import GHC.Generics (Generic)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit. module Generated.SurgeDemo.Surge.EventStream ( surgeCategory , surgeCommandCategory
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit. module Generated.SurgeDemo.Surge.Harness (harnessAssertions) where import Generated.SurgeDemo.Surge.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit. module Generated.SurgeDemo.Surge.Projection ( surgeProjection , surgeStatusFor
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Surge; do not edit. module Generated.SurgeDemo.Surge.Transducer ( surgeTransducer , surgeFoldFingerprint
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from process SurgeFlow; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from process SurgeFlow; do not edit. module Generated.SurgeDemo.SurgeFlow.Process ( surgeFlowProcessName , surgeFlowCategory
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from process SurgeFlow; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from process SurgeFlow; do not edit. module Generated.SurgeDemo.SurgeFlow.ProcessHarness (processHarnessValues) where -- | (label, value): the spec's deterministic process/timer decisions,
@@ -1,5 +1,5 @@ {-# LANGUAGE DeriveAnyClass #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process input AuditOnly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process input AuditOnly; do not edit. module Generated.ProcessReactions.AuditOnly.Input (AuditOnlyInput (..)) where import Data.Aeson (FromJSON, ToJSON)
@@ -1,5 +1,5 @@ {-# OPTIONS_GHC -Wno-missing-signatures #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process reaction AuditOnly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process reaction AuditOnly; do not edit. module Generated.ProcessReactions.AuditOnly.Process ( AuditOnlyInput (..) , auditOnlyProcessName
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process AuditOnly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process AuditOnly; do not edit. module Generated.ProcessReactions.AuditOnly.ProcessHarness (processHarnessValues) where -- | (label, value): the spec's deterministic process/timer decisions,
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context process-reactions behavior source map; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context process-reactions behavior source map; do not edit. module Generated.ProcessReactions.BehaviorSourceMap ( BehaviorSourceLocation (..) , behaviorSourceLocation
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit. module Generated.ProcessReactions.Incident.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit. module Generated.ProcessReactions.Incident.Codec ( incidentCodec, parseIncidentEvent,
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit. module Generated.ProcessReactions.Incident.Domain where import GHC.Generics (Generic)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit. module Generated.ProcessReactions.Incident.EventStream ( incidentCategory , incidentCommandCategory
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit. module Generated.ProcessReactions.Incident.Harness (harnessAssertions) where import Generated.ProcessReactions.Incident.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit. module Generated.ProcessReactions.Incident.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Incident; do not edit. module Generated.ProcessReactions.Incident.Transducer ( incidentTransducer , incidentFoldFingerprint
@@ -1,5 +1,5 @@ {-# LANGUAGE DeriveAnyClass #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process input IncidentReaction; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process input IncidentReaction; do not edit. module Generated.ProcessReactions.IncidentReaction.Input (IncidentReactionInput (..)) where import Data.Aeson (FromJSON, ToJSON)
@@ -1,5 +1,5 @@ {-# OPTIONS_GHC -Wno-missing-signatures #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process reaction IncidentReaction; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process reaction IncidentReaction; do not edit. module Generated.ProcessReactions.IncidentReaction.Process ( IncidentReactionInput (..) , incidentReactionProcessName
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process IncidentReaction; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process IncidentReaction; do not edit. module Generated.ProcessReactions.IncidentReaction.ProcessHarness (processHarnessValues) where -- | (label, value): the spec's deterministic process/timer decisions,
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit. module Generated.ProcessReactions.IncidentSaga.BehaviorContract ( BehaviorKey (..) , unBehaviorKey
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit. module Generated.ProcessReactions.IncidentSaga.Codec ( incidentSagaCodec, parseIncidentSagaEvent,
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit. module Generated.ProcessReactions.IncidentSaga.Domain where import GHC.Generics (Generic)
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit. module Generated.ProcessReactions.IncidentSaga.EventStream ( incidentSagaCategory , incidentSagaCommandCategory
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit. module Generated.ProcessReactions.IncidentSaga.Harness (harnessAssertions) where import Generated.ProcessReactions.IncidentSaga.Domain
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit. module Generated.ProcessReactions.IncidentSaga.Projection () where -- No projection declarations are present; this module keeps the generated manifest inventory total.
@@ -1,6 +1,6 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QualifiedDo #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate IncidentSaga; do not edit. module Generated.ProcessReactions.IncidentSaga.Transducer ( incidentSagaTransducer , incidentSagaFoldFingerprint
@@ -1,5 +1,5 @@ {-# LANGUAGE DeriveAnyClass #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context process-reactions generated nominal declarations; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context process-reactions generated nominal declarations; do not edit. module Generated.ProcessReactions.Nominals ( IncidentId , parseIncidentId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context process-reactions generated nominal ID internals; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context process-reactions generated nominal ID internals; do not edit. module Generated.ProcessReactions.Nominals.Internal ( IncidentId , parseIncidentId
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context process-reactions replay-audit assembly; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context process-reactions replay-audit assembly; do not edit. -- -- Deployment contract: -- * replay-neutral diff: no data audit is required;
@@ -1,5 +1,5 @@ {-# LANGUAGE DeriveAnyClass #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process input ScalingReaction; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process input ScalingReaction; do not edit. module Generated.ProcessReactions.ScalingReaction.Input (ScalingReactionInput (..)) where import Data.Aeson (FromJSON, ToJSON)
@@ -1,5 +1,5 @@ {-# OPTIONS_GHC -Wno-missing-signatures #-}--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process reaction ScalingReaction; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process reaction ScalingReaction; do not edit. module Generated.ProcessReactions.ScalingReaction.Process ( ScalingReactionInput (..) , scalingReactionProcessName
@@ -1,4 +1,4 @@--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process ScalingReaction; do not edit.+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process ScalingReaction; do not edit. module Generated.ProcessReactions.ScalingReaction.ProcessHarness (processHarnessValues) where -- | (label, value): the spec's deterministic process/timer decisions,
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff
file too large to diff