diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -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
diff --git a/generated-haskell-edition-idiomatic-v2.md b/generated-haskell-edition-idiomatic-v2.md
# file too large to diff: generated-haskell-edition-idiomatic-v2.md
diff --git a/keiro-dsl.cabal b/keiro-dsl.cabal
--- a/keiro-dsl.cabal
+++ b/keiro-dsl.cabal
@@ -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,
diff --git a/record-field-migration-0.15.md b/record-field-migration-0.15.md
--- a/record-field-migration-0.15.md
+++ b/record-field-migration-0.15.md
@@ -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)` |
diff --git a/src/Keiro/Dsl/AggregateType.hs b/src/Keiro/Dsl/AggregateType.hs
--- a/src/Keiro/Dsl/AggregateType.hs
+++ b/src/Keiro/Dsl/AggregateType.hs
@@ -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
diff --git a/src/Keiro/Dsl/ExplainBindings.hs b/src/Keiro/Dsl/ExplainBindings.hs
--- a/src/Keiro/Dsl/ExplainBindings.hs
+++ b/src/Keiro/Dsl/ExplainBindings.hs
@@ -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
diff --git a/src/Keiro/Dsl/Expression.hs b/src/Keiro/Dsl/Expression.hs
--- a/src/Keiro/Dsl/Expression.hs
+++ b/src/Keiro/Dsl/Expression.hs
@@ -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
diff --git a/src/Keiro/Dsl/FoldEvidence.hs b/src/Keiro/Dsl/FoldEvidence.hs
--- a/src/Keiro/Dsl/FoldEvidence.hs
+++ b/src/Keiro/Dsl/FoldEvidence.hs
@@ -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
diff --git a/src/Keiro/Dsl/Harness.hs b/src/Keiro/Dsl/Harness.hs
--- a/src/Keiro/Dsl/Harness.hs
+++ b/src/Keiro/Dsl/Harness.hs
@@ -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"
     ]
 
diff --git a/src/Keiro/Dsl/LanguageVersion.hs b/src/Keiro/Dsl/LanguageVersion.hs
--- a/src/Keiro/Dsl/LanguageVersion.hs
+++ b/src/Keiro/Dsl/LanguageVersion.hs
@@ -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
diff --git a/src/Keiro/Dsl/Scaffold.hs b/src/Keiro/Dsl/Scaffold.hs
--- a/src/Keiro/Dsl/Scaffold.hs
+++ b/src/Keiro/Dsl/Scaffold.hs
@@ -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"
diff --git a/src/Keiro/Dsl/ScaffoldRecord.hs b/src/Keiro/Dsl/ScaffoldRecord.hs
--- a/src/Keiro/Dsl/ScaffoldRecord.hs
+++ b/src/Keiro/Dsl/ScaffoldRecord.hs
@@ -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,
diff --git a/src/Keiro/Dsl/ScaffoldRun.hs b/src/Keiro/Dsl/ScaffoldRun.hs
--- a/src/Keiro/Dsl/ScaffoldRun.hs
+++ b/src/Keiro/Dsl/ScaffoldRun.hs
@@ -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,
diff --git a/src/Keiro/Dsl/StructuralConformance.hs b/src/Keiro/Dsl/StructuralConformance.hs
--- a/src/Keiro/Dsl/StructuralConformance.hs
+++ b/src/Keiro/Dsl/StructuralConformance.hs
@@ -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)
diff --git a/src/Keiro/Dsl/Validate.hs b/src/Keiro/Dsl/Validate.hs
--- a/src/Keiro/Dsl/Validate.hs
+++ b/src/Keiro/Dsl/Validate.hs
@@ -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
diff --git a/src/Keiro/Dsl/WorkspaceRecord.hs b/src/Keiro/Dsl/WorkspaceRecord.hs
--- a/src/Keiro/Dsl/WorkspaceRecord.hs
+++ b/src/Keiro/Dsl/WorkspaceRecord.hs
@@ -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,
diff --git a/src/Keiro/Dsl/WorkspaceScaffold.hs b/src/Keiro/Dsl/WorkspaceScaffold.hs
--- a/src/Keiro/Dsl/WorkspaceScaffold.hs
+++ b/src/Keiro/Dsl/WorkspaceScaffold.hs
@@ -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,
diff --git a/test/Keiro/Dsl/ConsumerEnumLiterals.hs b/test/Keiro/Dsl/ConsumerEnumLiterals.hs
new file mode 100644
--- /dev/null
+++ b/test/Keiro/Dsl/ConsumerEnumLiterals.hs
@@ -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]
diff --git a/test/Keiro/Dsl/FrontendProfiles.hs b/test/Keiro/Dsl/FrontendProfiles.hs
--- a/test/Keiro/Dsl/FrontendProfiles.hs
+++ b/test/Keiro/Dsl/FrontendProfiles.hs
@@ -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` [ [],
diff --git a/test/Keiro/Dsl/MappedStructuralEnumEquality.hs b/test/Keiro/Dsl/MappedStructuralEnumEquality.hs
new file mode 100644
--- /dev/null
+++ b/test/Keiro/Dsl/MappedStructuralEnumEquality.hs
@@ -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]
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -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) =
diff --git a/test/conformance-aggregate-scalars/Generated/AggregateScalars/BehaviorSourceMap.hs b/test/conformance-aggregate-scalars/Generated/AggregateScalars/BehaviorSourceMap.hs
--- a/test/conformance-aggregate-scalars/Generated/AggregateScalars/BehaviorSourceMap.hs
+++ b/test/conformance-aggregate-scalars/Generated/AggregateScalars/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ReplayAudit.hs b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ReplayAudit.hs
--- a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ReplayAudit.hs
+++ b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/BehaviorContract.hs b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/BehaviorContract.hs
--- a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/BehaviorContract.hs
+++ b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Codec.hs b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Codec.hs
--- a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Codec.hs
+++ b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Codec.hs
@@ -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,
diff --git a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Domain.hs b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Domain.hs
--- a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Domain.hs
+++ b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Domain.hs
@@ -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)
diff --git a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/EventStream.hs b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/EventStream.hs
--- a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/EventStream.hs
+++ b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/EventStream.hs
@@ -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
diff --git a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Harness.hs b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Harness.hs
--- a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Harness.hs
+++ b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Harness.hs
@@ -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
diff --git a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Projection.hs b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Projection.hs
--- a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Projection.hs
+++ b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Projection.hs
@@ -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.
diff --git a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Transducer.hs b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Transducer.hs
--- a/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Transducer.hs
+++ b/test/conformance-aggregate-scalars/Generated/AggregateScalars/ScalarLedger/Transducer.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareJobs/Queue.hs b/test/conformance-bare-containers/Generated/BareContainers/BareJobs/Queue.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareJobs/Queue.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareJobs/Queue.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueueCodec.hs b/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueueCodec.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueueCodec.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueueCodec.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueuePolicy.hs b/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueuePolicy.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueuePolicy.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareJobs/QueuePolicy.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareLookup/QueryContract.hs b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/QueryContract.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareLookup/QueryContract.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/QueryContract.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModel.hs b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModel.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModel.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModel.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelHarness.hs b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelHarness.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelHarness.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelTable.hs b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelTable.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelTable.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareLookup/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareStore/BehaviorContract.hs b/test/conformance-bare-containers/Generated/BareContainers/BareStore/BehaviorContract.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareStore/BehaviorContract.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareStore/Codec.hs b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Codec.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareStore/Codec.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Codec.hs
@@ -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,
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareStore/Domain.hs b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Domain.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareStore/Domain.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Domain.hs
@@ -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)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareStore/EventStream.hs b/test/conformance-bare-containers/Generated/BareContainers/BareStore/EventStream.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareStore/EventStream.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/EventStream.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareStore/Harness.hs b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Harness.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareStore/Harness.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Harness.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareStore/Projection.hs b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Projection.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareStore/Projection.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Projection.hs
@@ -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.
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BareStore/Transducer.hs b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Transducer.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BareStore/Transducer.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BareStore/Transducer.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/BehaviorSourceMap.hs b/test/conformance-bare-containers/Generated/BareContainers/BehaviorSourceMap.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/BehaviorSourceMap.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Nominals.hs b/test/conformance-bare-containers/Generated/BareContainers/Nominals.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/Nominals.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/Nominals.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Nominals/Internal.hs b/test/conformance-bare-containers/Generated/BareContainers/Nominals/Internal.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/Nominals/Internal.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/Nominals/Internal.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/ProjectionCatalog.hs b/test/conformance-bare-containers/Generated/BareContainers/ProjectionCatalog.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/ProjectionCatalog.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/ProjectionCatalog.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/ReplayAudit.hs b/test/conformance-bare-containers/Generated/BareContainers/ReplayAudit.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/ReplayAudit.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Structural/NominalLeaves.hs b/test/conformance-bare-containers/Generated/BareContainers/Structural/NominalLeaves.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/Structural/NominalLeaves.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/Structural/NominalLeaves.hs
@@ -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)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/BareEnvelope.hs b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/BareEnvelope.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/BareEnvelope.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/BareEnvelope.hs
@@ -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)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/MaybeText.hs b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/MaybeText.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/MaybeText.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/MaybeText.hs
@@ -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)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/NestedIds.hs b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/NestedIds.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/NestedIds.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/NestedIds.hs
@@ -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
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextList.hs b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextList.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextList.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextList.hs
@@ -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)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextMap.hs b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextMap.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextMap.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/Structural/Shape/TextMap.hs
@@ -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)
diff --git a/test/conformance-bare-containers/Generated/BareContainers/StructuralConformance.hs b/test/conformance-bare-containers/Generated/BareContainers/StructuralConformance.hs
--- a/test/conformance-bare-containers/Generated/BareContainers/StructuralConformance.hs
+++ b/test/conformance-bare-containers/Generated/BareContainers/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-baseline.json b/test/conformance-baseline.json
--- a/test/conformance-baseline.json
+++ b/test/conformance-baseline.json
@@ -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"},
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/BehaviorSourceMap.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/BehaviorSourceMap.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/BehaviorSourceMap.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/BehaviorContract.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/BehaviorContract.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/BehaviorContract.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Codec.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Codec.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Codec.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Codec.hs
@@ -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,
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Domain.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Domain.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Domain.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Domain.hs
@@ -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)
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/EventStream.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/EventStream.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/EventStream.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/EventStream.hs
@@ -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
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Harness.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Harness.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Harness.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Harness.hs
@@ -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
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Projection.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Projection.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Projection.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Projection.hs
@@ -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.
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Transducer.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Transducer.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Transducer.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/Journey/Transducer.hs
@@ -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
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/Nominals.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/Nominals.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/Nominals.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/Nominals.hs
@@ -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
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/Nominals/Internal.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/Nominals/Internal.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/Nominals/Internal.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/Nominals/Internal.hs
@@ -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
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/ReplayAudit.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/ReplayAudit.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/ReplayAudit.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/Structural/Shape/StartPayload.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/Structural/Shape/StartPayload.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/Structural/Shape/StartPayload.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/Structural/Shape/StartPayload.hs
@@ -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)
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/StructuralConformance.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/StructuralConformance.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/StructuralConformance.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-behavior-complete/Generated/BehaviorComplete/StructuralProjections.hs b/test/conformance-behavior-complete/Generated/BehaviorComplete/StructuralProjections.hs
--- a/test/conformance-behavior-complete/Generated/BehaviorComplete/StructuralProjections.hs
+++ b/test/conformance-behavior-complete/Generated/BehaviorComplete/StructuralProjections.hs
@@ -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.
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/BehaviorSourceMap.hs b/test/conformance-calendar-days/Generated/CalendarDays/BehaviorSourceMap.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/BehaviorSourceMap.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/Queue.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/Queue.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/Queue.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/Queue.hs
@@ -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
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueueCodec.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueueCodec.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueueCodec.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueueCodec.hs
@@ -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
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueuePolicy.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueuePolicy.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueuePolicy.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarJobs/QueuePolicy.hs
@@ -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
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/QueryContract.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/QueryContract.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/QueryContract.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/QueryContract.hs
@@ -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
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModel.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModel.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModel.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModel.hs
@@ -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
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelHarness.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelHarness.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelHarness.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelTable.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelTable.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelTable.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarLookup/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/BehaviorContract.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/BehaviorContract.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/BehaviorContract.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Codec.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Codec.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Codec.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Codec.hs
@@ -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,
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Domain.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Domain.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Domain.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Domain.hs
@@ -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)
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/EventStream.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/EventStream.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/EventStream.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/EventStream.hs
@@ -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
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Harness.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Harness.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Harness.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Harness.hs
@@ -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
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Projection.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Projection.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Projection.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Projection.hs
@@ -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.
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Transducer.hs b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Transducer.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Transducer.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Transducer.hs
@@ -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
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/ProjectionCatalog.hs b/test/conformance-calendar-days/Generated/CalendarDays/ProjectionCatalog.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/ProjectionCatalog.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/ProjectionCatalog.hs
@@ -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
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/ReplayAudit.hs b/test/conformance-calendar-days/Generated/CalendarDays/ReplayAudit.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/ReplayAudit.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/CalendarEnvelope.hs b/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/CalendarEnvelope.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/CalendarEnvelope.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/CalendarEnvelope.hs
@@ -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)
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/LocalDay.hs b/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/LocalDay.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/LocalDay.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/LocalDay.hs
@@ -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)
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/MaybeLocalDay.hs b/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/MaybeLocalDay.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/MaybeLocalDay.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/Structural/Shape/MaybeLocalDay.hs
@@ -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)
diff --git a/test/conformance-calendar-days/Generated/CalendarDays/StructuralConformance.hs b/test/conformance-calendar-days/Generated/CalendarDays/StructuralConformance.hs
--- a/test/conformance-calendar-days/Generated/CalendarDays/StructuralConformance.hs
+++ b/test/conformance-calendar-days/Generated/CalendarDays/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/BehaviorSourceMap.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/BehaviorSourceMap.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/BehaviorSourceMap.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals/Internal.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals/Internal.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals/Internal.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Nominals/Internal.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ProjectionCatalog.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ProjectionCatalog.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ProjectionCatalog.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ProjectionCatalog.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayAudit.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayAudit.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayAudit.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayEvents/Contract.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayEvents/Contract.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayEvents/Contract.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayEvents/Contract.hs
@@ -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 (..)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/Queue.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/Queue.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/Queue.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/Queue.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueueCodec.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueueCodec.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueueCodec.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueueCodec.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueuePolicy.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueuePolicy.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueuePolicy.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayJobs/QueuePolicy.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/BehaviorContract.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/BehaviorContract.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/BehaviorContract.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Codec.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Codec.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Codec.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Codec.hs
@@ -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,
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Domain.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Domain.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Domain.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Domain.hs
@@ -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)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/EventStream.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/EventStream.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/EventStream.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/EventStream.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Harness.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Harness.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Harness.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Harness.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Projection.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Projection.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Projection.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Projection.hs
@@ -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.
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Transducer.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Transducer.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Transducer.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLedger/Transducer.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/QueryContract.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/QueryContract.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/QueryContract.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/QueryContract.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModel.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModel.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModel.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModel.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelHarness.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelHarness.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelHarness.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelTable.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelTable.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelTable.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayLookup/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Input.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Input.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Input.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Input.hs
@@ -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)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Process.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Process.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Process.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/Process.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/ProcessHarness.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/ProcessHarness.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/ProcessHarness.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayReaction/ProcessHarness.hs
@@ -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,
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/BehaviorContract.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/BehaviorContract.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/BehaviorContract.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Codec.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Codec.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Codec.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Codec.hs
@@ -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,
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Domain.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Domain.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Domain.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Domain.hs
@@ -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 (..))
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/EventStream.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/EventStream.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/EventStream.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/EventStream.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Harness.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Harness.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Harness.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Harness.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Projection.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Projection.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Projection.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Projection.hs
@@ -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.
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Transducer.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Transducer.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Transducer.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/ReplayTarget/Transducer.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/NominalLeaves.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/NominalLeaves.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/NominalLeaves.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/NominalLeaves.hs
@@ -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)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ContentHash.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ContentHash.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ContentHash.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ContentHash.hs
@@ -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)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ImportantDays.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ImportantDays.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ImportantDays.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ImportantDays.hs
@@ -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)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/MaybeContentHash.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/MaybeContentHash.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/MaybeContentHash.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/MaybeContentHash.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/MaybeLabel.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/MaybeLabel.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/MaybeLabel.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/MaybeLabel.hs
@@ -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)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ReplayEnvelope.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ReplayEnvelope.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ReplayEnvelope.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/ReplayEnvelope.hs
@@ -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)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/TextLabels.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/TextLabels.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/TextLabels.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/Structural/Shape/TextLabels.hs
@@ -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)
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralConformance.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralConformance.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralConformance.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralProjections.hs b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralProjections.hs
--- a/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralProjections.hs
+++ b/test/conformance-checked-mapping-replay/Generated/CheckedMappingReplay/StructuralProjections.hs
@@ -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.
diff --git a/test/conformance-coldstart/Generated/Billing/BehaviorSourceMap.hs b/test/conformance-coldstart/Generated/Billing/BehaviorSourceMap.hs
--- a/test/conformance-coldstart/Generated/Billing/BehaviorSourceMap.hs
+++ b/test/conformance-coldstart/Generated/Billing/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-coldstart/Generated/Billing/Nominals.hs b/test/conformance-coldstart/Generated/Billing/Nominals.hs
--- a/test/conformance-coldstart/Generated/Billing/Nominals.hs
+++ b/test/conformance-coldstart/Generated/Billing/Nominals.hs
@@ -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
diff --git a/test/conformance-coldstart/Generated/Billing/Nominals/Internal.hs b/test/conformance-coldstart/Generated/Billing/Nominals/Internal.hs
--- a/test/conformance-coldstart/Generated/Billing/Nominals/Internal.hs
+++ b/test/conformance-coldstart/Generated/Billing/Nominals/Internal.hs
@@ -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
diff --git a/test/conformance-coldstart/Generated/Billing/ReplayAudit.hs b/test/conformance-coldstart/Generated/Billing/ReplayAudit.hs
--- a/test/conformance-coldstart/Generated/Billing/ReplayAudit.hs
+++ b/test/conformance-coldstart/Generated/Billing/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-coldstart/Generated/Billing/Subscription/BehaviorContract.hs b/test/conformance-coldstart/Generated/Billing/Subscription/BehaviorContract.hs
--- a/test/conformance-coldstart/Generated/Billing/Subscription/BehaviorContract.hs
+++ b/test/conformance-coldstart/Generated/Billing/Subscription/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-coldstart/Generated/Billing/Subscription/Codec.hs b/test/conformance-coldstart/Generated/Billing/Subscription/Codec.hs
--- a/test/conformance-coldstart/Generated/Billing/Subscription/Codec.hs
+++ b/test/conformance-coldstart/Generated/Billing/Subscription/Codec.hs
@@ -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,
diff --git a/test/conformance-coldstart/Generated/Billing/Subscription/Domain.hs b/test/conformance-coldstart/Generated/Billing/Subscription/Domain.hs
--- a/test/conformance-coldstart/Generated/Billing/Subscription/Domain.hs
+++ b/test/conformance-coldstart/Generated/Billing/Subscription/Domain.hs
@@ -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 (..))
diff --git a/test/conformance-coldstart/Generated/Billing/Subscription/EventStream.hs b/test/conformance-coldstart/Generated/Billing/Subscription/EventStream.hs
--- a/test/conformance-coldstart/Generated/Billing/Subscription/EventStream.hs
+++ b/test/conformance-coldstart/Generated/Billing/Subscription/EventStream.hs
@@ -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
diff --git a/test/conformance-coldstart/Generated/Billing/Subscription/Harness.hs b/test/conformance-coldstart/Generated/Billing/Subscription/Harness.hs
--- a/test/conformance-coldstart/Generated/Billing/Subscription/Harness.hs
+++ b/test/conformance-coldstart/Generated/Billing/Subscription/Harness.hs
@@ -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
diff --git a/test/conformance-coldstart/Generated/Billing/Subscription/Projection.hs b/test/conformance-coldstart/Generated/Billing/Subscription/Projection.hs
--- a/test/conformance-coldstart/Generated/Billing/Subscription/Projection.hs
+++ b/test/conformance-coldstart/Generated/Billing/Subscription/Projection.hs
@@ -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
diff --git a/test/conformance-coldstart/Generated/Billing/Subscription/Transducer.hs b/test/conformance-coldstart/Generated/Billing/Subscription/Transducer.hs
--- a/test/conformance-coldstart/Generated/Billing/Subscription/Transducer.hs
+++ b/test/conformance-coldstart/Generated/Billing/Subscription/Transducer.hs
@@ -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
diff --git a/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Nominals.hs b/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Nominals.hs
--- a/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Nominals.hs
+++ b/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Nominals.hs
@@ -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
diff --git a/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Nominals/Internal.hs b/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Nominals/Internal.hs
--- a/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Nominals/Internal.hs
+++ b/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Nominals/Internal.hs
@@ -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
diff --git a/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Structural/NominalLeaves.hs b/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Structural/NominalLeaves.hs
--- a/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Structural/NominalLeaves.hs
+++ b/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Structural/NominalLeaves.hs
@@ -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)
diff --git a/test/conformance-contract-declared-id/Generated/ContractDeclaredId/StructuralConformance.hs b/test/conformance-contract-declared-id/Generated/ContractDeclaredId/StructuralConformance.hs
--- a/test/conformance-contract-declared-id/Generated/ContractDeclaredId/StructuralConformance.hs
+++ b/test/conformance-contract-declared-id/Generated/ContractDeclaredId/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Templates/Contract.hs b/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Templates/Contract.hs
--- a/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Templates/Contract.hs
+++ b/test/conformance-contract-declared-id/Generated/ContractDeclaredId/Templates/Contract.hs
@@ -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 (..)
diff --git a/test/conformance-contract-list-fields/Generated/ContractListFields/Nominals.hs b/test/conformance-contract-list-fields/Generated/ContractListFields/Nominals.hs
--- a/test/conformance-contract-list-fields/Generated/ContractListFields/Nominals.hs
+++ b/test/conformance-contract-list-fields/Generated/ContractListFields/Nominals.hs
@@ -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
diff --git a/test/conformance-contract-list-fields/Generated/ContractListFields/Nominals/Internal.hs b/test/conformance-contract-list-fields/Generated/ContractListFields/Nominals/Internal.hs
--- a/test/conformance-contract-list-fields/Generated/ContractListFields/Nominals/Internal.hs
+++ b/test/conformance-contract-list-fields/Generated/ContractListFields/Nominals/Internal.hs
@@ -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
diff --git a/test/conformance-contract-list-fields/Generated/ContractListFields/Structural/NominalLeaves.hs b/test/conformance-contract-list-fields/Generated/ContractListFields/Structural/NominalLeaves.hs
--- a/test/conformance-contract-list-fields/Generated/ContractListFields/Structural/NominalLeaves.hs
+++ b/test/conformance-contract-list-fields/Generated/ContractListFields/Structural/NominalLeaves.hs
@@ -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)
diff --git a/test/conformance-contract-list-fields/Generated/ContractListFields/StructuralConformance.hs b/test/conformance-contract-list-fields/Generated/ContractListFields/StructuralConformance.hs
--- a/test/conformance-contract-list-fields/Generated/ContractListFields/StructuralConformance.hs
+++ b/test/conformance-contract-list-fields/Generated/ContractListFields/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-contract-list-fields/Generated/ContractListFields/Templates/Contract.hs b/test/conformance-contract-list-fields/Generated/ContractListFields/Templates/Contract.hs
--- a/test/conformance-contract-list-fields/Generated/ContractListFields/Templates/Contract.hs
+++ b/test/conformance-contract-list-fields/Generated/ContractListFields/Templates/Contract.hs
@@ -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 (..)
diff --git a/test/conformance-contract-v1-compat/Generated/HospitalCapacity/Emergency/Contract.hs b/test/conformance-contract-v1-compat/Generated/HospitalCapacity/Emergency/Contract.hs
--- a/test/conformance-contract-v1-compat/Generated/HospitalCapacity/Emergency/Contract.hs
+++ b/test/conformance-contract-v1-compat/Generated/HospitalCapacity/Emergency/Contract.hs
@@ -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 (..)
diff --git a/test/conformance-contract/Generated/HospitalCapacity/Emergency/Contract.hs b/test/conformance-contract/Generated/HospitalCapacity/Emergency/Contract.hs
--- a/test/conformance-contract/Generated/HospitalCapacity/Emergency/Contract.hs
+++ b/test/conformance-contract/Generated/HospitalCapacity/Emergency/Contract.hs
@@ -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 (..)
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/BehaviorSourceMap.hs b/test/conformance-declarative-router/Generated/TransferRouting/BehaviorSourceMap.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/BehaviorSourceMap.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/BehaviorContract.hs b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/BehaviorContract.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/BehaviorContract.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Codec.hs b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Codec.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Codec.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Codec.hs
@@ -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,
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Domain.hs b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Domain.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Domain.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Domain.hs
@@ -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 (..))
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/EventStream.hs b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/EventStream.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/EventStream.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/EventStream.hs
@@ -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
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Harness.hs b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Harness.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Harness.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Harness.hs
@@ -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
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Projection.hs b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Projection.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Projection.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Projection.hs
@@ -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.
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Transducer.hs b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Transducer.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Transducer.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/Hospital/Transducer.hs
@@ -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
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/QueryContract.hs b/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/QueryContract.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/QueryContract.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/QueryContract.hs
@@ -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
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModel.hs b/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModel.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModel.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModel.hs
@@ -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
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModelHarness.hs b/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModelHarness.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModelHarness.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModelTable.hs b/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModelTable.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModelTable.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/HospitalLoad/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/HospitalTransferRouter/Router.hs b/test/conformance-declarative-router/Generated/TransferRouting/HospitalTransferRouter/Router.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/HospitalTransferRouter/Router.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/HospitalTransferRouter/Router.hs
@@ -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
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/HospitalTransferRouter/RouterHarness.hs b/test/conformance-declarative-router/Generated/TransferRouting/HospitalTransferRouter/RouterHarness.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/HospitalTransferRouter/RouterHarness.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/HospitalTransferRouter/RouterHarness.hs
@@ -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)]
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/ProjectionCatalog.hs b/test/conformance-declarative-router/Generated/TransferRouting/ProjectionCatalog.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/ProjectionCatalog.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/ProjectionCatalog.hs
@@ -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
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/ReplayAudit.hs b/test/conformance-declarative-router/Generated/TransferRouting/ReplayAudit.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/ReplayAudit.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/Structural/Shape/HospitalLoadRow.hs b/test/conformance-declarative-router/Generated/TransferRouting/Structural/Shape/HospitalLoadRow.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/Structural/Shape/HospitalLoadRow.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/Structural/Shape/HospitalLoadRow.hs
@@ -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)
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/Structural/Shape/TransferRouteInput.hs b/test/conformance-declarative-router/Generated/TransferRouting/Structural/Shape/TransferRouteInput.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/Structural/Shape/TransferRouteInput.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/Structural/Shape/TransferRouteInput.hs
@@ -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)
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/StructuralConformance.hs b/test/conformance-declarative-router/Generated/TransferRouting/StructuralConformance.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/StructuralConformance.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-declarative-router/Generated/TransferRouting/StructuralProjections.hs b/test/conformance-declarative-router/Generated/TransferRouting/StructuralProjections.hs
--- a/test/conformance-declarative-router/Generated/TransferRouting/StructuralProjections.hs
+++ b/test/conformance-declarative-router/Generated/TransferRouting/StructuralProjections.hs
@@ -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.
diff --git a/test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs b/test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs
--- a/test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs
+++ b/test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs
@@ -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
diff --git a/test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs b/test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs
--- a/test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs
+++ b/test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs b/test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs
--- a/test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs
+++ b/test/conformance-dispatch-full/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/Queue.hs b/test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/Queue.hs
--- a/test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/Queue.hs
+++ b/test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/Queue.hs
@@ -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
diff --git a/test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs b/test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs
--- a/test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs
+++ b/test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs
@@ -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
diff --git a/test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs b/test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs
--- a/test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs
+++ b/test/conformance-dispatch-full/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs
@@ -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
diff --git a/test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs b/test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs
--- a/test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs
+++ b/test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs
@@ -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
diff --git a/test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs b/test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs
--- a/test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs
+++ b/test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs b/test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs
--- a/test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs
+++ b/test/conformance-dispatch-full/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-domain-outcomes/Generated/DomainOutcomes/BehaviorSourceMap.hs b/test/conformance-domain-outcomes/Generated/DomainOutcomes/BehaviorSourceMap.hs
--- a/test/conformance-domain-outcomes/Generated/DomainOutcomes/BehaviorSourceMap.hs
+++ b/test/conformance-domain-outcomes/Generated/DomainOutcomes/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Nominals.hs b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Nominals.hs
--- a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Nominals.hs
+++ b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Nominals.hs
@@ -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)
diff --git a/test/conformance-domain-outcomes/Generated/DomainOutcomes/ReplayAudit.hs b/test/conformance-domain-outcomes/Generated/DomainOutcomes/ReplayAudit.hs
--- a/test/conformance-domain-outcomes/Generated/DomainOutcomes/ReplayAudit.hs
+++ b/test/conformance-domain-outcomes/Generated/DomainOutcomes/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/BehaviorContract.hs b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/BehaviorContract.hs
--- a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/BehaviorContract.hs
+++ b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Codec.hs b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Codec.hs
--- a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Codec.hs
+++ b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Codec.hs
@@ -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,
diff --git a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Domain.hs b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Domain.hs
--- a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Domain.hs
+++ b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Domain.hs
@@ -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 (..))
diff --git a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/EventStream.hs b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/EventStream.hs
--- a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/EventStream.hs
+++ b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/EventStream.hs
@@ -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
diff --git a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Harness.hs b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Harness.hs
--- a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Harness.hs
+++ b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Harness.hs
@@ -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
diff --git a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Projection.hs b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Projection.hs
--- a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Projection.hs
+++ b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Projection.hs
@@ -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.
diff --git a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Transducer.hs b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Transducer.hs
--- a/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Transducer.hs
+++ b/test/conformance-domain-outcomes/Generated/DomainOutcomes/Reservation/Transducer.hs
@@ -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
diff --git a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/BehaviorContract.hs b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/BehaviorContract.hs
--- a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/BehaviorContract.hs
+++ b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Codec.hs b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Codec.hs
--- a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Codec.hs
+++ b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Codec.hs
@@ -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,
diff --git a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Domain.hs b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Domain.hs
--- a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Domain.hs
+++ b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Domain.hs
@@ -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 (..))
diff --git a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/EventStream.hs b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/EventStream.hs
--- a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/EventStream.hs
+++ b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/EventStream.hs
@@ -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
diff --git a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Harness.hs b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Harness.hs
--- a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Harness.hs
+++ b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Harness.hs
@@ -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
diff --git a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Projection.hs b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Projection.hs
--- a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Projection.hs
+++ b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Projection.hs
@@ -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.
diff --git a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Transducer.hs b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Transducer.hs
--- a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Transducer.hs
+++ b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/Assignment/Transducer.hs
@@ -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
diff --git a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/BehaviorSourceMap.hs b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/BehaviorSourceMap.hs
--- a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/BehaviorSourceMap.hs
+++ b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/ReplayAudit.hs b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/ReplayAudit.hs
--- a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/ReplayAudit.hs
+++ b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/StructuralConformance.hs b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/StructuralConformance.hs
--- a/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/StructuralConformance.hs
+++ b/test/conformance-history-dependent-holes/Generated/HistoryDependentHoles/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/BehaviorSourceMap.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/BehaviorSourceMap.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/BehaviorSourceMap.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Identities/Contract.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Identities/Contract.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Identities/Contract.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Identities/Contract.hs
@@ -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 (..)
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/BehaviorContract.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/BehaviorContract.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/BehaviorContract.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Codec.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Codec.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Codec.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Codec.hs
@@ -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,
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Domain.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Domain.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Domain.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Domain.hs
@@ -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 (..))
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/EventStream.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/EventStream.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/EventStream.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/EventStream.hs
@@ -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
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Harness.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Harness.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Harness.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Harness.hs
@@ -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
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Projection.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Projection.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Projection.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Projection.hs
@@ -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.
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Transducer.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Transducer.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Transducer.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityLedger/Transducer.hs
@@ -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
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/Queue.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/Queue.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/Queue.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/Queue.hs
@@ -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
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueueCodec.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueueCodec.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueueCodec.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueueCodec.hs
@@ -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
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueuePolicy.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueuePolicy.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueuePolicy.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/IdentityWork/QueuePolicy.hs
@@ -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
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals.hs
@@ -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
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals/Internal.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals/Internal.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals/Internal.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Nominals/Internal.hs
@@ -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
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/ReplayAudit.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/ReplayAudit.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/ReplayAudit.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/NominalLeaves.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/NominalLeaves.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/NominalLeaves.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/NominalLeaves.hs
@@ -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)
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/Shape/IdentityEnvelope.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/Shape/IdentityEnvelope.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/Shape/IdentityEnvelope.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/Structural/Shape/IdentityEnvelope.hs
@@ -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)
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralConformance.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralConformance.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralConformance.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralProjections.hs b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralProjections.hs
--- a/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralProjections.hs
+++ b/test/conformance-id-admission-domains/Generated/IdAdmissionDomains/StructuralProjections.hs
@@ -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.
diff --git a/test/conformance-id-domain-migration/Generated/IdDomainMigration/BehaviorSourceMap.hs b/test/conformance-id-domain-migration/Generated/IdDomainMigration/BehaviorSourceMap.hs
--- a/test/conformance-id-domain-migration/Generated/IdDomainMigration/BehaviorSourceMap.hs
+++ b/test/conformance-id-domain-migration/Generated/IdDomainMigration/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-id-domain-migration/Generated/IdDomainMigration/Nominals.hs b/test/conformance-id-domain-migration/Generated/IdDomainMigration/Nominals.hs
--- a/test/conformance-id-domain-migration/Generated/IdDomainMigration/Nominals.hs
+++ b/test/conformance-id-domain-migration/Generated/IdDomainMigration/Nominals.hs
@@ -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
diff --git a/test/conformance-id-domain-migration/Generated/IdDomainMigration/Nominals/Internal.hs b/test/conformance-id-domain-migration/Generated/IdDomainMigration/Nominals/Internal.hs
--- a/test/conformance-id-domain-migration/Generated/IdDomainMigration/Nominals/Internal.hs
+++ b/test/conformance-id-domain-migration/Generated/IdDomainMigration/Nominals/Internal.hs
@@ -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
diff --git a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/BehaviorContract.hs b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/BehaviorContract.hs
--- a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/BehaviorContract.hs
+++ b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Codec.hs b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Codec.hs
--- a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Codec.hs
+++ b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Codec.hs
@@ -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,
diff --git a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Domain.hs b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Domain.hs
--- a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Domain.hs
+++ b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Domain.hs
@@ -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)
diff --git a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/EventStream.hs b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/EventStream.hs
--- a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/EventStream.hs
+++ b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/EventStream.hs
@@ -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
diff --git a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Harness.hs b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Harness.hs
--- a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Harness.hs
+++ b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Harness.hs
@@ -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
diff --git a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Projection.hs b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Projection.hs
--- a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Projection.hs
+++ b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Projection.hs
@@ -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.
diff --git a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Transducer.hs b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Transducer.hs
--- a/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Transducer.hs
+++ b/test/conformance-id-domain-migration/Generated/IdDomainMigration/OrderBook/Transducer.hs
@@ -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
diff --git a/test/conformance-id-domain-migration/Generated/IdDomainMigration/ReplayAudit.hs b/test/conformance-id-domain-migration/Generated/IdDomainMigration/ReplayAudit.hs
--- a/test/conformance-id-domain-migration/Generated/IdDomainMigration/ReplayAudit.hs
+++ b/test/conformance-id-domain-migration/Generated/IdDomainMigration/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-import-planning/Generated/ImportPlanningCollisions/BehaviorSourceMap.hs b/test/conformance-import-planning/Generated/ImportPlanningCollisions/BehaviorSourceMap.hs
--- a/test/conformance-import-planning/Generated/ImportPlanningCollisions/BehaviorSourceMap.hs
+++ b/test/conformance-import-planning/Generated/ImportPlanningCollisions/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/BehaviorContract.hs b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/BehaviorContract.hs
--- a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/BehaviorContract.hs
+++ b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Codec.hs b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Codec.hs
--- a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Codec.hs
+++ b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Codec.hs
@@ -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,
diff --git a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Domain.hs b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Domain.hs
--- a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Domain.hs
+++ b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Domain.hs
@@ -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)
diff --git a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/EventStream.hs b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/EventStream.hs
--- a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/EventStream.hs
+++ b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/EventStream.hs
@@ -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
diff --git a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Harness.hs b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Harness.hs
--- a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Harness.hs
+++ b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Harness.hs
@@ -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
diff --git a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Projection.hs b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Projection.hs
--- a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Projection.hs
+++ b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Projection.hs
@@ -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.
diff --git a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Transducer.hs b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Transducer.hs
--- a/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Transducer.hs
+++ b/test/conformance-import-planning/Generated/ImportPlanningCollisions/CollisionLedger/Transducer.hs
@@ -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
diff --git a/test/conformance-import-planning/Generated/ImportPlanningCollisions/NominalProjections.hs b/test/conformance-import-planning/Generated/ImportPlanningCollisions/NominalProjections.hs
--- a/test/conformance-import-planning/Generated/ImportPlanningCollisions/NominalProjections.hs
+++ b/test/conformance-import-planning/Generated/ImportPlanningCollisions/NominalProjections.hs
@@ -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)
diff --git a/test/conformance-import-planning/Generated/ImportPlanningCollisions/ReplayAudit.hs b/test/conformance-import-planning/Generated/ImportPlanningCollisions/ReplayAudit.hs
--- a/test/conformance-import-planning/Generated/ImportPlanningCollisions/ReplayAudit.hs
+++ b/test/conformance-import-planning/Generated/ImportPlanningCollisions/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-import-planning/Generated/ImportPlanningCollisions/Structural/Shape/Details.hs b/test/conformance-import-planning/Generated/ImportPlanningCollisions/Structural/Shape/Details.hs
--- a/test/conformance-import-planning/Generated/ImportPlanningCollisions/Structural/Shape/Details.hs
+++ b/test/conformance-import-planning/Generated/ImportPlanningCollisions/Structural/Shape/Details.hs
@@ -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)
diff --git a/test/conformance-import-planning/Generated/ImportPlanningCollisions/StructuralConformance.hs b/test/conformance-import-planning/Generated/ImportPlanningCollisions/StructuralConformance.hs
--- a/test/conformance-import-planning/Generated/ImportPlanningCollisions/StructuralConformance.hs
+++ b/test/conformance-import-planning/Generated/ImportPlanningCollisions/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-import-planning/Generated/ImportPlanningCollisions/StructuralProjections.hs b/test/conformance-import-planning/Generated/ImportPlanningCollisions/StructuralProjections.hs
--- a/test/conformance-import-planning/Generated/ImportPlanningCollisions/StructuralProjections.hs
+++ b/test/conformance-import-planning/Generated/ImportPlanningCollisions/StructuralProjections.hs
@@ -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.
diff --git a/test/conformance-intake-delegated/Generated/HospitalCapacity/Emergency/Contract.hs b/test/conformance-intake-delegated/Generated/HospitalCapacity/Emergency/Contract.hs
--- a/test/conformance-intake-delegated/Generated/HospitalCapacity/Emergency/Contract.hs
+++ b/test/conformance-intake-delegated/Generated/HospitalCapacity/Emergency/Contract.hs
@@ -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 (..)
diff --git a/test/conformance-intake-delegated/Generated/HospitalCapacity/IncidentInbox/Inbox.hs b/test/conformance-intake-delegated/Generated/HospitalCapacity/IncidentInbox/Inbox.hs
--- a/test/conformance-intake-delegated/Generated/HospitalCapacity/IncidentInbox/Inbox.hs
+++ b/test/conformance-intake-delegated/Generated/HospitalCapacity/IncidentInbox/Inbox.hs
@@ -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 (..)
diff --git a/test/conformance-intake-full/Generated/HospitalCapacity/Emergency/Contract.hs b/test/conformance-intake-full/Generated/HospitalCapacity/Emergency/Contract.hs
--- a/test/conformance-intake-full/Generated/HospitalCapacity/Emergency/Contract.hs
+++ b/test/conformance-intake-full/Generated/HospitalCapacity/Emergency/Contract.hs
@@ -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 (..)
diff --git a/test/conformance-intake-full/Generated/HospitalCapacity/IncidentInbox/Inbox.hs b/test/conformance-intake-full/Generated/HospitalCapacity/IncidentInbox/Inbox.hs
--- a/test/conformance-intake-full/Generated/HospitalCapacity/IncidentInbox/Inbox.hs
+++ b/test/conformance-intake-full/Generated/HospitalCapacity/IncidentInbox/Inbox.hs
@@ -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 (..)
diff --git a/test/conformance-intake-runtime/Generated/HospitalCapacity/Emergency/Contract.hs b/test/conformance-intake-runtime/Generated/HospitalCapacity/Emergency/Contract.hs
--- a/test/conformance-intake-runtime/Generated/HospitalCapacity/Emergency/Contract.hs
+++ b/test/conformance-intake-runtime/Generated/HospitalCapacity/Emergency/Contract.hs
@@ -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 (..)
diff --git a/test/conformance-intake-runtime/Generated/HospitalCapacity/IncidentInbox/Inbox.hs b/test/conformance-intake-runtime/Generated/HospitalCapacity/IncidentInbox/Inbox.hs
--- a/test/conformance-intake-runtime/Generated/HospitalCapacity/IncidentInbox/Inbox.hs
+++ b/test/conformance-intake-runtime/Generated/HospitalCapacity/IncidentInbox/Inbox.hs
@@ -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 (..)
diff --git a/test/conformance-keyword-segments/Generated/KeywordSegments/JobType/Queue.hs b/test/conformance-keyword-segments/Generated/KeywordSegments/JobType/Queue.hs
--- a/test/conformance-keyword-segments/Generated/KeywordSegments/JobType/Queue.hs
+++ b/test/conformance-keyword-segments/Generated/KeywordSegments/JobType/Queue.hs
@@ -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
diff --git a/test/conformance-keyword-segments/Generated/KeywordSegments/JobType/QueueCodec.hs b/test/conformance-keyword-segments/Generated/KeywordSegments/JobType/QueueCodec.hs
--- a/test/conformance-keyword-segments/Generated/KeywordSegments/JobType/QueueCodec.hs
+++ b/test/conformance-keyword-segments/Generated/KeywordSegments/JobType/QueueCodec.hs
@@ -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
diff --git a/test/conformance-keyword-segments/Generated/KeywordSegments/JobType/QueuePolicy.hs b/test/conformance-keyword-segments/Generated/KeywordSegments/JobType/QueuePolicy.hs
--- a/test/conformance-keyword-segments/Generated/KeywordSegments/JobType/QueuePolicy.hs
+++ b/test/conformance-keyword-segments/Generated/KeywordSegments/JobType/QueuePolicy.hs
@@ -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
diff --git a/test/conformance-keyword-segments/Generated/KeywordSegments/Nominals.hs b/test/conformance-keyword-segments/Generated/KeywordSegments/Nominals.hs
--- a/test/conformance-keyword-segments/Generated/KeywordSegments/Nominals.hs
+++ b/test/conformance-keyword-segments/Generated/KeywordSegments/Nominals.hs
@@ -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
diff --git a/test/conformance-keyword-segments/Generated/KeywordSegments/Nominals/Internal.hs b/test/conformance-keyword-segments/Generated/KeywordSegments/Nominals/Internal.hs
--- a/test/conformance-keyword-segments/Generated/KeywordSegments/Nominals/Internal.hs
+++ b/test/conformance-keyword-segments/Generated/KeywordSegments/Nominals/Internal.hs
@@ -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
diff --git a/test/conformance-keyword-segments/Generated/KeywordSegments/ProjectionCatalog.hs b/test/conformance-keyword-segments/Generated/KeywordSegments/ProjectionCatalog.hs
--- a/test/conformance-keyword-segments/Generated/KeywordSegments/ProjectionCatalog.hs
+++ b/test/conformance-keyword-segments/Generated/KeywordSegments/ProjectionCatalog.hs
@@ -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
diff --git a/test/conformance-keyword-segments/Generated/KeywordSegments/Structural/NominalLeaves.hs b/test/conformance-keyword-segments/Generated/KeywordSegments/Structural/NominalLeaves.hs
--- a/test/conformance-keyword-segments/Generated/KeywordSegments/Structural/NominalLeaves.hs
+++ b/test/conformance-keyword-segments/Generated/KeywordSegments/Structural/NominalLeaves.hs
@@ -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)
diff --git a/test/conformance-keyword-segments/Generated/KeywordSegments/StructuralConformance.hs b/test/conformance-keyword-segments/Generated/KeywordSegments/StructuralConformance.hs
--- a/test/conformance-keyword-segments/Generated/KeywordSegments/StructuralConformance.hs
+++ b/test/conformance-keyword-segments/Generated/KeywordSegments/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/QueryContract.hs b/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/QueryContract.hs
--- a/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/QueryContract.hs
+++ b/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/QueryContract.hs
@@ -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
diff --git a/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModel.hs b/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModel.hs
--- a/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModel.hs
+++ b/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModel.hs
@@ -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
diff --git a/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModelHarness.hs b/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModelHarness.hs
--- a/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModelHarness.hs
+++ b/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModelTable.hs b/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModelTable.hs
--- a/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModelTable.hs
+++ b/test/conformance-keyword-segments/Generated/KeywordSegments/ValidateCustomType/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/Queue.hs b/test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/Queue.hs
--- a/test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/Queue.hs
+++ b/test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/Queue.hs
@@ -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
diff --git a/test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/QueueCodec.hs b/test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/QueueCodec.hs
--- a/test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/QueueCodec.hs
+++ b/test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/QueueCodec.hs
@@ -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
diff --git a/test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/QueuePolicy.hs b/test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/QueuePolicy.hs
--- a/test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/QueuePolicy.hs
+++ b/test/conformance-mapped-queue/Generated/MappedQueue/MappedJobs/QueuePolicy.hs
@@ -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
diff --git a/test/conformance-mapped-queue/Generated/MappedQueue/Structural/Shape/JobMetadata.hs b/test/conformance-mapped-queue/Generated/MappedQueue/Structural/Shape/JobMetadata.hs
--- a/test/conformance-mapped-queue/Generated/MappedQueue/Structural/Shape/JobMetadata.hs
+++ b/test/conformance-mapped-queue/Generated/MappedQueue/Structural/Shape/JobMetadata.hs
@@ -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)
diff --git a/test/conformance-mapped-queue/Generated/MappedQueue/Structural/Shape/JobPayload.hs b/test/conformance-mapped-queue/Generated/MappedQueue/Structural/Shape/JobPayload.hs
--- a/test/conformance-mapped-queue/Generated/MappedQueue/Structural/Shape/JobPayload.hs
+++ b/test/conformance-mapped-queue/Generated/MappedQueue/Structural/Shape/JobPayload.hs
@@ -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)
diff --git a/test/conformance-mapped-queue/Generated/MappedQueue/StructuralConformance.hs b/test/conformance-mapped-queue/Generated/MappedQueue/StructuralConformance.hs
--- a/test/conformance-mapped-queue/Generated/MappedQueue/StructuralConformance.hs
+++ b/test/conformance-mapped-queue/Generated/MappedQueue/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-mapped-queue/Generated/MappedQueue/StructuralProjections.hs b/test/conformance-mapped-queue/Generated/MappedQueue/StructuralProjections.hs
--- a/test/conformance-mapped-queue/Generated/MappedQueue/StructuralProjections.hs
+++ b/test/conformance-mapped-queue/Generated/MappedQueue/StructuralProjections.hs
@@ -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.
diff --git a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/QueryContract.hs b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/QueryContract.hs
--- a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/QueryContract.hs
+++ b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/QueryContract.hs
@@ -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
diff --git a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModel.hs b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModel.hs
--- a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModel.hs
+++ b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModel.hs
@@ -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
diff --git a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModelHarness.hs b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModelHarness.hs
--- a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModelHarness.hs
+++ b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModelTable.hs b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModelTable.hs
--- a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModelTable.hs
+++ b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/AccountSummary/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/ProjectionCatalog.hs b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/ProjectionCatalog.hs
--- a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/ProjectionCatalog.hs
+++ b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/ProjectionCatalog.hs
@@ -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
diff --git a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountLookup.hs b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountLookup.hs
--- a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountLookup.hs
+++ b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountLookup.hs
@@ -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)
diff --git a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountProfile.hs b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountProfile.hs
--- a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountProfile.hs
+++ b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountProfile.hs
@@ -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)
diff --git a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountSummary.hs b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountSummary.hs
--- a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountSummary.hs
+++ b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/AccountSummary.hs
@@ -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)
diff --git a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/TenantKey.hs b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/TenantKey.hs
--- a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/TenantKey.hs
+++ b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/TenantKey.hs
@@ -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)
diff --git a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/UnusedFilter.hs b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/UnusedFilter.hs
--- a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/UnusedFilter.hs
+++ b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/Structural/Shape/UnusedFilter.hs
@@ -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)
diff --git a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/StructuralConformance.hs b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/StructuralConformance.hs
--- a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/StructuralConformance.hs
+++ b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/StructuralProjections.hs b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/StructuralProjections.hs
--- a/test/conformance-mapped-readmodel/Generated/MappedReadmodel/StructuralProjections.hs
+++ b/test/conformance-mapped-readmodel/Generated/MappedReadmodel/StructuralProjections.hs
@@ -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.
diff --git a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/BehaviorSourceMap.hs b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/BehaviorSourceMap.hs
--- a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/BehaviorSourceMap.hs
+++ b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/BehaviorContract.hs b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/BehaviorContract.hs
--- a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/BehaviorContract.hs
+++ b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Codec.hs b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Codec.hs
--- a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Codec.hs
+++ b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Codec.hs
@@ -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,
diff --git a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Domain.hs b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Domain.hs
--- a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Domain.hs
+++ b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Domain.hs
@@ -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)
diff --git a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/EventStream.hs b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/EventStream.hs
--- a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/EventStream.hs
+++ b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/EventStream.hs
@@ -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
diff --git a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Harness.hs b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Harness.hs
--- a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Harness.hs
+++ b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Harness.hs
@@ -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
diff --git a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Projection.hs b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Projection.hs
--- a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Projection.hs
+++ b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Projection.hs
@@ -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.
diff --git a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Transducer.hs b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Transducer.hs
--- a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Transducer.hs
+++ b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/Lifecycle/Transducer.hs
@@ -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
diff --git a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/ReplayAudit.hs b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/ReplayAudit.hs
--- a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/ReplayAudit.hs
+++ b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/StructuralConformance.hs b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/StructuralConformance.hs
--- a/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/StructuralConformance.hs
+++ b/test/conformance-mapped-register-construction/Generated/MappedRegisterConstruction/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-mapped-structural-enum-equality/Conformance/MappedStructuralEnumEquality/Bindings.hs b/test/conformance-mapped-structural-enum-equality/Conformance/MappedStructuralEnumEquality/Bindings.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Conformance/MappedStructuralEnumEquality/Bindings.hs
@@ -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)])
diff --git a/test/conformance-mapped-structural-enum-equality/Conformance/MappedStructuralEnumEquality/Domain.hs b/test/conformance-mapped-structural-enum-equality/Conformance/MappedStructuralEnumEquality/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Conformance/MappedStructuralEnumEquality/Domain.hs
@@ -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"
diff --git a/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/BehaviorSourceMap.hs b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/BehaviorSourceMap.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ReplayAudit.hs b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ReplayAudit.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ReplayAudit.hs
@@ -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)
+        }
+  ]
diff --git a/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/BehaviorContract.hs b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/BehaviorContract.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Codec.hs b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Codec.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Codec.hs
@@ -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))
diff --git a/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Domain.hs b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Domain.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Domain.hs
@@ -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)
diff --git a/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/EventStream.hs b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/EventStream.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/EventStream.hs
@@ -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
diff --git a/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Harness.hs b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Harness.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Harness.hs
@@ -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
diff --git a/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Projection.hs b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Projection.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Projection.hs
@@ -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.
diff --git a/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Transducer.hs b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Transducer.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/ScopeGate/Transducer.hs
@@ -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")
diff --git a/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/Structural/Shape/Request.hs b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/Structural/Shape/Request.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/Structural/Shape/Request.hs
@@ -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)
diff --git a/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/Structural/Shape/RequiredScope.hs b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/Structural/Shape/RequiredScope.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/Structural/Shape/RequiredScope.hs
@@ -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)
diff --git a/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/StructuralConformance.hs b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/StructuralConformance.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/StructuralConformance.hs
@@ -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"])
+  ]
diff --git a/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/StructuralProjections.hs b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/StructuralProjections.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Generated/MappedStructuralEnumEquality/StructuralProjections.hs
@@ -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
diff --git a/test/conformance-mapped-structural-enum-equality/Main.hs b/test/conformance-mapped-structural-enum-equality/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/Main.hs
@@ -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
diff --git a/test/conformance-mapped-structural-enum-equality/MappedStructuralEnumEquality/ScopeGate/BehaviorHoles.hs b/test/conformance-mapped-structural-enum-equality/MappedStructuralEnumEquality/ScopeGate/BehaviorHoles.hs
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/MappedStructuralEnumEquality/ScopeGate/BehaviorHoles.hs
@@ -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"
diff --git a/test/conformance-mapped-structural-enum-equality/keiro-dsl-cabal-fragment.context.mapped-structural-enum-equality.txt b/test/conformance-mapped-structural-enum-equality/keiro-dsl-cabal-fragment.context.mapped-structural-enum-equality.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/keiro-dsl-cabal-fragment.context.mapped-structural-enum-equality.txt
@@ -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
diff --git a/test/conformance-mapped-structural-enum-equality/keiro-dsl-ledger.context.mapped-structural-enum-equality.txt b/test/conformance-mapped-structural-enum-equality/keiro-dsl-ledger.context.mapped-structural-enum-equality.txt
new file mode 100644
--- /dev/null
+++ b/test/conformance-mapped-structural-enum-equality/keiro-dsl-ledger.context.mapped-structural-enum-equality.txt
@@ -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"]}
diff --git a/test/conformance-newsurface/Generated/TransferRouting/BehaviorSourceMap.hs b/test/conformance-newsurface/Generated/TransferRouting/BehaviorSourceMap.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/BehaviorSourceMap.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-newsurface/Generated/TransferRouting/Hospital/BehaviorContract.hs b/test/conformance-newsurface/Generated/TransferRouting/Hospital/BehaviorContract.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/Hospital/BehaviorContract.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/Hospital/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-newsurface/Generated/TransferRouting/Hospital/Codec.hs b/test/conformance-newsurface/Generated/TransferRouting/Hospital/Codec.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/Hospital/Codec.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/Hospital/Codec.hs
@@ -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,
diff --git a/test/conformance-newsurface/Generated/TransferRouting/Hospital/Domain.hs b/test/conformance-newsurface/Generated/TransferRouting/Hospital/Domain.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/Hospital/Domain.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/Hospital/Domain.hs
@@ -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)
diff --git a/test/conformance-newsurface/Generated/TransferRouting/Hospital/EventStream.hs b/test/conformance-newsurface/Generated/TransferRouting/Hospital/EventStream.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/Hospital/EventStream.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/Hospital/EventStream.hs
@@ -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
diff --git a/test/conformance-newsurface/Generated/TransferRouting/Hospital/Harness.hs b/test/conformance-newsurface/Generated/TransferRouting/Hospital/Harness.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/Hospital/Harness.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/Hospital/Harness.hs
@@ -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
diff --git a/test/conformance-newsurface/Generated/TransferRouting/Hospital/Projection.hs b/test/conformance-newsurface/Generated/TransferRouting/Hospital/Projection.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/Hospital/Projection.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/Hospital/Projection.hs
@@ -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.
diff --git a/test/conformance-newsurface/Generated/TransferRouting/Hospital/Transducer.hs b/test/conformance-newsurface/Generated/TransferRouting/Hospital/Transducer.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/Hospital/Transducer.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/Hospital/Transducer.hs
@@ -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
diff --git a/test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModel.hs b/test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModel.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModel.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModel.hs
@@ -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
diff --git a/test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModelHarness.hs b/test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModelHarness.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModelHarness.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModelTable.hs b/test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModelTable.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModelTable.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/HospitalLoad/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-newsurface/Generated/TransferRouting/HospitalTransferRouter/Router.hs b/test/conformance-newsurface/Generated/TransferRouting/HospitalTransferRouter/Router.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/HospitalTransferRouter/Router.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/HospitalTransferRouter/Router.hs
@@ -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
diff --git a/test/conformance-newsurface/Generated/TransferRouting/HospitalTransferRouter/RouterHarness.hs b/test/conformance-newsurface/Generated/TransferRouting/HospitalTransferRouter/RouterHarness.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/HospitalTransferRouter/RouterHarness.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/HospitalTransferRouter/RouterHarness.hs
@@ -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)]
diff --git a/test/conformance-newsurface/Generated/TransferRouting/ReplayAudit.hs b/test/conformance-newsurface/Generated/TransferRouting/ReplayAudit.hs
--- a/test/conformance-newsurface/Generated/TransferRouting/ReplayAudit.hs
+++ b/test/conformance-newsurface/Generated/TransferRouting/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/Nominals.hs b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/Nominals.hs
--- a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/Nominals.hs
+++ b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/Nominals.hs
@@ -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
diff --git a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/Nominals/Internal.hs b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/Nominals/Internal.hs
--- a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/Nominals/Internal.hs
+++ b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/Nominals/Internal.hs
@@ -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
diff --git a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/ProjectionCatalog.hs b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/ProjectionCatalog.hs
--- a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/ProjectionCatalog.hs
+++ b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/ProjectionCatalog.hs
@@ -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
diff --git a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/StructuralConformance.hs b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/StructuralConformance.hs
--- a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/StructuralConformance.hs
+++ b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/QueryContract.hs b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/QueryContract.hs
--- a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/QueryContract.hs
+++ b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/QueryContract.hs
@@ -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
diff --git a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModel.hs b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModel.hs
--- a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModel.hs
+++ b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModel.hs
@@ -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
diff --git a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModelHarness.hs b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModelHarness.hs
--- a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModelHarness.hs
+++ b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModelTable.hs b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModelTable.hs
--- a/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModelTable.hs
+++ b/test/conformance-nominal-query-only/Generated/MappedNominalQueryOnly/TemplateLookup/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Nominals.hs b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Nominals.hs
--- a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Nominals.hs
+++ b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Nominals.hs
@@ -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
diff --git a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Nominals/Internal.hs b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Nominals/Internal.hs
--- a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Nominals/Internal.hs
+++ b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Nominals/Internal.hs
@@ -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
diff --git a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Structural/NominalLeaves.hs b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Structural/NominalLeaves.hs
--- a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Structural/NominalLeaves.hs
+++ b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/Structural/NominalLeaves.hs
@@ -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)
diff --git a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/StructuralConformance.hs b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/StructuralConformance.hs
--- a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/StructuralConformance.hs
+++ b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/StructuralConformance.hs
@@ -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
diff --git a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/Queue.hs b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/Queue.hs
--- a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/Queue.hs
+++ b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/Queue.hs
@@ -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
diff --git a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/QueueCodec.hs b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/QueueCodec.hs
--- a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/QueueCodec.hs
+++ b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/QueueCodec.hs
@@ -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
diff --git a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/QueuePolicy.hs b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/QueuePolicy.hs
--- a/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/QueuePolicy.hs
+++ b/test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/QueuePolicy.hs
@@ -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
diff --git a/test/conformance-nominal-scalars/Generated/NominalScalars/BehaviorSourceMap.hs b/test/conformance-nominal-scalars/Generated/NominalScalars/BehaviorSourceMap.hs
--- a/test/conformance-nominal-scalars/Generated/NominalScalars/BehaviorSourceMap.hs
+++ b/test/conformance-nominal-scalars/Generated/NominalScalars/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-nominal-scalars/Generated/NominalScalars/Nominal/Shape/OrderStatus.hs b/test/conformance-nominal-scalars/Generated/NominalScalars/Nominal/Shape/OrderStatus.hs
--- a/test/conformance-nominal-scalars/Generated/NominalScalars/Nominal/Shape/OrderStatus.hs
+++ b/test/conformance-nominal-scalars/Generated/NominalScalars/Nominal/Shape/OrderStatus.hs
@@ -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)
diff --git a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/BehaviorContract.hs b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/BehaviorContract.hs
--- a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/BehaviorContract.hs
+++ b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Codec.hs b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Codec.hs
--- a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Codec.hs
+++ b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Codec.hs
@@ -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,
diff --git a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Domain.hs b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Domain.hs
--- a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Domain.hs
+++ b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Domain.hs
@@ -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)
diff --git a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/EventStream.hs b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/EventStream.hs
--- a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/EventStream.hs
+++ b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/EventStream.hs
@@ -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
diff --git a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Harness.hs b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Harness.hs
--- a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Harness.hs
+++ b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Harness.hs
@@ -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
diff --git a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Projection.hs b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Projection.hs
--- a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Projection.hs
+++ b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Projection.hs
@@ -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.
diff --git a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Transducer.hs b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Transducer.hs
--- a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Transducer.hs
+++ b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalLedger/Transducer.hs
@@ -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
diff --git a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalProjections.hs b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalProjections.hs
--- a/test/conformance-nominal-scalars/Generated/NominalScalars/NominalProjections.hs
+++ b/test/conformance-nominal-scalars/Generated/NominalScalars/NominalProjections.hs
@@ -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
diff --git a/test/conformance-nominal-scalars/Generated/NominalScalars/ReplayAudit.hs b/test/conformance-nominal-scalars/Generated/NominalScalars/ReplayAudit.hs
--- a/test/conformance-nominal-scalars/Generated/NominalScalars/ReplayAudit.hs
+++ b/test/conformance-nominal-scalars/Generated/NominalScalars/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-nominal-scalars/Main.hs b/test/conformance-nominal-scalars/Main.hs
--- a/test/conformance-nominal-scalars/Main.hs
+++ b/test/conformance-nominal-scalars/Main.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/BehaviorSourceMap.hs b/test/conformance-process-full/Generated/SurgeDemo/BehaviorSourceMap.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/BehaviorSourceMap.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Hospital/BehaviorContract.hs b/test/conformance-process-full/Generated/SurgeDemo/Hospital/BehaviorContract.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Hospital/BehaviorContract.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Hospital/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Hospital/Codec.hs b/test/conformance-process-full/Generated/SurgeDemo/Hospital/Codec.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Hospital/Codec.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Hospital/Codec.hs
@@ -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,
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Hospital/Domain.hs b/test/conformance-process-full/Generated/SurgeDemo/Hospital/Domain.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Hospital/Domain.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Hospital/Domain.hs
@@ -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)
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Hospital/EventStream.hs b/test/conformance-process-full/Generated/SurgeDemo/Hospital/EventStream.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Hospital/EventStream.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Hospital/EventStream.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Hospital/Harness.hs b/test/conformance-process-full/Generated/SurgeDemo/Hospital/Harness.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Hospital/Harness.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Hospital/Harness.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Hospital/Projection.hs b/test/conformance-process-full/Generated/SurgeDemo/Hospital/Projection.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Hospital/Projection.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Hospital/Projection.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Hospital/Transducer.hs b/test/conformance-process-full/Generated/SurgeDemo/Hospital/Transducer.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Hospital/Transducer.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Hospital/Transducer.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Nominals.hs b/test/conformance-process-full/Generated/SurgeDemo/Nominals.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Nominals.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Nominals.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Nominals/Internal.hs b/test/conformance-process-full/Generated/SurgeDemo/Nominals/Internal.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Nominals/Internal.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Nominals/Internal.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/ReplayAudit.hs b/test/conformance-process-full/Generated/SurgeDemo/ReplayAudit.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/ReplayAudit.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Surge/BehaviorContract.hs b/test/conformance-process-full/Generated/SurgeDemo/Surge/BehaviorContract.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Surge/BehaviorContract.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Surge/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Surge/Codec.hs b/test/conformance-process-full/Generated/SurgeDemo/Surge/Codec.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Surge/Codec.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Surge/Codec.hs
@@ -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,
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Surge/Domain.hs b/test/conformance-process-full/Generated/SurgeDemo/Surge/Domain.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Surge/Domain.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Surge/Domain.hs
@@ -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)
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Surge/EventStream.hs b/test/conformance-process-full/Generated/SurgeDemo/Surge/EventStream.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Surge/EventStream.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Surge/EventStream.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Surge/Harness.hs b/test/conformance-process-full/Generated/SurgeDemo/Surge/Harness.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Surge/Harness.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Surge/Harness.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Surge/Projection.hs b/test/conformance-process-full/Generated/SurgeDemo/Surge/Projection.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Surge/Projection.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Surge/Projection.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/Surge/Transducer.hs b/test/conformance-process-full/Generated/SurgeDemo/Surge/Transducer.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/Surge/Transducer.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/Surge/Transducer.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/SurgeFlow/Process.hs b/test/conformance-process-full/Generated/SurgeDemo/SurgeFlow/Process.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/SurgeFlow/Process.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/SurgeFlow/Process.hs
@@ -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
diff --git a/test/conformance-process-full/Generated/SurgeDemo/SurgeFlow/ProcessHarness.hs b/test/conformance-process-full/Generated/SurgeDemo/SurgeFlow/ProcessHarness.hs
--- a/test/conformance-process-full/Generated/SurgeDemo/SurgeFlow/ProcessHarness.hs
+++ b/test/conformance-process-full/Generated/SurgeDemo/SurgeFlow/ProcessHarness.hs
@@ -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,
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/Input.hs b/test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/Input.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/Input.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/Input.hs
@@ -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)
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/Process.hs b/test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/Process.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/Process.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/Process.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/ProcessHarness.hs b/test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/ProcessHarness.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/ProcessHarness.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/AuditOnly/ProcessHarness.hs
@@ -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,
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/BehaviorSourceMap.hs b/test/conformance-process-reactions/Generated/ProcessReactions/BehaviorSourceMap.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/BehaviorSourceMap.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/BehaviorSourceMap.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/BehaviorContract.hs b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/BehaviorContract.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/BehaviorContract.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Codec.hs b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Codec.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Codec.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Codec.hs
@@ -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,
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Domain.hs b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Domain.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Domain.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Domain.hs
@@ -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)
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/EventStream.hs b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/EventStream.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/EventStream.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/EventStream.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Harness.hs b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Harness.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Harness.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Harness.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Projection.hs b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Projection.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Projection.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Projection.hs
@@ -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.
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Transducer.hs b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Transducer.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Transducer.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/Incident/Transducer.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/Input.hs b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/Input.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/Input.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/Input.hs
@@ -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)
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/Process.hs b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/Process.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/Process.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/Process.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/ProcessHarness.hs b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/ProcessHarness.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/ProcessHarness.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentReaction/ProcessHarness.hs
@@ -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,
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/BehaviorContract.hs b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/BehaviorContract.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/BehaviorContract.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/BehaviorContract.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Codec.hs b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Codec.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Codec.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Codec.hs
@@ -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,
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Domain.hs b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Domain.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Domain.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Domain.hs
@@ -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)
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/EventStream.hs b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/EventStream.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/EventStream.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/EventStream.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Harness.hs b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Harness.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Harness.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Harness.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Projection.hs b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Projection.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Projection.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Projection.hs
@@ -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.
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Transducer.hs b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Transducer.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Transducer.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/IncidentSaga/Transducer.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/Nominals.hs b/test/conformance-process-reactions/Generated/ProcessReactions/Nominals.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/Nominals.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/Nominals.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/Nominals/Internal.hs b/test/conformance-process-reactions/Generated/ProcessReactions/Nominals/Internal.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/Nominals/Internal.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/Nominals/Internal.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/ReplayAudit.hs b/test/conformance-process-reactions/Generated/ProcessReactions/ReplayAudit.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/ReplayAudit.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/ReplayAudit.hs
@@ -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;
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/Input.hs b/test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/Input.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/Input.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/Input.hs
@@ -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)
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/Process.hs b/test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/Process.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/Process.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/Process.hs
@@ -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
diff --git a/test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/ProcessHarness.hs b/test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/ProcessHarness.hs
--- a/test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/ProcessHarness.hs
+++ b/test/conformance-process-reactions/Generated/ProcessReactions/ScalingReaction/ProcessHarness.hs
@@ -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,
diff --git a/test/conformance-process-reactions/Main.hs b/test/conformance-process-reactions/Main.hs
--- a/test/conformance-process-reactions/Main.hs
+++ b/test/conformance-process-reactions/Main.hs
@@ -29,7 +29,7 @@
 import Shibuya.Adapter (Adapter (..))
 import Shibuya.Core.Ack (AckDecision (..))
 import Shibuya.Core.AckHandle (AckHandle (..))
-import Shibuya.Core.Ingested (Ingested (..))
+import Shibuya.Core.Ingested (DeliveryStatus (..), Ingested (..))
 import Shibuya.Core.Types (Envelope (..))
 import Streamly.Data.Stream qualified as Streamly
 import System.Environment (getArgs)
@@ -208,7 +208,8 @@
       Ingested
         { envelope = Envelope "message" Nothing Nothing Nothing Nothing Nothing Nothing mempty message,
           ack = AckHandle (\decision -> liftIO (modifyIORef' decisions (<> [decision]))),
-          lease = Nothing
+          lease = Nothing,
+          deliveryStatus = pure DeliveryCurrent
         }
 
 expectRight :: (Show problem) => Either problem value -> IO value
diff --git a/test/conformance-process-reactions/keiro-dsl-cabal-fragment.context.process-reactions-minimal.txt b/test/conformance-process-reactions/keiro-dsl-cabal-fragment.context.process-reactions-minimal.txt
deleted file mode 100644
--- a/test/conformance-process-reactions/keiro-dsl-cabal-fragment.context.process-reactions-minimal.txt
+++ /dev/null
@@ -1,46 +0,0 @@
--- keiro-dsl build manifest for keiro-dsl/test/fixtures/process-reactions-minimal.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:
-    Generated.ProcessReactionsMinimal.BehaviorSourceMap
-    Generated.ProcessReactionsMinimal.Incident.BehaviorContract
-    Generated.ProcessReactionsMinimal.Incident.Codec
-    Generated.ProcessReactionsMinimal.Incident.Domain
-    Generated.ProcessReactionsMinimal.Incident.EventStream
-    Generated.ProcessReactionsMinimal.Incident.Harness
-    Generated.ProcessReactionsMinimal.Incident.Projection
-    Generated.ProcessReactionsMinimal.Incident.Transducer
-    Generated.ProcessReactionsMinimal.IncidentReaction.Input
-    Generated.ProcessReactionsMinimal.IncidentReaction.Process
-    Generated.ProcessReactionsMinimal.IncidentSaga.BehaviorContract
-    Generated.ProcessReactionsMinimal.IncidentSaga.Codec
-    Generated.ProcessReactionsMinimal.IncidentSaga.Domain
-    Generated.ProcessReactionsMinimal.IncidentSaga.EventStream
-    Generated.ProcessReactionsMinimal.IncidentSaga.Harness
-    Generated.ProcessReactionsMinimal.IncidentSaga.Projection
-    Generated.ProcessReactionsMinimal.IncidentSaga.Transducer
-    Generated.ProcessReactionsMinimal.Nominals
-    Generated.ProcessReactionsMinimal.Nominals.Internal
-    Generated.ProcessReactionsMinimal.ReplayAudit
-    ProcessReactionsMinimal.Incident.BehaviorHoles
-    ProcessReactionsMinimal.IncidentReaction.ProcessHoles
-    ProcessReactionsMinimal.IncidentSaga.BehaviorHoles
-
-build-depends:
-    , aeson
-    , base
-    , keiki
-    , keiro
-    , shibuya-core
-    , text
-    , time
-    , uuid
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/BehaviorSourceMap.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/BehaviorSourceMap.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/BehaviorSourceMap.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
 module Generated.HospitalCapacity.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/BehaviorContract.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/BehaviorContract.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/BehaviorContract.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/BehaviorContract.hs
@@ -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.HospitalCapacity.Hospital.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Codec.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Codec.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Codec.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Codec.hs
@@ -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.HospitalCapacity.Hospital.Codec (
     hospitalCodec,
     parseHospitalEvent,
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Domain.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Domain.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Domain.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Domain.hs
@@ -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.HospitalCapacity.Hospital.Domain where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/EventStream.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/EventStream.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/EventStream.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/EventStream.hs
@@ -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.HospitalCapacity.Hospital.EventStream
   ( hospitalCategory
   , hospitalCommandCategory
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Harness.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Harness.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Harness.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Harness.hs
@@ -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.HospitalCapacity.Hospital.Harness (harnessAssertions) where
 
 import Generated.HospitalCapacity.Hospital.Domain
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Projection.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Projection.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Projection.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Projection.hs
@@ -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.HospitalCapacity.Hospital.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Transducer.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Transducer.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Transducer.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Hospital/Transducer.hs
@@ -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.HospitalCapacity.Hospital.Transducer
   ( hospitalTransducer
   , hospitalFoldFingerprint
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/HospitalSurge/Process.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/HospitalSurge/Process.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/HospitalSurge/Process.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/HospitalSurge/Process.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from process HospitalSurge; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from process HospitalSurge; do not edit.
 module Generated.HospitalCapacity.HospitalSurge.Process
   ( hospitalSurgeProcessName
   , hospitalSurgeCategory
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/HospitalSurge/ProcessHarness.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/HospitalSurge/ProcessHarness.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/HospitalSurge/ProcessHarness.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/HospitalSurge/ProcessHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from process HospitalSurge; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from process HospitalSurge; do not edit.
 module Generated.HospitalCapacity.HospitalSurge.ProcessHarness (processHarnessValues) where
 
 -- | (label, value): the spec's deterministic process/timer decisions,
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Nominals.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Nominals.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Nominals.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Nominals.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
 module Generated.HospitalCapacity.Nominals
   ( CommandId
   , parseCommandId
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Nominals/Internal.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Nominals/Internal.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Nominals/Internal.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Nominals/Internal.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
 module Generated.HospitalCapacity.Nominals.Internal
   ( CommandId
   , parseCommandId
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/ReplayAudit.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/ReplayAudit.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/ReplayAudit.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/BehaviorContract.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/BehaviorContract.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/BehaviorContract.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/BehaviorContract.hs
@@ -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.HospitalCapacity.Surge.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Codec.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Codec.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Codec.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Codec.hs
@@ -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.HospitalCapacity.Surge.Codec (
     surgeCodec,
     parseSurgeEvent,
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Domain.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Domain.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Domain.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Domain.hs
@@ -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.HospitalCapacity.Surge.Domain where
 
 import Data.Text (Text)
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/EventStream.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/EventStream.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/EventStream.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/EventStream.hs
@@ -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.HospitalCapacity.Surge.EventStream
   ( surgeCategory
   , surgeCommandCategory
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Harness.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Harness.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Harness.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Harness.hs
@@ -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.HospitalCapacity.Surge.Harness (harnessAssertions) where
 
 import Generated.HospitalCapacity.Surge.Domain
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Projection.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Projection.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Projection.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Projection.hs
@@ -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.HospitalCapacity.Surge.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Transducer.hs b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Transducer.hs
--- a/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Transducer.hs
+++ b/test/conformance-process-runtime/Generated/HospitalCapacity/Surge/Transducer.hs
@@ -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.HospitalCapacity.Surge.Transducer
   ( surgeTransducer
   , surgeFoldFingerprint
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/BehaviorSourceMap.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/BehaviorSourceMap.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/BehaviorSourceMap.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context incident-response behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context incident-response behavior source map; do not edit.
 module Generated.IncidentResponse.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/BehaviorContract.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/BehaviorContract.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/BehaviorContract.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/BehaviorContract.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
 module Generated.IncidentResponse.Escalation.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Codec.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Codec.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Codec.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
 module Generated.IncidentResponse.Escalation.Codec (
     escalationCodec,
     parseEscalationEvent,
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Domain.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Domain.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Domain.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
 module Generated.IncidentResponse.Escalation.Domain where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/EventStream.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/EventStream.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/EventStream.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
 module Generated.IncidentResponse.Escalation.EventStream
   ( escalationCategory
   , escalationCommandCategory
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Harness.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Harness.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Harness.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Harness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
 module Generated.IncidentResponse.Escalation.Harness (harnessAssertions) where
 
 import Generated.IncidentResponse.Escalation.Domain
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Projection.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Projection.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Projection.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
 module Generated.IncidentResponse.Escalation.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Transducer.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Transducer.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Transducer.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Escalation/Transducer.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Escalation; do not edit.
 module Generated.IncidentResponse.Escalation.Transducer
   ( escalationTransducer
   , escalationFoldFingerprint
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/BehaviorContract.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/BehaviorContract.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/BehaviorContract.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/BehaviorContract.hs
@@ -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.IncidentResponse.Incident.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Codec.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Codec.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Codec.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Codec.hs
@@ -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.IncidentResponse.Incident.Codec (
     incidentCodec,
     parseIncidentEvent,
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Domain.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Domain.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Domain.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Domain.hs
@@ -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.IncidentResponse.Incident.Domain where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/EventStream.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/EventStream.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/EventStream.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/EventStream.hs
@@ -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.IncidentResponse.Incident.EventStream
   ( incidentCategory
   , incidentCommandCategory
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Harness.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Harness.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Harness.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Harness.hs
@@ -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.IncidentResponse.Incident.Harness (harnessAssertions) where
 
 import Generated.IncidentResponse.Incident.Domain
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Projection.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Projection.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Projection.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Projection.hs
@@ -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.IncidentResponse.Incident.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Transducer.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Transducer.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Transducer.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Incident/Transducer.hs
@@ -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.IncidentResponse.Incident.Transducer
   ( incidentTransducer
   , incidentFoldFingerprint
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/Input.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/Input.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/Input.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/Input.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE DeriveAnyClass #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process input IncidentEscalation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process input IncidentEscalation; do not edit.
 module Generated.IncidentResponse.IncidentEscalation.Input (IncidentEscalationInput (..)) where
 
 import Data.Aeson (FromJSON, ToJSON)
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/Process.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/Process.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/Process.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/Process.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveAnyClass #-}
 {-# OPTIONS_GHC -Wno-missing-signatures #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process reaction IncidentEscalation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process reaction IncidentEscalation; do not edit.
 module Generated.IncidentResponse.IncidentEscalation.Process
   ( IncidentEscalationInput (..)
   , incidentEscalationProcessName
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/ProcessHarness.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/ProcessHarness.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/ProcessHarness.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/IncidentEscalation/ProcessHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process IncidentEscalation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process IncidentEscalation; do not edit.
 module Generated.IncidentResponse.IncidentEscalation.ProcessHarness (processHarnessValues) where
 
 -- | (label, value): the spec's deterministic process/timer decisions,
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Nominals.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Nominals.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Nominals.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Nominals.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE DeriveAnyClass #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context incident-response generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context incident-response generated nominal declarations; do not edit.
 module Generated.IncidentResponse.Nominals
   ( EscalationNoOp (..)
   , escalationNoOpText
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/Nominals/Internal.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/Nominals/Internal.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/Nominals/Internal.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/Nominals/Internal.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context incident-response generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context incident-response generated nominal ID internals; do not edit.
 module Generated.IncidentResponse.Nominals.Internal
   ( IncidentId
   , parseIncidentId
diff --git a/test/conformance-process-state-authority/Generated/IncidentResponse/ReplayAudit.hs b/test/conformance-process-state-authority/Generated/IncidentResponse/ReplayAudit.hs
--- a/test/conformance-process-state-authority/Generated/IncidentResponse/ReplayAudit.hs
+++ b/test/conformance-process-state-authority/Generated/IncidentResponse/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context incident-response replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context incident-response replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/BehaviorSourceMap.hs b/test/conformance-process-timers/Generated/ProcessTimers/BehaviorSourceMap.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/BehaviorSourceMap.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context process-timers behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context process-timers behavior source map; do not edit.
 module Generated.ProcessTimers.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/Incident/BehaviorContract.hs b/test/conformance-process-timers/Generated/ProcessTimers/Incident/BehaviorContract.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/Incident/BehaviorContract.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/Incident/BehaviorContract.hs
@@ -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.ProcessTimers.Incident.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/Incident/Codec.hs b/test/conformance-process-timers/Generated/ProcessTimers/Incident/Codec.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/Incident/Codec.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/Incident/Codec.hs
@@ -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.ProcessTimers.Incident.Codec (
     incidentCodec,
     parseIncidentEvent,
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/Incident/Domain.hs b/test/conformance-process-timers/Generated/ProcessTimers/Incident/Domain.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/Incident/Domain.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/Incident/Domain.hs
@@ -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.ProcessTimers.Incident.Domain where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/Incident/EventStream.hs b/test/conformance-process-timers/Generated/ProcessTimers/Incident/EventStream.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/Incident/EventStream.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/Incident/EventStream.hs
@@ -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.ProcessTimers.Incident.EventStream
   ( incidentCategory
   , incidentCommandCategory
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/Incident/Harness.hs b/test/conformance-process-timers/Generated/ProcessTimers/Incident/Harness.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/Incident/Harness.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/Incident/Harness.hs
@@ -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.ProcessTimers.Incident.Harness (harnessAssertions) where
 
 import Generated.ProcessTimers.Incident.Domain
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/Incident/Projection.hs b/test/conformance-process-timers/Generated/ProcessTimers/Incident/Projection.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/Incident/Projection.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/Incident/Projection.hs
@@ -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.ProcessTimers.Incident.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/Incident/Transducer.hs b/test/conformance-process-timers/Generated/ProcessTimers/Incident/Transducer.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/Incident/Transducer.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/Incident/Transducer.hs
@@ -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.ProcessTimers.Incident.Transducer
   ( incidentTransducer
   , incidentFoldFingerprint
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/BehaviorContract.hs b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/BehaviorContract.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/BehaviorContract.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/BehaviorContract.hs
@@ -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.ProcessTimers.IncidentSaga.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Codec.hs b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Codec.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Codec.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Codec.hs
@@ -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.ProcessTimers.IncidentSaga.Codec (
     incidentSagaCodec,
     parseIncidentSagaEvent,
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Domain.hs b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Domain.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Domain.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Domain.hs
@@ -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.ProcessTimers.IncidentSaga.Domain where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/EventStream.hs b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/EventStream.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/EventStream.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/EventStream.hs
@@ -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.ProcessTimers.IncidentSaga.EventStream
   ( incidentSagaCategory
   , incidentSagaCommandCategory
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Harness.hs b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Harness.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Harness.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Harness.hs
@@ -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.ProcessTimers.IncidentSaga.Harness (harnessAssertions) where
 
 import Generated.ProcessTimers.IncidentSaga.Domain
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Projection.hs b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Projection.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Projection.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Projection.hs
@@ -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.ProcessTimers.IncidentSaga.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Transducer.hs b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Transducer.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Transducer.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/IncidentSaga/Transducer.hs
@@ -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.ProcessTimers.IncidentSaga.Transducer
   ( incidentSagaTransducer
   , incidentSagaFoldFingerprint
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/Input.hs b/test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/Input.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/Input.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/Input.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE DeriveAnyClass #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process input IncidentTimers; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process input IncidentTimers; do not edit.
 module Generated.ProcessTimers.IncidentTimers.Input (IncidentTimersInput (..)) where
 
 import Data.Aeson (FromJSON, ToJSON)
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/Process.hs b/test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/Process.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/Process.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/Process.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveAnyClass #-}
 {-# OPTIONS_GHC -Wno-missing-signatures #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process reaction IncidentTimers; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process reaction IncidentTimers; do not edit.
 module Generated.ProcessTimers.IncidentTimers.Process
   ( IncidentTimersInput (..)
   , incidentTimersProcessName
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/ProcessHarness.hs b/test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/ProcessHarness.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/ProcessHarness.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/IncidentTimers/ProcessHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from process IncidentTimers; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from process IncidentTimers; do not edit.
 module Generated.ProcessTimers.IncidentTimers.ProcessHarness (processHarnessValues) where
 
 -- | (label, value): the spec's deterministic process/timer decisions,
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/Nominals.hs b/test/conformance-process-timers/Generated/ProcessTimers/Nominals.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/Nominals.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/Nominals.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context process-timers generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context process-timers generated nominal declarations; do not edit.
 module Generated.ProcessTimers.Nominals
   ( IncidentId
   , parseIncidentId
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/Nominals/Internal.hs b/test/conformance-process-timers/Generated/ProcessTimers/Nominals/Internal.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/Nominals/Internal.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/Nominals/Internal.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context process-timers generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context process-timers generated nominal ID internals; do not edit.
 module Generated.ProcessTimers.Nominals.Internal
   ( IncidentId
   , parseIncidentId
diff --git a/test/conformance-process-timers/Generated/ProcessTimers/ReplayAudit.hs b/test/conformance-process-timers/Generated/ProcessTimers/ReplayAudit.hs
--- a/test/conformance-process-timers/Generated/ProcessTimers/ReplayAudit.hs
+++ b/test/conformance-process-timers/Generated/ProcessTimers/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context process-timers replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context process-timers replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-process/Generated/HospitalCapacity/BehaviorSourceMap.hs b/test/conformance-process/Generated/HospitalCapacity/BehaviorSourceMap.hs
--- a/test/conformance-process/Generated/HospitalCapacity/BehaviorSourceMap.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
 module Generated.HospitalCapacity.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-process/Generated/HospitalCapacity/Hospital/BehaviorContract.hs b/test/conformance-process/Generated/HospitalCapacity/Hospital/BehaviorContract.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Hospital/BehaviorContract.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Hospital/BehaviorContract.hs
@@ -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.HospitalCapacity.Hospital.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-process/Generated/HospitalCapacity/Hospital/Codec.hs b/test/conformance-process/Generated/HospitalCapacity/Hospital/Codec.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Hospital/Codec.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Hospital/Codec.hs
@@ -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.HospitalCapacity.Hospital.Codec (
     hospitalCodec,
     parseHospitalEvent,
diff --git a/test/conformance-process/Generated/HospitalCapacity/Hospital/Domain.hs b/test/conformance-process/Generated/HospitalCapacity/Hospital/Domain.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Hospital/Domain.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Hospital/Domain.hs
@@ -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.HospitalCapacity.Hospital.Domain where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-process/Generated/HospitalCapacity/Hospital/EventStream.hs b/test/conformance-process/Generated/HospitalCapacity/Hospital/EventStream.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Hospital/EventStream.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Hospital/EventStream.hs
@@ -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.HospitalCapacity.Hospital.EventStream
   ( hospitalCategory
   , hospitalCommandCategory
diff --git a/test/conformance-process/Generated/HospitalCapacity/Hospital/Harness.hs b/test/conformance-process/Generated/HospitalCapacity/Hospital/Harness.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Hospital/Harness.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Hospital/Harness.hs
@@ -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.HospitalCapacity.Hospital.Harness (harnessAssertions) where
 
 import Generated.HospitalCapacity.Hospital.Domain
diff --git a/test/conformance-process/Generated/HospitalCapacity/Hospital/Projection.hs b/test/conformance-process/Generated/HospitalCapacity/Hospital/Projection.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Hospital/Projection.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Hospital/Projection.hs
@@ -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.HospitalCapacity.Hospital.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-process/Generated/HospitalCapacity/Hospital/Transducer.hs b/test/conformance-process/Generated/HospitalCapacity/Hospital/Transducer.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Hospital/Transducer.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Hospital/Transducer.hs
@@ -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.HospitalCapacity.Hospital.Transducer
   ( hospitalTransducer
   , hospitalFoldFingerprint
diff --git a/test/conformance-process/Generated/HospitalCapacity/HospitalSurge/Process.hs b/test/conformance-process/Generated/HospitalCapacity/HospitalSurge/Process.hs
--- a/test/conformance-process/Generated/HospitalCapacity/HospitalSurge/Process.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/HospitalSurge/Process.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from process HospitalSurge; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from process HospitalSurge; do not edit.
 module Generated.HospitalCapacity.HospitalSurge.Process
   ( hospitalSurgeProcessName
   , hospitalSurgeCategory
diff --git a/test/conformance-process/Generated/HospitalCapacity/HospitalSurge/ProcessHarness.hs b/test/conformance-process/Generated/HospitalCapacity/HospitalSurge/ProcessHarness.hs
--- a/test/conformance-process/Generated/HospitalCapacity/HospitalSurge/ProcessHarness.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/HospitalSurge/ProcessHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from process HospitalSurge; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from process HospitalSurge; do not edit.
 module Generated.HospitalCapacity.HospitalSurge.ProcessHarness (processHarnessValues) where
 
 -- | (label, value): the spec's deterministic process/timer decisions,
diff --git a/test/conformance-process/Generated/HospitalCapacity/Nominals.hs b/test/conformance-process/Generated/HospitalCapacity/Nominals.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Nominals.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Nominals.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
 module Generated.HospitalCapacity.Nominals
   ( CommandId
   , parseCommandId
diff --git a/test/conformance-process/Generated/HospitalCapacity/Nominals/Internal.hs b/test/conformance-process/Generated/HospitalCapacity/Nominals/Internal.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Nominals/Internal.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Nominals/Internal.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
 module Generated.HospitalCapacity.Nominals.Internal
   ( CommandId
   , parseCommandId
diff --git a/test/conformance-process/Generated/HospitalCapacity/ReplayAudit.hs b/test/conformance-process/Generated/HospitalCapacity/ReplayAudit.hs
--- a/test/conformance-process/Generated/HospitalCapacity/ReplayAudit.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-process/Generated/HospitalCapacity/Surge/BehaviorContract.hs b/test/conformance-process/Generated/HospitalCapacity/Surge/BehaviorContract.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Surge/BehaviorContract.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Surge/BehaviorContract.hs
@@ -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.HospitalCapacity.Surge.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-process/Generated/HospitalCapacity/Surge/Codec.hs b/test/conformance-process/Generated/HospitalCapacity/Surge/Codec.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Surge/Codec.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Surge/Codec.hs
@@ -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.HospitalCapacity.Surge.Codec (
     surgeCodec,
     parseSurgeEvent,
diff --git a/test/conformance-process/Generated/HospitalCapacity/Surge/Domain.hs b/test/conformance-process/Generated/HospitalCapacity/Surge/Domain.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Surge/Domain.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Surge/Domain.hs
@@ -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.HospitalCapacity.Surge.Domain where
 
 import Data.Text (Text)
diff --git a/test/conformance-process/Generated/HospitalCapacity/Surge/EventStream.hs b/test/conformance-process/Generated/HospitalCapacity/Surge/EventStream.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Surge/EventStream.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Surge/EventStream.hs
@@ -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.HospitalCapacity.Surge.EventStream
   ( surgeCategory
   , surgeCommandCategory
diff --git a/test/conformance-process/Generated/HospitalCapacity/Surge/Harness.hs b/test/conformance-process/Generated/HospitalCapacity/Surge/Harness.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Surge/Harness.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Surge/Harness.hs
@@ -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.HospitalCapacity.Surge.Harness (harnessAssertions) where
 
 import Generated.HospitalCapacity.Surge.Domain
diff --git a/test/conformance-process/Generated/HospitalCapacity/Surge/Projection.hs b/test/conformance-process/Generated/HospitalCapacity/Surge/Projection.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Surge/Projection.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Surge/Projection.hs
@@ -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.HospitalCapacity.Surge.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-process/Generated/HospitalCapacity/Surge/Transducer.hs b/test/conformance-process/Generated/HospitalCapacity/Surge/Transducer.hs
--- a/test/conformance-process/Generated/HospitalCapacity/Surge/Transducer.hs
+++ b/test/conformance-process/Generated/HospitalCapacity/Surge/Transducer.hs
@@ -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.HospitalCapacity.Surge.Transducer
   ( surgeTransducer
   , surgeFoldFingerprint
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/BehaviorSourceMap.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/BehaviorSourceMap.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/BehaviorSourceMap.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context catalog-demo behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context catalog-demo behavior source map; do not edit.
 module Generated.CatalogDemo.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModel.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModel.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModel.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModel.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel catalogAudit; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel catalogAudit; do not edit.
 module Generated.CatalogDemo.CatalogAudit.ReadModel
   ( catalogAuditReadModel
   , catalogAuditQualifiedTable
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModelHarness.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModelHarness.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModelHarness.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModelHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel catalogAudit; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel catalogAudit; do not edit.
 module Generated.CatalogDemo.CatalogAudit.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where
 
 import Generated.CatalogDemo.CatalogAudit.ReadModel (catalogAuditReadModel)
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModelTable.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModelTable.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModelTable.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/CatalogAudit/ReadModelTable.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel catalogAudit; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel catalogAudit; do not edit.
 module Generated.CatalogDemo.CatalogAudit.ReadModelTable (catalogAuditQualifiedTable) where
 
 import Data.Text (Text)
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/QueryContract.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/QueryContract.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/QueryContract.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/QueryContract.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel order_inline; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel order_inline; do not edit.
 module Generated.CatalogDemo.OrderInline.QueryContract
   ( OrderInlineQueryInput
   , OrderInlineQueryResult
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModel.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModel.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModel.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModel.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel order_inline; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel order_inline; do not edit.
 module Generated.CatalogDemo.OrderInline.ReadModel
   ( orderInlineReadModel
   , orderInlineQualifiedTable
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModelHarness.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModelHarness.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModelHarness.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModelHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel order_inline; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel order_inline; do not edit.
 module Generated.CatalogDemo.OrderInline.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where
 
 import Generated.CatalogDemo.OrderInline.ReadModel (orderInlineReadModel)
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModelTable.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModelTable.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModelTable.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderInline/ReadModelTable.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel order_inline; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel order_inline; do not edit.
 module Generated.CatalogDemo.OrderInline.ReadModelTable (orderInlineQualifiedTable) where
 
 import Data.Text (Text)
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModel.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModel.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModel.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModel.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel order_totals_lookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel order_totals_lookup; do not edit.
 module Generated.CatalogDemo.OrderTotalsLookup.ReadModel
   ( orderTotalsLookupReadModel
   , orderTotalsLookupQualifiedTable
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModelHarness.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModelHarness.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModelHarness.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModelHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel order_totals_lookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel order_totals_lookup; do not edit.
 module Generated.CatalogDemo.OrderTotalsLookup.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where
 
 import Generated.CatalogDemo.OrderTotalsLookup.ReadModel (orderTotalsLookupReadModel)
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModelTable.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModelTable.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModelTable.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/OrderTotalsLookup/ReadModelTable.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel order_totals_lookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel order_totals_lookup; do not edit.
 module Generated.CatalogDemo.OrderTotalsLookup.ReadModelTable (orderTotalsLookupQualifiedTable) where
 
 import Data.Text (Text)
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/BehaviorContract.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/BehaviorContract.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/BehaviorContract.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
 module Generated.CatalogDemo.Orders.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Codec.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Codec.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Codec.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
 module Generated.CatalogDemo.Orders.Codec (
     ordersCodec,
     parseOrdersEvent,
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Domain.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Domain.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Domain.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
 module Generated.CatalogDemo.Orders.Domain where
 
 import Data.Proxy (Proxy (..))
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/EventStream.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/EventStream.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/EventStream.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
 module Generated.CatalogDemo.Orders.EventStream
   ( ordersCategory
   , ordersCommandCategory
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Harness.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Harness.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Harness.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
 module Generated.CatalogDemo.Orders.Harness (harnessAssertions) where
 
 import Generated.CatalogDemo.Orders.Domain
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Projection.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Projection.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Projection.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
 module Generated.CatalogDemo.Orders.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Transducer.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Transducer.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Transducer.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Orders/Transducer.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Orders; do not edit.
 module Generated.CatalogDemo.Orders.Transducer
   ( ordersTransducer
   , ordersFoldFingerprint
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/ProjectionCatalog.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/ProjectionCatalog.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/ProjectionCatalog.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/ProjectionCatalog.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from projection-catalog catalog-demo; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from projection-catalog catalog-demo; do not edit.
 {-# LANGUAGE OverloadedStrings #-}
 module Generated.CatalogDemo.ProjectionCatalog
   ( projectionCatalog
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/Queue.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/Queue.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/Queue.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/Queue.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from workqueue qualification_jobs; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from workqueue qualification_jobs; do not edit.
 module Generated.CatalogDemo.QualificationJobs.Queue
   ( QualificationJob (..)
   , encodeQualificationJob
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/QueueCodec.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/QueueCodec.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/QueueCodec.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/QueueCodec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from workqueue qualification_jobs; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from workqueue qualification_jobs; do not edit.
 -- | Versioned job payload envelope: @{\"v\",\"t\",\"data\"}@.
 --
 -- Deploy workers before producers when raising its schema version. Do not
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/QueuePolicy.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/QueuePolicy.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/QueuePolicy.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/QualificationJobs/QueuePolicy.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from workqueue qualification_jobs; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from workqueue qualification_jobs; do not edit.
 module Generated.CatalogDemo.QualificationJobs.QueuePolicy
   ( QualificationJobsOutcome (..)
   , retryPolicy, jobOutcomeFor
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/ReplayAudit.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/ReplayAudit.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/ReplayAudit.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context catalog-demo replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context catalog-demo replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModel.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModel.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModel.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModel.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel shipmentLookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel shipmentLookup; do not edit.
 module Generated.CatalogDemo.ShipmentLookup.ReadModel
   ( shipmentLookupReadModel
   , shipmentLookupQualifiedTable
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModelHarness.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModelHarness.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModelHarness.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModelHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel shipmentLookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel shipmentLookup; do not edit.
 module Generated.CatalogDemo.ShipmentLookup.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where
 
 import Generated.CatalogDemo.ShipmentLookup.ReadModel (shipmentLookupReadModel)
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModelTable.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModelTable.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModelTable.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/ShipmentLookup/ReadModelTable.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from readmodel shipmentLookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from readmodel shipmentLookup; do not edit.
 module Generated.CatalogDemo.ShipmentLookup.ReadModelTable (shipmentLookupQualifiedTable) where
 
 import Data.Text (Text)
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/BehaviorContract.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/BehaviorContract.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/BehaviorContract.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
 module Generated.CatalogDemo.Shipments.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Codec.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Codec.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Codec.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
 module Generated.CatalogDemo.Shipments.Codec (
     shipmentsCodec,
     parseShipmentsEvent,
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Domain.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Domain.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Domain.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
 module Generated.CatalogDemo.Shipments.Domain where
 
 import Data.Proxy (Proxy (..))
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/EventStream.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/EventStream.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/EventStream.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
 module Generated.CatalogDemo.Shipments.EventStream
   ( shipmentsCategory
   , shipmentsCommandCategory
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Harness.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Harness.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Harness.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
 module Generated.CatalogDemo.Shipments.Harness (harnessAssertions) where
 
 import Generated.CatalogDemo.Shipments.Domain
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Projection.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Projection.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Projection.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
 module Generated.CatalogDemo.Shipments.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Transducer.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Transducer.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Transducer.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Shipments/Transducer.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from aggregate Shipments; do not edit.
 module Generated.CatalogDemo.Shipments.Transducer
   ( shipmentsTransducer
   , shipmentsFoldFingerprint
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/Structural/Shape/QualificationPayload.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/Structural/Shape/QualificationPayload.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/Structural/Shape/QualificationPayload.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/Structural/Shape/QualificationPayload.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from mapped structural QualificationPayload; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from mapped structural QualificationPayload; do not edit.
 module Generated.CatalogDemo.Structural.Shape.QualificationPayload (QualificationPayloadShape (..)) where
 
 import Data.Text (Text)
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/StructuralConformance.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/StructuralConformance.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/StructuralConformance.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/StructuralConformance.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context catalog-demo structural conformance; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context catalog-demo structural conformance; do not edit.
 module Generated.CatalogDemo.StructuralConformance
   ( structuralConformanceAssertions
   ) where
diff --git a/test/conformance-projection-catalog/Generated/CatalogDemo/StructuralProjections.hs b/test/conformance-projection-catalog/Generated/CatalogDemo/StructuralProjections.hs
--- a/test/conformance-projection-catalog/Generated/CatalogDemo/StructuralProjections.hs
+++ b/test/conformance-projection-catalog/Generated/CatalogDemo/StructuralProjections.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TypeFamilies #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from context catalog-demo mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from context catalog-demo 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.
diff --git a/test/conformance-publisher-runtime/Generated/HospitalCapacity/Emergency/Contract.hs b/test/conformance-publisher-runtime/Generated/HospitalCapacity/Emergency/Contract.hs
--- a/test/conformance-publisher-runtime/Generated/HospitalCapacity/Emergency/Contract.hs
+++ b/test/conformance-publisher-runtime/Generated/HospitalCapacity/Emergency/Contract.hs
@@ -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 (..)
   , TransferReservationAcceptedData (..)
diff --git a/test/conformance-publisher-runtime/Generated/HospitalCapacity/HospitalPublisher/Publisher.hs b/test/conformance-publisher-runtime/Generated/HospitalCapacity/HospitalPublisher/Publisher.hs
--- a/test/conformance-publisher-runtime/Generated/HospitalCapacity/HospitalPublisher/Publisher.hs
+++ b/test/conformance-publisher-runtime/Generated/HospitalCapacity/HospitalPublisher/Publisher.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from publisher hospitalPublisher; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from publisher hospitalPublisher; do not edit.
 module Generated.HospitalCapacity.HospitalPublisher.Publisher
   ( publisherOrdering
   , publisherBackoff
diff --git a/test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs b/test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs
--- a/test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs
+++ b/test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs
@@ -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
diff --git a/test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs b/test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs
--- a/test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs
+++ b/test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs b/test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs
--- a/test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs
+++ b/test/conformance-queue-runtime/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/Queue.hs b/test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/Queue.hs
--- a/test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/Queue.hs
+++ b/test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/Queue.hs
@@ -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
diff --git a/test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs b/test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs
--- a/test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs
+++ b/test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs
@@ -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
diff --git a/test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs b/test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs
--- a/test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs
+++ b/test/conformance-queue-runtime/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs
@@ -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
diff --git a/test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs b/test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs
--- a/test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs
+++ b/test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs
@@ -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
diff --git a/test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs b/test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs
--- a/test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs
+++ b/test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs b/test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs
--- a/test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs
+++ b/test/conformance-queue-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs b/test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs
--- a/test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs
+++ b/test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModel.hs
@@ -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
diff --git a/test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs b/test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs
--- a/test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs
+++ b/test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs b/test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs
--- a/test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs
+++ b/test/conformance-queue/Generated/HospitalCapacity/AcceptedTransferNeeds/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-queue/Generated/HospitalCapacity/ReservationWork/Queue.hs b/test/conformance-queue/Generated/HospitalCapacity/ReservationWork/Queue.hs
--- a/test/conformance-queue/Generated/HospitalCapacity/ReservationWork/Queue.hs
+++ b/test/conformance-queue/Generated/HospitalCapacity/ReservationWork/Queue.hs
@@ -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
diff --git a/test/conformance-queue/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs b/test/conformance-queue/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs
--- a/test/conformance-queue/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs
+++ b/test/conformance-queue/Generated/HospitalCapacity/ReservationWork/QueueCodec.hs
@@ -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
diff --git a/test/conformance-queue/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs b/test/conformance-queue/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs
--- a/test/conformance-queue/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs
+++ b/test/conformance-queue/Generated/HospitalCapacity/ReservationWork/QueuePolicy.hs
@@ -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
diff --git a/test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs b/test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs
--- a/test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs
+++ b/test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs
@@ -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
diff --git a/test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs b/test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs
--- a/test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs
+++ b/test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs b/test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs
--- a/test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs
+++ b/test/conformance-queue/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs b/test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs
--- a/test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs
+++ b/test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModel.hs
@@ -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
diff --git a/test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs b/test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs
--- a/test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs
+++ b/test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelHarness.hs
@@ -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)
diff --git a/test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs b/test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs
--- a/test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs
+++ b/test/conformance-readmodel-runtime/Generated/HospitalCapacity/TransferDecisions/ReadModelTable.hs
@@ -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)
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/BehaviorSourceMap.hs b/test/conformance-refined-base16/Generated/RefinedBase16/BehaviorSourceMap.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/BehaviorSourceMap.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context refined-base16 behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context refined-base16 behavior source map; do not edit.
 module Generated.RefinedBase16.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/Queue.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/Queue.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/Queue.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/Queue.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue hash_jobs; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue hash_jobs; do not edit.
 module Generated.RefinedBase16.HashJobs.Queue
   ( HashJob (..)
   , encodeHashJob
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueueCodec.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueueCodec.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueueCodec.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueueCodec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue hash_jobs; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue hash_jobs; do not edit.
 -- | Versioned job payload envelope: @{\"v\",\"t\",\"data\"}@.
 --
 -- Deploy workers before producers when raising its schema version. Do not
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueuePolicy.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueuePolicy.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueuePolicy.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashJobs/QueuePolicy.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue hash_jobs; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue hash_jobs; do not edit.
 module Generated.RefinedBase16.HashJobs.QueuePolicy
   ( HashJobsOutcome (..)
   , retryPolicy, jobOutcomeFor
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/QueryContract.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/QueryContract.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/QueryContract.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/QueryContract.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel hash_lookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel hash_lookup; do not edit.
 module Generated.RefinedBase16.HashLookup.QueryContract
   ( HashLookupQueryInput
   , HashLookupQueryResult
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModel.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModel.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModel.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModel.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel hash_lookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel hash_lookup; do not edit.
 module Generated.RefinedBase16.HashLookup.ReadModel
   ( hashLookupReadModel
   , hashLookupQualifiedTable
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelHarness.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelHarness.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelHarness.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel hash_lookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel hash_lookup; do not edit.
 module Generated.RefinedBase16.HashLookup.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where
 
 import Generated.RefinedBase16.HashLookup.ReadModel (hashLookupReadModel)
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelTable.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelTable.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelTable.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashLookup/ReadModelTable.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel hash_lookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel hash_lookup; do not edit.
 module Generated.RefinedBase16.HashLookup.ReadModelTable (hashLookupQualifiedTable) where
 
 import Data.Text (Text)
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/BehaviorContract.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/BehaviorContract.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/BehaviorContract.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
 module Generated.RefinedBase16.HashStore.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Codec.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Codec.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Codec.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
 module Generated.RefinedBase16.HashStore.Codec (
     hashStoreCodec,
     parseHashStoreEvent,
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Domain.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Domain.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Domain.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Domain.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveAnyClass #-}
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
 module Generated.RefinedBase16.HashStore.Domain where
 
 import Data.Aeson (FromJSON, ToJSON)
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/EventStream.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/EventStream.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/EventStream.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
 module Generated.RefinedBase16.HashStore.EventStream
   ( hashStoreCategory
   , hashStoreCommandCategory
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Harness.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Harness.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Harness.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
 module Generated.RefinedBase16.HashStore.Harness (harnessAssertions) where
 
 import Generated.RefinedBase16.HashStore.Domain
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Projection.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Projection.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Projection.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
 module Generated.RefinedBase16.HashStore.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Transducer.hs b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Transducer.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Transducer.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/HashStore/Transducer.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate HashStore; do not edit.
 module Generated.RefinedBase16.HashStore.Transducer
   ( hashStoreTransducer
   , hashStoreFoldFingerprint
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/ProjectionCatalog.hs b/test/conformance-refined-base16/Generated/RefinedBase16/ProjectionCatalog.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/ProjectionCatalog.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/ProjectionCatalog.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from projection-catalog refined-base16; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from projection-catalog refined-base16; do not edit.
 {-# LANGUAGE OverloadedStrings #-}
 module Generated.RefinedBase16.ProjectionCatalog
   ( projectionCatalog
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/ReplayAudit.hs b/test/conformance-refined-base16/Generated/RefinedBase16/ReplayAudit.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/ReplayAudit.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context refined-base16 replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context refined-base16 replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/ContentHash.hs b/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/ContentHash.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/ContentHash.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/ContentHash.hs
@@ -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.RefinedBase16.Structural.Shape.ContentHash (ContentHashShape) where
 
 import Data.ByteString (ByteString)
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/HashEnvelope.hs b/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/HashEnvelope.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/HashEnvelope.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/HashEnvelope.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural HashEnvelope; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural HashEnvelope; do not edit.
 module Generated.RefinedBase16.Structural.Shape.HashEnvelope (HashEnvelopeShape (..)) where
 
 import Data.Map.Strict (Map)
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/MaybeContentHash.hs b/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/MaybeContentHash.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/MaybeContentHash.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/Structural/Shape/MaybeContentHash.hs
@@ -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.RefinedBase16.Structural.Shape.MaybeContentHash (MaybeContentHashShape) where
 
 import Generated.RefinedBase16.Structural.Shape.ContentHash qualified as ContentHash
diff --git a/test/conformance-refined-base16/Generated/RefinedBase16/StructuralConformance.hs b/test/conformance-refined-base16/Generated/RefinedBase16/StructuralConformance.hs
--- a/test/conformance-refined-base16/Generated/RefinedBase16/StructuralConformance.hs
+++ b/test/conformance-refined-base16/Generated/RefinedBase16/StructuralConformance.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context refined-base16 structural conformance; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context refined-base16 structural conformance; do not edit.
 module Generated.RefinedBase16.StructuralConformance
   ( structuralConformanceAssertions
   ) where
diff --git a/test/conformance-replay/Generated/ReplayDivergence/BehaviorSourceMap.hs b/test/conformance-replay/Generated/ReplayDivergence/BehaviorSourceMap.hs
--- a/test/conformance-replay/Generated/ReplayDivergence/BehaviorSourceMap.hs
+++ b/test/conformance-replay/Generated/ReplayDivergence/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context replay-divergence behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context replay-divergence behavior source map; do not edit.
 module Generated.ReplayDivergence.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-replay/Generated/ReplayDivergence/Note/BehaviorContract.hs b/test/conformance-replay/Generated/ReplayDivergence/Note/BehaviorContract.hs
--- a/test/conformance-replay/Generated/ReplayDivergence/Note/BehaviorContract.hs
+++ b/test/conformance-replay/Generated/ReplayDivergence/Note/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
 module Generated.ReplayDivergence.Note.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-replay/Generated/ReplayDivergence/Note/Codec.hs b/test/conformance-replay/Generated/ReplayDivergence/Note/Codec.hs
--- a/test/conformance-replay/Generated/ReplayDivergence/Note/Codec.hs
+++ b/test/conformance-replay/Generated/ReplayDivergence/Note/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
 module Generated.ReplayDivergence.Note.Codec (
     noteCodec,
     parseNoteEvent,
diff --git a/test/conformance-replay/Generated/ReplayDivergence/Note/Domain.hs b/test/conformance-replay/Generated/ReplayDivergence/Note/Domain.hs
--- a/test/conformance-replay/Generated/ReplayDivergence/Note/Domain.hs
+++ b/test/conformance-replay/Generated/ReplayDivergence/Note/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
 module Generated.ReplayDivergence.Note.Domain where
 
 import Data.Proxy (Proxy (..))
diff --git a/test/conformance-replay/Generated/ReplayDivergence/Note/EventStream.hs b/test/conformance-replay/Generated/ReplayDivergence/Note/EventStream.hs
--- a/test/conformance-replay/Generated/ReplayDivergence/Note/EventStream.hs
+++ b/test/conformance-replay/Generated/ReplayDivergence/Note/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
 module Generated.ReplayDivergence.Note.EventStream
   ( noteCategory
   , noteCommandCategory
diff --git a/test/conformance-replay/Generated/ReplayDivergence/Note/Harness.hs b/test/conformance-replay/Generated/ReplayDivergence/Note/Harness.hs
--- a/test/conformance-replay/Generated/ReplayDivergence/Note/Harness.hs
+++ b/test/conformance-replay/Generated/ReplayDivergence/Note/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
 module Generated.ReplayDivergence.Note.Harness (harnessAssertions) where
 
 import Generated.ReplayDivergence.Note.Domain
diff --git a/test/conformance-replay/Generated/ReplayDivergence/Note/Projection.hs b/test/conformance-replay/Generated/ReplayDivergence/Note/Projection.hs
--- a/test/conformance-replay/Generated/ReplayDivergence/Note/Projection.hs
+++ b/test/conformance-replay/Generated/ReplayDivergence/Note/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
 module Generated.ReplayDivergence.Note.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-replay/Generated/ReplayDivergence/Note/Transducer.hs b/test/conformance-replay/Generated/ReplayDivergence/Note/Transducer.hs
--- a/test/conformance-replay/Generated/ReplayDivergence/Note/Transducer.hs
+++ b/test/conformance-replay/Generated/ReplayDivergence/Note/Transducer.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Note; do not edit.
 module Generated.ReplayDivergence.Note.Transducer
   ( noteTransducer
   , noteFoldFingerprint
diff --git a/test/conformance-replay/Generated/ReplayDivergence/ReplayAudit.hs b/test/conformance-replay/Generated/ReplayDivergence/ReplayAudit.hs
--- a/test/conformance-replay/Generated/ReplayDivergence/ReplayAudit.hs
+++ b/test/conformance-replay/Generated/ReplayDivergence/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context replay-divergence replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context replay-divergence replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-router-full/Generated/IncidentPaging/BehaviorSourceMap.hs b/test/conformance-router-full/Generated/IncidentPaging/BehaviorSourceMap.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/BehaviorSourceMap.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context incident-paging behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context incident-paging behavior source map; do not edit.
 module Generated.IncidentPaging.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-router-full/Generated/IncidentPaging/Page/BehaviorContract.hs b/test/conformance-router-full/Generated/IncidentPaging/Page/BehaviorContract.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/Page/BehaviorContract.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/Page/BehaviorContract.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-router-full/Generated/IncidentPaging/Page/Codec.hs b/test/conformance-router-full/Generated/IncidentPaging/Page/Codec.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/Page/Codec.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/Page/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Codec (
     pageCodec,
     parsePageEvent,
diff --git a/test/conformance-router-full/Generated/IncidentPaging/Page/Domain.hs b/test/conformance-router-full/Generated/IncidentPaging/Page/Domain.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/Page/Domain.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/Page/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Domain where
 
 import Data.Text (Text)
diff --git a/test/conformance-router-full/Generated/IncidentPaging/Page/EventStream.hs b/test/conformance-router-full/Generated/IncidentPaging/Page/EventStream.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/Page/EventStream.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/Page/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.EventStream
   ( pageCategory
   , pageCommandCategory
diff --git a/test/conformance-router-full/Generated/IncidentPaging/Page/Harness.hs b/test/conformance-router-full/Generated/IncidentPaging/Page/Harness.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/Page/Harness.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/Page/Harness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Harness (harnessAssertions) where
 
 import Generated.IncidentPaging.Page.Domain
diff --git a/test/conformance-router-full/Generated/IncidentPaging/Page/Projection.hs b/test/conformance-router-full/Generated/IncidentPaging/Page/Projection.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/Page/Projection.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/Page/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-router-full/Generated/IncidentPaging/Page/Transducer.hs b/test/conformance-router-full/Generated/IncidentPaging/Page/Transducer.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/Page/Transducer.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/Page/Transducer.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Transducer
   ( pageTransducer
   , pageFoldFingerprint
diff --git a/test/conformance-router-full/Generated/IncidentPaging/PagingRouter/Router.hs b/test/conformance-router-full/Generated/IncidentPaging/PagingRouter/Router.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/PagingRouter/Router.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/PagingRouter/Router.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
 module Generated.IncidentPaging.PagingRouter.Router
   ( pagingRouterName
   , pagingRouterWorkerOptions
diff --git a/test/conformance-router-full/Generated/IncidentPaging/PagingRouter/RouterHarness.hs b/test/conformance-router-full/Generated/IncidentPaging/PagingRouter/RouterHarness.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/PagingRouter/RouterHarness.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/PagingRouter/RouterHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
 module Generated.IncidentPaging.PagingRouter.RouterHarness (routerHarnessValues) where
 
 routerHarnessValues :: [(String, String)]
diff --git a/test/conformance-router-full/Generated/IncidentPaging/ReplayAudit.hs b/test/conformance-router-full/Generated/IncidentPaging/ReplayAudit.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/ReplayAudit.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context incident-paging replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context incident-paging replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModel.hs b/test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModel.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModel.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModel.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
 module Generated.IncidentPaging.ServiceOncall.ReadModel
   ( serviceOncallReadModel
   , serviceOncallQualifiedTable
diff --git a/test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs b/test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
 module Generated.IncidentPaging.ServiceOncall.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts) where
 
 import Generated.IncidentPaging.ServiceOncall.ReadModel (serviceOncallReadModel, serviceOncallAsyncProjection)
diff --git a/test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs b/test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs
--- a/test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs
+++ b/test/conformance-router-full/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
 module Generated.IncidentPaging.ServiceOncall.ReadModelTable (serviceOncallQualifiedTable) where
 
 import Data.Text (Text)
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/BehaviorSourceMap.hs b/test/conformance-router-runtime/Generated/IncidentPaging/BehaviorSourceMap.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/BehaviorSourceMap.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context incident-paging behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context incident-paging behavior source map; do not edit.
 module Generated.IncidentPaging.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/Page/BehaviorContract.hs b/test/conformance-router-runtime/Generated/IncidentPaging/Page/BehaviorContract.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/Page/BehaviorContract.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/Page/BehaviorContract.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/Page/Codec.hs b/test/conformance-router-runtime/Generated/IncidentPaging/Page/Codec.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/Page/Codec.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/Page/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Codec (
     pageCodec,
     parsePageEvent,
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/Page/Domain.hs b/test/conformance-router-runtime/Generated/IncidentPaging/Page/Domain.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/Page/Domain.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/Page/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Domain where
 
 import Data.Text (Text)
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/Page/EventStream.hs b/test/conformance-router-runtime/Generated/IncidentPaging/Page/EventStream.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/Page/EventStream.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/Page/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.EventStream
   ( pageCategory
   , pageCommandCategory
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/Page/Harness.hs b/test/conformance-router-runtime/Generated/IncidentPaging/Page/Harness.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/Page/Harness.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/Page/Harness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Harness (harnessAssertions) where
 
 import Generated.IncidentPaging.Page.Domain
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/Page/Projection.hs b/test/conformance-router-runtime/Generated/IncidentPaging/Page/Projection.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/Page/Projection.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/Page/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/Page/Transducer.hs b/test/conformance-router-runtime/Generated/IncidentPaging/Page/Transducer.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/Page/Transducer.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/Page/Transducer.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Transducer
   ( pageTransducer
   , pageFoldFingerprint
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/PagingRouter/Router.hs b/test/conformance-router-runtime/Generated/IncidentPaging/PagingRouter/Router.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/PagingRouter/Router.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/PagingRouter/Router.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
 module Generated.IncidentPaging.PagingRouter.Router
   ( pagingRouterName
   , pagingRouterWorkerOptions
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/PagingRouter/RouterHarness.hs b/test/conformance-router-runtime/Generated/IncidentPaging/PagingRouter/RouterHarness.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/PagingRouter/RouterHarness.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/PagingRouter/RouterHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
 module Generated.IncidentPaging.PagingRouter.RouterHarness (routerHarnessValues) where
 
 routerHarnessValues :: [(String, String)]
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/ReplayAudit.hs b/test/conformance-router-runtime/Generated/IncidentPaging/ReplayAudit.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/ReplayAudit.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context incident-paging replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context incident-paging replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModel.hs b/test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModel.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModel.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModel.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
 module Generated.IncidentPaging.ServiceOncall.ReadModel
   ( serviceOncallReadModel
   , serviceOncallQualifiedTable
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs b/test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
 module Generated.IncidentPaging.ServiceOncall.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts) where
 
 import Generated.IncidentPaging.ServiceOncall.ReadModel (serviceOncallReadModel, serviceOncallAsyncProjection)
diff --git a/test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs b/test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs
--- a/test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs
+++ b/test/conformance-router-runtime/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
 module Generated.IncidentPaging.ServiceOncall.ReadModelTable (serviceOncallQualifiedTable) where
 
 import Data.Text (Text)
diff --git a/test/conformance-router/Generated/IncidentPaging/BehaviorSourceMap.hs b/test/conformance-router/Generated/IncidentPaging/BehaviorSourceMap.hs
--- a/test/conformance-router/Generated/IncidentPaging/BehaviorSourceMap.hs
+++ b/test/conformance-router/Generated/IncidentPaging/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context incident-paging behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context incident-paging behavior source map; do not edit.
 module Generated.IncidentPaging.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-router/Generated/IncidentPaging/Page/BehaviorContract.hs b/test/conformance-router/Generated/IncidentPaging/Page/BehaviorContract.hs
--- a/test/conformance-router/Generated/IncidentPaging/Page/BehaviorContract.hs
+++ b/test/conformance-router/Generated/IncidentPaging/Page/BehaviorContract.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-router/Generated/IncidentPaging/Page/Codec.hs b/test/conformance-router/Generated/IncidentPaging/Page/Codec.hs
--- a/test/conformance-router/Generated/IncidentPaging/Page/Codec.hs
+++ b/test/conformance-router/Generated/IncidentPaging/Page/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Codec (
     pageCodec,
     parsePageEvent,
diff --git a/test/conformance-router/Generated/IncidentPaging/Page/Domain.hs b/test/conformance-router/Generated/IncidentPaging/Page/Domain.hs
--- a/test/conformance-router/Generated/IncidentPaging/Page/Domain.hs
+++ b/test/conformance-router/Generated/IncidentPaging/Page/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Domain where
 
 import Data.Text (Text)
diff --git a/test/conformance-router/Generated/IncidentPaging/Page/EventStream.hs b/test/conformance-router/Generated/IncidentPaging/Page/EventStream.hs
--- a/test/conformance-router/Generated/IncidentPaging/Page/EventStream.hs
+++ b/test/conformance-router/Generated/IncidentPaging/Page/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.EventStream
   ( pageCategory
   , pageCommandCategory
diff --git a/test/conformance-router/Generated/IncidentPaging/Page/Harness.hs b/test/conformance-router/Generated/IncidentPaging/Page/Harness.hs
--- a/test/conformance-router/Generated/IncidentPaging/Page/Harness.hs
+++ b/test/conformance-router/Generated/IncidentPaging/Page/Harness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Harness (harnessAssertions) where
 
 import Generated.IncidentPaging.Page.Domain
diff --git a/test/conformance-router/Generated/IncidentPaging/Page/Projection.hs b/test/conformance-router/Generated/IncidentPaging/Page/Projection.hs
--- a/test/conformance-router/Generated/IncidentPaging/Page/Projection.hs
+++ b/test/conformance-router/Generated/IncidentPaging/Page/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-router/Generated/IncidentPaging/Page/Transducer.hs b/test/conformance-router/Generated/IncidentPaging/Page/Transducer.hs
--- a/test/conformance-router/Generated/IncidentPaging/Page/Transducer.hs
+++ b/test/conformance-router/Generated/IncidentPaging/Page/Transducer.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Page; do not edit.
 module Generated.IncidentPaging.Page.Transducer
   ( pageTransducer
   , pageFoldFingerprint
diff --git a/test/conformance-router/Generated/IncidentPaging/PagingRouter/Router.hs b/test/conformance-router/Generated/IncidentPaging/PagingRouter/Router.hs
--- a/test/conformance-router/Generated/IncidentPaging/PagingRouter/Router.hs
+++ b/test/conformance-router/Generated/IncidentPaging/PagingRouter/Router.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
 module Generated.IncidentPaging.PagingRouter.Router
   ( pagingRouterName
   , pagingRouterWorkerOptions
diff --git a/test/conformance-router/Generated/IncidentPaging/PagingRouter/RouterHarness.hs b/test/conformance-router/Generated/IncidentPaging/PagingRouter/RouterHarness.hs
--- a/test/conformance-router/Generated/IncidentPaging/PagingRouter/RouterHarness.hs
+++ b/test/conformance-router/Generated/IncidentPaging/PagingRouter/RouterHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from router PagingRouter; do not edit.
 module Generated.IncidentPaging.PagingRouter.RouterHarness (routerHarnessValues) where
 
 routerHarnessValues :: [(String, String)]
diff --git a/test/conformance-router/Generated/IncidentPaging/ReplayAudit.hs b/test/conformance-router/Generated/IncidentPaging/ReplayAudit.hs
--- a/test/conformance-router/Generated/IncidentPaging/ReplayAudit.hs
+++ b/test/conformance-router/Generated/IncidentPaging/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context incident-paging replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context incident-paging replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModel.hs b/test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModel.hs
--- a/test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModel.hs
+++ b/test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModel.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
 module Generated.IncidentPaging.ServiceOncall.ReadModel
   ( serviceOncallReadModel
   , serviceOncallQualifiedTable
diff --git a/test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs b/test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs
--- a/test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs
+++ b/test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModelHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
 module Generated.IncidentPaging.ServiceOncall.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts) where
 
 import Generated.IncidentPaging.ServiceOncall.ReadModel (serviceOncallReadModel, serviceOncallAsyncProjection)
diff --git a/test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs b/test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs
--- a/test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs
+++ b/test/conformance-router/Generated/IncidentPaging/ServiceOncall/ReadModelTable.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel service_oncall; do not edit.
 module Generated.IncidentPaging.ServiceOncall.ReadModelTable (serviceOncallQualifiedTable) where
 
 import Data.Text (Text)
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/BehaviorSourceMap.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/BehaviorSourceMap.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/BehaviorSourceMap.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions behavior source map; do not edit.
 module Generated.AggregateScalarExpressions.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Nominals.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Nominals.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Nominals.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Nominals.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveAnyClass #-}
 {-# LANGUAGE TypeFamilies #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions generated nominal declarations; do not edit.
 module Generated.AggregateScalarExpressions.Nominals
   ( AccountMode (..)
   , accountModeText
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Nominals/Internal.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Nominals/Internal.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Nominals/Internal.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Nominals/Internal.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions generated nominal ID internals; do not edit.
 module Generated.AggregateScalarExpressions.Nominals.Internal
   ( RequestId
   , parseRequestId
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ReplayAudit.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ReplayAudit.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ReplayAudit.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/BehaviorContract.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/BehaviorContract.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/BehaviorContract.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
 module Generated.AggregateScalarExpressions.ScalarAccount.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Codec.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Codec.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Codec.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
 module Generated.AggregateScalarExpressions.ScalarAccount.Codec (
     scalarAccountCodec,
     parseScalarAccountEvent,
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Domain.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Domain.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Domain.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Domain.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveAnyClass #-}
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
 module Generated.AggregateScalarExpressions.ScalarAccount.Domain where
 
 import Data.Aeson (FromJSON, ToJSON)
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/EventStream.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/EventStream.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/EventStream.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
 module Generated.AggregateScalarExpressions.ScalarAccount.EventStream
   ( scalarAccountCategory
   , scalarAccountCommandCategory
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Harness.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Harness.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Harness.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
 module Generated.AggregateScalarExpressions.ScalarAccount.Harness (harnessAssertions) where
 
 import Generated.AggregateScalarExpressions.ScalarAccount.Domain
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Projection.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Projection.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Projection.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
 module Generated.AggregateScalarExpressions.ScalarAccount.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Transducer.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Transducer.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Transducer.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Transducer.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE OverloadedLabels #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ScalarAccount; do not edit.
 module Generated.AggregateScalarExpressions.ScalarAccount.Transducer
   ( scalarAccountTransducer
   , scalarAccountFoldFingerprint
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Structural/Shape/Limits.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Structural/Shape/Limits.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Structural/Shape/Limits.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/Structural/Shape/Limits.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from mapped structural Limits; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from mapped structural Limits; do not edit.
 module Generated.AggregateScalarExpressions.Structural.Shape.Limits (LimitsShape (..)) where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/StructuralConformance.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/StructuralConformance.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/StructuralConformance.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/StructuralConformance.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions structural conformance; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions structural conformance; do not edit.
 module Generated.AggregateScalarExpressions.StructuralConformance
   ( structuralConformanceAssertions
   ) where
diff --git a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/StructuralProjections.hs b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/StructuralProjections.hs
--- a/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/StructuralProjections.hs
+++ b/test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/StructuralProjections.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TypeFamilies #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context aggregate-scalar-expressions 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.
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/BehaviorContract.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/BehaviorContract.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/BehaviorContract.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/BehaviorContract.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
 module Proof.WorkspaceProof.Alpha.Generated.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Codec.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Codec.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Codec.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
 module Proof.WorkspaceProof.Alpha.Generated.Codec (
     alphaCodec,
     parseAlphaEvent,
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Domain.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Domain.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Domain.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
 module Proof.WorkspaceProof.Alpha.Generated.Domain where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/EventStream.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/EventStream.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/EventStream.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
 module Proof.WorkspaceProof.Alpha.Generated.EventStream
   ( alphaCategory
   , alphaCommandCategory
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Harness.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Harness.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Harness.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Harness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
 module Proof.WorkspaceProof.Alpha.Generated.Harness (harnessAssertions) where
 
 import Proof.WorkspaceProof.Alpha.Generated.Domain
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Projection.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Projection.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Projection.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
 module Proof.WorkspaceProof.Alpha.Generated.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Transducer.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Transducer.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Transducer.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Alpha/Generated/Transducer.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Alpha; do not edit.
 module Proof.WorkspaceProof.Alpha.Generated.Transducer
   ( alphaTransducer
   , alphaFoldFingerprint
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModel.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModel.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModel.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModel.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel alpha_view; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel alpha_view; do not edit.
 module Proof.WorkspaceProof.AlphaView.Generated.ReadModel
   ( alphaViewReadModel
   , alphaViewQualifiedTable
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModelHarness.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModelHarness.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModelHarness.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModelHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel alpha_view; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel alpha_view; do not edit.
 module Proof.WorkspaceProof.AlphaView.Generated.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts) where
 
 import Proof.WorkspaceProof.AlphaView.Generated.ReadModel (alphaViewReadModel, alphaViewAsyncProjection)
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModelTable.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModelTable.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModelTable.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/AlphaView/Generated/ReadModelTable.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel alpha_view; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel alpha_view; do not edit.
 module Proof.WorkspaceProof.AlphaView.Generated.ReadModelTable (alphaViewQualifiedTable) where
 
 import Data.Text (Text)
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/BehaviorContract.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/BehaviorContract.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/BehaviorContract.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
 module Proof.WorkspaceProof.Assignment.Generated.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Codec.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Codec.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Codec.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
 module Proof.WorkspaceProof.Assignment.Generated.Codec (
     assignmentCodec,
     parseAssignmentEvent,
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Domain.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Domain.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Domain.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
 module Proof.WorkspaceProof.Assignment.Generated.Domain where
 
 import Data.Proxy (Proxy (..))
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/EventStream.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/EventStream.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/EventStream.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
 module Proof.WorkspaceProof.Assignment.Generated.EventStream
   ( assignmentCategory
   , assignmentCommandCategory
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Harness.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Harness.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Harness.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
 module Proof.WorkspaceProof.Assignment.Generated.Harness (harnessAssertions) where
 
 import Proof.WorkspaceProof.Assignment.Generated.Domain
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Projection.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Projection.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Projection.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
 module Proof.WorkspaceProof.Assignment.Generated.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Transducer.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Transducer.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Transducer.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Assignment/Generated/Transducer.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Assignment; do not edit.
 module Proof.WorkspaceProof.Assignment.Generated.Transducer
   ( assignmentTransducer
   , assignmentFoldFingerprint
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/BehaviorContract.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/BehaviorContract.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/BehaviorContract.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/BehaviorContract.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
 module Proof.WorkspaceProof.Beta.Generated.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Codec.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Codec.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Codec.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
 module Proof.WorkspaceProof.Beta.Generated.Codec (
     betaCodec,
     parseBetaEvent,
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Domain.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Domain.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Domain.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
 module Proof.WorkspaceProof.Beta.Generated.Domain where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/EventStream.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/EventStream.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/EventStream.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
 module Proof.WorkspaceProof.Beta.Generated.EventStream
   ( betaCategory
   , betaCommandCategory
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Harness.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Harness.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Harness.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Harness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
 module Proof.WorkspaceProof.Beta.Generated.Harness (harnessAssertions) where
 
 import Proof.WorkspaceProof.Beta.Generated.Domain
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Projection.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Projection.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Projection.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
 module Proof.WorkspaceProof.Beta.Generated.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Transducer.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Transducer.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Transducer.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Beta/Generated/Transducer.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Beta; do not edit.
 module Proof.WorkspaceProof.Beta.Generated.Transducer
   ( betaTransducer
   , betaFoldFingerprint
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModel.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModel.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModel.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModel.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel beta_view; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel beta_view; do not edit.
 module Proof.WorkspaceProof.BetaView.Generated.ReadModel
   ( betaViewReadModel
   , betaViewQualifiedTable
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModelHarness.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModelHarness.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModelHarness.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModelHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel beta_view; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel beta_view; do not edit.
 module Proof.WorkspaceProof.BetaView.Generated.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts) where
 
 import Proof.WorkspaceProof.BetaView.Generated.ReadModel (betaViewReadModel, betaViewAsyncProjection)
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModelTable.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModelTable.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModelTable.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/BetaView/Generated/ReadModelTable.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from readmodel beta_view; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from readmodel beta_view; do not edit.
 module Proof.WorkspaceProof.BetaView.Generated.ReadModelTable (betaViewQualifiedTable) where
 
 import Data.Text (Text)
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/BehaviorSourceMap.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/BehaviorSourceMap.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/BehaviorSourceMap.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context workspace-proof behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context workspace-proof behavior source map; do not edit.
 module Proof.WorkspaceProof.Generated.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Conformance.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Conformance.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Conformance.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Conformance.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context workspace-proof service conformance facade; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context workspace-proof service conformance facade; do not edit.
 module Proof.WorkspaceProof.Generated.Conformance
   ( runServiceConformanceChecks
   , serviceConformanceFacts
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Nominals.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Nominals.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Nominals.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Nominals.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context workspace-proof generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context workspace-proof generated nominal declarations; do not edit.
 module Proof.WorkspaceProof.Generated.Nominals
   ( ProofId
   , parseProofId
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Nominals/Internal.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Nominals/Internal.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Nominals/Internal.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/Nominals/Internal.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context workspace-proof generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context workspace-proof generated nominal ID internals; do not edit.
 module Proof.WorkspaceProof.Generated.Nominals.Internal
   ( ProofId
   , parseProofId
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/ReplayAudit.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/ReplayAudit.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/ReplayAudit.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context workspace-proof replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context workspace-proof replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/StructuralConformance.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/StructuralConformance.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/StructuralConformance.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/Generated/StructuralConformance.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context workspace-proof structural conformance; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context workspace-proof structural conformance; do not edit.
 module Proof.WorkspaceProof.Generated.StructuralConformance
   ( structuralConformanceAssertions
   ) where
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/WorkspaceProofWorkflow/Generated/WorkflowFacts.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/WorkspaceProofWorkflow/Generated/WorkflowFacts.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/WorkspaceProofWorkflow/Generated/WorkflowFacts.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/WorkspaceProofWorkflow/Generated/WorkflowFacts.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from workflow WorkspaceProofWorkflow; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from workflow WorkspaceProofWorkflow; do not edit.
 module Proof.WorkspaceProof.WorkspaceProofWorkflow.Generated.WorkflowFacts (WorkflowFacts (..), workflowFacts, workflowFactValues) where
 
 -- | The workflow's deterministic decisions, pinned as typed pure facts.
diff --git a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/WorkspaceProofWorkflow/Generated/WorkflowRuntime.hs b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/WorkspaceProofWorkflow/Generated/WorkflowRuntime.hs
--- a/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/WorkspaceProofWorkflow/Generated/WorkflowRuntime.hs
+++ b/test/conformance-service-package/runtime/src/Proof/WorkspaceProof/WorkspaceProofWorkflow/Generated/WorkflowRuntime.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from workflow WorkspaceProofWorkflow; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from workflow WorkspaceProofWorkflow; do not edit.
 module Proof.WorkspaceProof.WorkspaceProofWorkflow.Generated.WorkflowRuntime
   ( workflowName
   , AwaitBinding
diff --git a/test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/keiro-dsl-conformance-ledger.txt b/test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/keiro-dsl-conformance-ledger.txt
--- a/test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/keiro-dsl-conformance-ledger.txt
+++ b/test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/keiro-dsl-conformance-ledger.txt
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from conformance package workspace workspace-proof; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from conformance package workspace workspace-proof; do not edit.
 keiro-dsl conformance ledger v1
 service-key workspace workspace-proof
 runtime-package keiro-dsl-conformance-service-runtime
diff --git a/test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/keiro-workspace-proof-conformance.cabal b/test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/keiro-workspace-proof-conformance.cabal
--- a/test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/keiro-workspace-proof-conformance.cabal
+++ b/test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/keiro-workspace-proof-conformance.cabal
@@ -1,5 +1,5 @@
 cabal-version: 3.0
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from conformance package workspace workspace-proof; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from conformance package workspace workspace-proof; do not edit.
 name: keiro-workspace-proof-conformance
 version: 0.0.0.0
 synopsis: Generated conformance runner for Keiro service workspace-proof
diff --git a/test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/src/Main.hs b/test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/src/Main.hs
--- a/test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/src/Main.hs
+++ b/test/conformance-service-package/runtime/src/keiro-dsl-conformance.workspace.workspace-proof/src/Main.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from conformance package workspace workspace-proof; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from conformance package workspace workspace-proof; do not edit.
 module Main (main) where
 
 import Control.Monad (when)
diff --git a/test/conformance-skeletons/SkelAggregate/keiro-dsl-manifest.my-service.txt b/test/conformance-skeletons/SkelAggregate/keiro-dsl-manifest.my-service.txt
deleted file mode 100644
--- a/test/conformance-skeletons/SkelAggregate/keiro-dsl-manifest.my-service.txt
+++ /dev/null
@@ -1,21 +0,0 @@
--- keiro-dsl build manifest for /dev/stdin
--- Paste the two blocks below into the consuming Cabal stanza.
--- The generated layer is overwritten on every scaffold; hole modules are
--- create-if-absent (filled by hand).
-
-other-modules:
-    SkelAggregate.Generated.MyService.Nominals
-    SkelAggregate.Generated.MyService.ReplayAudit
-    SkelAggregate.Generated.MyService.Thing.Codec
-    SkelAggregate.Generated.MyService.Thing.Domain
-    SkelAggregate.Generated.MyService.Thing.EventStream
-    SkelAggregate.Generated.MyService.Thing.Harness
-    SkelAggregate.Generated.MyService.Thing.Projection
-    SkelAggregate.MyService.Thing.Holes
-
-build-depends:
-    , aeson
-    , base
-    , keiki
-    , keiro
-    , text
diff --git a/test/conformance-skeletons/SkelAggregate/keiro-dsl-scaffold-record.my-service.txt b/test/conformance-skeletons/SkelAggregate/keiro-dsl-scaffold-record.my-service.txt
deleted file mode 100644
--- a/test/conformance-skeletons/SkelAggregate/keiro-dsl-scaffold-record.my-service.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-keiro-dsl scaffold record v1
-spec: /dev/stdin
-module-root: SkelAggregate
-layout: prefixed
-source-language {"declaredLanguageVersion":1,"effectiveLanguageVersion":1,"sourceForm":"declared"}
-generated SkelAggregate/Generated/MyService/Nominals.hs
-generated SkelAggregate/Generated/MyService/ReplayAudit.hs
-generated SkelAggregate/Generated/MyService/Thing/Domain.hs
-generated SkelAggregate/Generated/MyService/Thing/Codec.hs
-generated SkelAggregate/Generated/MyService/Thing/EventStream.hs
-generated SkelAggregate/Generated/MyService/Thing/Projection.hs
-hole SkelAggregate/MyService/Thing/Holes.hs
-generated SkelAggregate/Generated/MyService/Thing/Harness.hs
-behavior {"aggregate":"Thing","command":"DoThing","evidence":"legacy-runtime-witness","key":"behavior-v1-0cb7aebe444315b5","kind":"live-transition","outputs":[{"obligation":"event-output-v1/Thing/live/Pending/DoThing/unguarded/state:=Done/ThingCompleted/Done/1/ThingCompleted","ownership":"hand-owned"}],"source":"Pending"}
-behavior {"aggregate":"Thing","command":"DoThing","evidence":"legacy-runtime-witness","key":"behavior-v1-9879aa7cdadb6004","kind":"required-rejection","outputs":[],"source":"Done"}
diff --git a/test/conformance-snapshot/Generated/HospitalCapacity/BehaviorSourceMap.hs b/test/conformance-snapshot/Generated/HospitalCapacity/BehaviorSourceMap.hs
--- a/test/conformance-snapshot/Generated/HospitalCapacity/BehaviorSourceMap.hs
+++ b/test/conformance-snapshot/Generated/HospitalCapacity/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
 module Generated.HospitalCapacity.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-snapshot/Generated/HospitalCapacity/Nominals.hs b/test/conformance-snapshot/Generated/HospitalCapacity/Nominals.hs
--- a/test/conformance-snapshot/Generated/HospitalCapacity/Nominals.hs
+++ b/test/conformance-snapshot/Generated/HospitalCapacity/Nominals.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveAnyClass #-}
 {-# LANGUAGE TypeFamilies #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
 module Generated.HospitalCapacity.Nominals
   ( BedType (..)
   , bedTypeText
diff --git a/test/conformance-snapshot/Generated/HospitalCapacity/Nominals/Internal.hs b/test/conformance-snapshot/Generated/HospitalCapacity/Nominals/Internal.hs
--- a/test/conformance-snapshot/Generated/HospitalCapacity/Nominals/Internal.hs
+++ b/test/conformance-snapshot/Generated/HospitalCapacity/Nominals/Internal.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
 module Generated.HospitalCapacity.Nominals.Internal
   ( CommandId
   , parseCommandId
diff --git a/test/conformance-snapshot/Generated/HospitalCapacity/ReplayAudit.hs b/test/conformance-snapshot/Generated/HospitalCapacity/ReplayAudit.hs
--- a/test/conformance-snapshot/Generated/HospitalCapacity/ReplayAudit.hs
+++ b/test/conformance-snapshot/Generated/HospitalCapacity/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/BehaviorContract.hs b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/BehaviorContract.hs
--- a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/BehaviorContract.hs
+++ b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Codec.hs b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Codec.hs
--- a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Codec.hs
+++ b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Codec (
     reservationCodec,
     parseReservationEvent,
diff --git a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Domain.hs b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Domain.hs
--- a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Domain.hs
+++ b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Domain.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveAnyClass #-}
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Domain where
 
 import Data.Aeson (FromJSON, ToJSON)
diff --git a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/EventStream.hs b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/EventStream.hs
--- a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/EventStream.hs
+++ b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.EventStream
   ( reservationCategory
   , reservationCommandCategory
diff --git a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Harness.hs b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Harness.hs
--- a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Harness.hs
+++ b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Harness (harnessAssertions) where
 
 import Generated.HospitalCapacity.Reservation.Domain
diff --git a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Projection.hs b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Projection.hs
--- a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Projection.hs
+++ b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Projection
   ( transferDecisionsProjection
   , transferDecisionsStatusFor
diff --git a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Transducer.hs b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Transducer.hs
--- a/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Transducer.hs
+++ b/test/conformance-snapshot/Generated/HospitalCapacity/Reservation/Transducer.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE OverloadedLabels #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Transducer
   ( reservationTransducer
   , reservationFoldFingerprint
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/BehaviorSourceMap.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/BehaviorSourceMap.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/BehaviorSourceMap.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context structural-nominal-leaves behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context structural-nominal-leaves behavior source map; do not edit.
 module Generated.StructuralNominalLeaves.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominal/Shape/Channel.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominal/Shape/Channel.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominal/Shape/Channel.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominal/Shape/Channel.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from bound nominal enum representation Channel; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from bound nominal enum representation Channel; do not edit.
 module Generated.StructuralNominalLeaves.Nominal.Shape.Channel (ChannelRepresentation (..), channelRepresentationText) where
 
 import Data.Text (Text)
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/NominalProjections.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/NominalProjections.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/NominalProjections.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/NominalProjections.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TypeFamilies #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context structural-nominal-leaves nominal scalar projection facade; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context structural-nominal-leaves nominal scalar projection facade; do not edit.
 module Generated.StructuralNominalLeaves.NominalProjections where
 
 import Data.KindID qualified as KindID
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominals.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominals.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominals.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominals.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveAnyClass #-}
 {-# LANGUAGE TypeFamilies #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context structural-nominal-leaves generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context structural-nominal-leaves generated nominal declarations; do not edit.
 module Generated.StructuralNominalLeaves.Nominals
   ( TemplateId
   , parseTemplateId
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominals/Internal.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominals/Internal.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominals/Internal.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Nominals/Internal.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context structural-nominal-leaves generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context structural-nominal-leaves generated nominal ID internals; do not edit.
 module Generated.StructuralNominalLeaves.Nominals.Internal
   ( TemplateId
   , parseTemplateId
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/ProjectionCatalog.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/ProjectionCatalog.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/ProjectionCatalog.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/ProjectionCatalog.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from projection-catalog structural-nominal-leaves; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from projection-catalog structural-nominal-leaves; do not edit.
 {-# LANGUAGE OverloadedStrings #-}
 module Generated.StructuralNominalLeaves.ProjectionCatalog
   ( projectionCatalog
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/ReplayAudit.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/ReplayAudit.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/ReplayAudit.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context structural-nominal-leaves replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context structural-nominal-leaves replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/NominalLeaves.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/NominalLeaves.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/NominalLeaves.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/NominalLeaves.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context structural-nominal-leaves structural nominal leaves; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context structural-nominal-leaves structural nominal leaves; do not edit.
 module Generated.StructuralNominalLeaves.Structural.NominalLeaves where
 
 import Data.Aeson (Value (..), parseJSON, toJSON, withText)
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateBook.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateBook.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateBook.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateBook.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural TemplateBook; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural TemplateBook; do not edit.
 module Generated.StructuralNominalLeaves.Structural.Shape.TemplateBook (TemplateBookShape (..)) where
 
 import Data.Map.Strict (Map)
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateLookupInput.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateLookupInput.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateLookupInput.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateLookupInput.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural TemplateLookupInput; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural TemplateLookupInput; do not edit.
 module Generated.StructuralNominalLeaves.Structural.Shape.TemplateLookupInput (TemplateLookupInputShape (..)) where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateLookupRow.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateLookupRow.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateLookupRow.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateLookupRow.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural TemplateLookupRow; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural TemplateLookupRow; do not edit.
 module Generated.StructuralNominalLeaves.Structural.Shape.TemplateLookupRow (TemplateLookupRowShape (..)) where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateRef.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateRef.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateRef.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateRef.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural TemplateRef; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural TemplateRef; do not edit.
 module Generated.StructuralNominalLeaves.Structural.Shape.TemplateRef (TemplateRefShape (..)) where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateState.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateState.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateState.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/Structural/Shape/TemplateState.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural TemplateState; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural TemplateState; do not edit.
 module Generated.StructuralNominalLeaves.Structural.Shape.TemplateState (TemplateStateShape (..)) where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/StructuralConformance.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/StructuralConformance.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/StructuralConformance.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/StructuralConformance.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context structural-nominal-leaves structural conformance; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context structural-nominal-leaves structural conformance; do not edit.
 module Generated.StructuralNominalLeaves.StructuralConformance
   ( structuralConformanceAssertions
   ) where
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/StructuralProjections.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/StructuralProjections.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/StructuralProjections.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/StructuralProjections.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TypeFamilies #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context structural-nominal-leaves mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context structural-nominal-leaves 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.
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/BehaviorContract.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/BehaviorContract.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/BehaviorContract.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
 module Generated.StructuralNominalLeaves.TemplateCatalog.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Codec.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Codec.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Codec.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
 module Generated.StructuralNominalLeaves.TemplateCatalog.Codec (
     templateCatalogCodec,
     parseTemplateCatalogEvent,
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Domain.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Domain.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Domain.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Domain.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveAnyClass #-}
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
 module Generated.StructuralNominalLeaves.TemplateCatalog.Domain where
 
 import Data.Aeson (FromJSON, ToJSON)
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/EventStream.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/EventStream.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/EventStream.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
 module Generated.StructuralNominalLeaves.TemplateCatalog.EventStream
   ( templateCatalogCategory
   , templateCatalogCommandCategory
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Harness.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Harness.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Harness.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
 module Generated.StructuralNominalLeaves.TemplateCatalog.Harness (harnessAssertions) where
 
 import Generated.StructuralNominalLeaves.TemplateCatalog.Domain
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Projection.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Projection.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Projection.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
 module Generated.StructuralNominalLeaves.TemplateCatalog.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Transducer.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Transducer.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Transducer.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateCatalog/Transducer.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE OverloadedLabels #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate TemplateCatalog; do not edit.
 module Generated.StructuralNominalLeaves.TemplateCatalog.Transducer
   ( templateCatalogTransducer
   , templateCatalogFoldFingerprint
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateDeliveryRouter/Router.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateDeliveryRouter/Router.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateDeliveryRouter/Router.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateDeliveryRouter/Router.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from router TemplateDeliveryRouter; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from router TemplateDeliveryRouter; do not edit.
 module Generated.StructuralNominalLeaves.TemplateDeliveryRouter.Router
   ( templateDeliveryRouterName
   , templateDeliveryRouterWorkerOptions
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateDeliveryRouter/RouterHarness.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateDeliveryRouter/RouterHarness.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateDeliveryRouter/RouterHarness.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateDeliveryRouter/RouterHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from router TemplateDeliveryRouter; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from router TemplateDeliveryRouter; do not edit.
 module Generated.StructuralNominalLeaves.TemplateDeliveryRouter.RouterHarness (routerHarnessValues) where
 
 routerHarnessValues :: [(String, String)]
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/QueryContract.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/QueryContract.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/QueryContract.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/QueryContract.hs
@@ -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.StructuralNominalLeaves.TemplateLookup.QueryContract
   ( TemplateLookupQueryInput
   , TemplateLookupQueryResult
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModel.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModel.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModel.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModel.hs
@@ -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.StructuralNominalLeaves.TemplateLookup.ReadModel
   ( templateLookupReadModel
   , templateLookupQualifiedTable
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModelHarness.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModelHarness.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModelHarness.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModelHarness.hs
@@ -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.StructuralNominalLeaves.TemplateLookup.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where
 
 import Generated.StructuralNominalLeaves.TemplateLookup.ReadModel (templateLookupReadModel)
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModelTable.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModelTable.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModelTable.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateLookup/ReadModelTable.hs
@@ -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.StructuralNominalLeaves.TemplateLookup.ReadModelTable (templateLookupQualifiedTable) where
 
 import Data.Text (Text)
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/Queue.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/Queue.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/Queue.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/Queue.hs
@@ -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.StructuralNominalLeaves.TemplateWork.Queue
   ( TemplateWork (..)
   , encodeTemplateWork
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/QueueCodec.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/QueueCodec.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/QueueCodec.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/QueueCodec.hs
@@ -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
diff --git a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/QueuePolicy.hs b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/QueuePolicy.hs
--- a/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/QueuePolicy.hs
+++ b/test/conformance-structural-nominals/Generated/StructuralNominalLeaves/TemplateWork/QueuePolicy.hs
@@ -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.StructuralNominalLeaves.TemplateWork.QueuePolicy
   ( TemplateWorkOutcome (..)
   , retryPolicy, jobOutcomeFor
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/BehaviorSourceMap.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/BehaviorSourceMap.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/BehaviorSourceMap.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context structural-text-sets behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context structural-text-sets behavior source map; do not edit.
 module Generated.StructuralTextSets.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/Queue.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/Queue.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/Queue.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/Queue.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue label_jobs; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue label_jobs; do not edit.
 module Generated.StructuralTextSets.LabelJobs.Queue
   ( LabelJob (..)
   , encodeLabelJob
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueueCodec.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueueCodec.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueueCodec.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueueCodec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue label_jobs; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue label_jobs; do not edit.
 -- | Versioned job payload envelope: @{\"v\",\"t\",\"data\"}@.
 --
 -- Deploy workers before producers when raising its schema version. Do not
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueuePolicy.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueuePolicy.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueuePolicy.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelJobs/QueuePolicy.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from workqueue label_jobs; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from workqueue label_jobs; do not edit.
 module Generated.StructuralTextSets.LabelJobs.QueuePolicy
   ( LabelJobsOutcome (..)
   , retryPolicy, jobOutcomeFor
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/QueryContract.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/QueryContract.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/QueryContract.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/QueryContract.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel label_lookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel label_lookup; do not edit.
 module Generated.StructuralTextSets.LabelLookup.QueryContract
   ( LabelLookupQueryInput
   , LabelLookupQueryResult
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModel.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModel.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModel.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModel.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel label_lookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel label_lookup; do not edit.
 module Generated.StructuralTextSets.LabelLookup.ReadModel
   ( labelLookupReadModel
   , labelLookupQualifiedTable
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelHarness.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelHarness.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelHarness.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelHarness.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel label_lookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel label_lookup; do not edit.
 module Generated.StructuralTextSets.LabelLookup.ReadModelHarness (readModelFacts, readModelFactResults, runReadModelFacts, catalogFactsAgainst) where
 
 import Generated.StructuralTextSets.LabelLookup.ReadModel (labelLookupReadModel)
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelTable.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelTable.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelTable.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelLookup/ReadModelTable.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from readmodel label_lookup; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from readmodel label_lookup; do not edit.
 module Generated.StructuralTextSets.LabelLookup.ReadModelTable (labelLookupQualifiedTable) where
 
 import Data.Text (Text)
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/BehaviorContract.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/BehaviorContract.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/BehaviorContract.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
 module Generated.StructuralTextSets.LabelStore.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Codec.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Codec.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Codec.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
 module Generated.StructuralTextSets.LabelStore.Codec (
     labelStoreCodec,
     parseLabelStoreEvent,
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Domain.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Domain.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Domain.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Domain.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveAnyClass #-}
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
 module Generated.StructuralTextSets.LabelStore.Domain where
 
 import Data.Aeson (FromJSON, ToJSON)
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/EventStream.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/EventStream.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/EventStream.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
 module Generated.StructuralTextSets.LabelStore.EventStream
   ( labelStoreCategory
   , labelStoreCommandCategory
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Harness.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Harness.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Harness.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
 module Generated.StructuralTextSets.LabelStore.Harness (harnessAssertions) where
 
 import Generated.StructuralTextSets.LabelStore.Domain
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Projection.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Projection.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Projection.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
 module Generated.StructuralTextSets.LabelStore.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Transducer.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Transducer.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Transducer.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/LabelStore/Transducer.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate LabelStore; do not edit.
 module Generated.StructuralTextSets.LabelStore.Transducer
   ( labelStoreTransducer
   , labelStoreFoldFingerprint
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/ProjectionCatalog.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/ProjectionCatalog.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/ProjectionCatalog.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/ProjectionCatalog.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from projection-catalog structural-text-sets; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from projection-catalog structural-text-sets; do not edit.
 {-# LANGUAGE OverloadedStrings #-}
 module Generated.StructuralTextSets.ProjectionCatalog
   ( projectionCatalog
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/ReplayAudit.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/ReplayAudit.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/ReplayAudit.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context structural-text-sets replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context structural-text-sets replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/LabelEnvelope.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/LabelEnvelope.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/LabelEnvelope.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/LabelEnvelope.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural LabelEnvelope; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural LabelEnvelope; do not edit.
 module Generated.StructuralTextSets.Structural.Shape.LabelEnvelope (LabelEnvelopeShape (..)) where
 
 import Data.Map.Strict (Map)
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/MaybeTextLabels.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/MaybeTextLabels.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/MaybeTextLabels.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/MaybeTextLabels.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural MaybeTextLabels; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural MaybeTextLabels; do not edit.
 module Generated.StructuralTextSets.Structural.Shape.MaybeTextLabels (MaybeTextLabelsShape) where
 
 import Data.Set (Set)
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/TextLabels.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/TextLabels.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/TextLabels.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/Structural/Shape/TextLabels.hs
@@ -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.StructuralTextSets.Structural.Shape.TextLabels (TextLabelsShape) where
 
 import Data.Set (Set)
diff --git a/test/conformance-structural-text-sets/Generated/StructuralTextSets/StructuralConformance.hs b/test/conformance-structural-text-sets/Generated/StructuralTextSets/StructuralConformance.hs
--- a/test/conformance-structural-text-sets/Generated/StructuralTextSets/StructuralConformance.hs
+++ b/test/conformance-structural-text-sets/Generated/StructuralTextSets/StructuralConformance.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context structural-text-sets structural conformance; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context structural-text-sets structural conformance; do not edit.
 module Generated.StructuralTextSets.StructuralConformance
   ( structuralConformanceAssertions
   ) where
diff --git a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/BehaviorContract.hs b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/BehaviorContract.hs
--- a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/BehaviorContract.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
 module Generated.StructuralConformance.ArtifactCatalog.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Codec.hs b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Codec.hs
--- a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Codec.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
 module Generated.StructuralConformance.ArtifactCatalog.Codec (
     artifactCatalogCodec,
     parseArtifactCatalogEvent,
diff --git a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Domain.hs b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Domain.hs
--- a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Domain.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
 module Generated.StructuralConformance.ArtifactCatalog.Domain where
 
 import Data.Proxy (Proxy (..))
diff --git a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/EventStream.hs b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/EventStream.hs
--- a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/EventStream.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
 module Generated.StructuralConformance.ArtifactCatalog.EventStream
   ( artifactCatalogCategory
   , artifactCatalogCommandCategory
diff --git a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Harness.hs b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Harness.hs
--- a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Harness.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
 module Generated.StructuralConformance.ArtifactCatalog.Harness (harnessAssertions) where
 
 import Generated.StructuralConformance.ArtifactCatalog.Domain
diff --git a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Projection.hs b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Projection.hs
--- a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Projection.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
 module Generated.StructuralConformance.ArtifactCatalog.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Transducer.hs b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Transducer.hs
--- a/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Transducer.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/ArtifactCatalog/Transducer.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate ArtifactCatalog; do not edit.
 module Generated.StructuralConformance.ArtifactCatalog.Transducer
   ( artifactCatalogTransducer
   , artifactCatalogFoldFingerprint
diff --git a/test/conformance-structural/Generated/StructuralConformance/BehaviorSourceMap.hs b/test/conformance-structural/Generated/StructuralConformance/BehaviorSourceMap.hs
--- a/test/conformance-structural/Generated/StructuralConformance/BehaviorSourceMap.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context structural-conformance behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context structural-conformance behavior source map; do not edit.
 module Generated.StructuralConformance.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-structural/Generated/StructuralConformance/ReplayAudit.hs b/test/conformance-structural/Generated/StructuralConformance/ReplayAudit.hs
--- a/test/conformance-structural/Generated/StructuralConformance/ReplayAudit.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context structural-conformance replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context structural-conformance replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactInfo.hs b/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactInfo.hs
--- a/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactInfo.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactInfo.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from mapped structural ArtifactInfo; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from mapped structural ArtifactInfo; do not edit.
 module Generated.StructuralConformance.Structural.Shape.ArtifactInfo (ArtifactInfoShape (..)) where
 
 import Data.Text (Text)
diff --git a/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactKind.hs b/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactKind.hs
--- a/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactKind.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactKind.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from mapped structural ArtifactKind; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from mapped structural ArtifactKind; do not edit.
 module Generated.StructuralConformance.Structural.Shape.ArtifactKind (ArtifactKindShape (..)) where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactLocation.hs b/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactLocation.hs
--- a/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactLocation.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactLocation.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from mapped structural ArtifactLocation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from mapped structural ArtifactLocation; do not edit.
 module Generated.StructuralConformance.Structural.Shape.ArtifactLocation (ArtifactLocationShape (..)) where
 
 import Data.Text (Text)
diff --git a/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactMetadata.hs b/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactMetadata.hs
--- a/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactMetadata.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/Structural/Shape/ArtifactMetadata.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from mapped structural ArtifactMetadata; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from mapped structural ArtifactMetadata; do not edit.
 module Generated.StructuralConformance.Structural.Shape.ArtifactMetadata (ArtifactMetadataShape (..)) where
 
 import Data.Text (Text)
diff --git a/test/conformance-structural/Generated/StructuralConformance/StructuralConformance.hs b/test/conformance-structural/Generated/StructuralConformance/StructuralConformance.hs
--- a/test/conformance-structural/Generated/StructuralConformance/StructuralConformance.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/StructuralConformance.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context structural-conformance structural conformance; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context structural-conformance structural conformance; do not edit.
 module Generated.StructuralConformance.StructuralConformance
   ( structuralConformanceAssertions
   ) where
@@ -9,7 +9,7 @@
 import Data.Maybe (isJust, isNothing)
 import Data.Proxy (Proxy (..))
 import Data.Text qualified as T
-import Keiki.Core (fieldWitnessAgrees)
+import Keiki.Core (fieldWitnessAgrees, checkFieldProjectionOwner, checkFieldProjectionKey)
 import Keiki.Shape (CanonicalTypeName (..))
 import Keiro.Codec.Structural (FixtureCases (..), bindingDomainRoundTrip, bindingShapeRoundTrip, bindingToShape)
 import Generated.StructuralConformance.StructuralProjections qualified as StructuralProjections
@@ -58,7 +58,7 @@
 artifactKindBindingAssertions =
   ("fixture labels: conformance.structural.ArtifactKind.v1", validFixtureLabels cases) :
   ("canonical identity: conformance.structural.ArtifactKind.v1", canonicalTypeName (Proxy @ArtifactKind) == "conformance.structural.ArtifactKind.v1") :
-  concat
+  [("exhaustive enum shape round-trip: conformance.structural.ArtifactKind.v1", all (bindingShapeRoundTrip Bindings.artifactKindBinding) [ShapeArtifactKind.Guide, ShapeArtifactKind.Reference])] <> concat
     [ [ ("binding domain round-trip: conformance.structural.ArtifactKind.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.artifactKindBinding value)
       , ("binding shape round-trip: conformance.structural.ArtifactKind.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.artifactKindBinding (bindingToShape Bindings.artifactKindBinding value))
       ]
@@ -126,4 +126,6 @@
 structuralProjectionAssertions =
   [ ("projection witness agreement: conformance.structural.ArtifactInfo.v1/artifact_key", all (\(_, owner) -> fieldWitnessAgrees StructuralProjections.artifactInfoArtifactKeyWitness (\referenceOwner -> StructuralProjections.artifactInfoArtifactKeyGet referenceOwner) owner) (NonEmpty.toList (fixtureCases Bindings.artifactInfoCases)))
   , ("projection witness agreement: conformance.structural.ArtifactInfo.v1/display_name", all (\(_, owner) -> fieldWitnessAgrees StructuralProjections.artifactInfoDisplayNameWitness (\referenceOwner -> StructuralProjections.artifactInfoDisplayNameGet referenceOwner) owner) (NonEmpty.toList (fixtureCases Bindings.artifactInfoCases)))
+  , ("projection owner law: conformance.structural.ArtifactKind.v1", all (\(_, owner) -> either (const False) (const True) (checkFieldProjectionOwner StructuralProjections.artifactKindWitness owner)) (NonEmpty.toList (fixtureCases Bindings.artifactKindCases))),
+  ("projection key law: conformance.structural.ArtifactKind.v1", all (either (const False) (const True) . checkFieldProjectionKey StructuralProjections.artifactKindWitness) ["guide", "reference"])
   ]
diff --git a/test/conformance-structural/Generated/StructuralConformance/StructuralProjections.hs b/test/conformance-structural/Generated/StructuralConformance/StructuralProjections.hs
--- a/test/conformance-structural/Generated/StructuralConformance/StructuralProjections.hs
+++ b/test/conformance-structural/Generated/StructuralConformance/StructuralProjections.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TypeFamilies #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context structural-conformance mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context structural-conformance 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.
@@ -8,14 +8,19 @@
   , artifactInfoArtifactKeyGet
   , artifactInfoDisplayNameWitness
   , artifactInfoDisplayNameGet
+  , artifactKindWitness
+  , artifactKindGet
   ) where
 
 import Data.Text (Text)
-import Keiro.Codec.Structural (bindingToShape)
-import Keiki.Core (FieldProjection (..), FieldWitness, fieldWitness)
+import Data.List.NonEmpty (NonEmpty (..))
+import Keiro.Codec.Structural (bindingToShape, bindingFromShape)
+import Keiki.Core (FieldProjection (..), FieldWitness, ExactFieldProjection (..), exactFieldWitness, fieldWitness)
+import Keiki.ProjectionDomain (finiteProjectionDomain)
 import Generated.StructuralConformance.Structural.Shape.ArtifactInfo (ArtifactInfoShape(artifactKey, displayName))
 import Conformance.Structural.Bindings qualified as Bindings
-import Conformance.Structural.Domain (ArtifactInfo)
+import Conformance.Structural.Domain (ArtifactInfo, ArtifactKind)
+import Generated.StructuralConformance.Structural.Shape.ArtifactKind qualified as ShapeArtifactKind
 
 data ArtifactInfoArtifactKeyProjection
 
@@ -46,3 +51,25 @@
 
 artifactInfoDisplayNameWitness :: FieldWitness ArtifactInfoDisplayNameProjection
 artifactInfoDisplayNameWitness = fieldWitness @ArtifactInfoDisplayNameProjection
+
+data ArtifactKindProjection
+
+artifactKindGet :: ArtifactKind -> Text
+artifactKindGet owner = case bindingToShape Bindings.artifactKindBinding owner of ShapeArtifactKind.Guide -> "guide"; ShapeArtifactKind.Reference -> "reference"
+
+instance FieldProjection ArtifactKindProjection where
+  type FieldName ArtifactKindProjection = ""
+  type FieldOwner ArtifactKindProjection = ArtifactKind
+  type FieldResult ArtifactKindProjection = Text
+  fieldShapeId _ = "conformance.structural.ArtifactKind.v1"
+  projectFieldValue _ = artifactKindGet
+
+instance ExactFieldProjection ArtifactKindProjection where
+  fieldProjectionDomain _ = finiteProjectionDomain ("guide" :| ["reference"])
+  reconstructFieldOwner _ value = case value of
+    "guide" -> Just (bindingFromShape Bindings.artifactKindBinding ShapeArtifactKind.Guide)
+    "reference" -> Just (bindingFromShape Bindings.artifactKindBinding ShapeArtifactKind.Reference)
+    _ -> Nothing
+
+artifactKindWitness :: FieldWitness ArtifactKindProjection
+artifactKindWitness = exactFieldWitness @ArtifactKindProjection
diff --git a/test/conformance-v2/Generated/HospitalCapacity/BehaviorSourceMap.hs b/test/conformance-v2/Generated/HospitalCapacity/BehaviorSourceMap.hs
--- a/test/conformance-v2/Generated/HospitalCapacity/BehaviorSourceMap.hs
+++ b/test/conformance-v2/Generated/HospitalCapacity/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
 module Generated.HospitalCapacity.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-v2/Generated/HospitalCapacity/Nominals.hs b/test/conformance-v2/Generated/HospitalCapacity/Nominals.hs
--- a/test/conformance-v2/Generated/HospitalCapacity/Nominals.hs
+++ b/test/conformance-v2/Generated/HospitalCapacity/Nominals.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveAnyClass #-}
 {-# LANGUAGE TypeFamilies #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
 module Generated.HospitalCapacity.Nominals
   ( BedType (..)
   , bedTypeText
diff --git a/test/conformance-v2/Generated/HospitalCapacity/Nominals/Internal.hs b/test/conformance-v2/Generated/HospitalCapacity/Nominals/Internal.hs
--- a/test/conformance-v2/Generated/HospitalCapacity/Nominals/Internal.hs
+++ b/test/conformance-v2/Generated/HospitalCapacity/Nominals/Internal.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
 module Generated.HospitalCapacity.Nominals.Internal
   ( CommandId
   , parseCommandId
diff --git a/test/conformance-v2/Generated/HospitalCapacity/ReplayAudit.hs b/test/conformance-v2/Generated/HospitalCapacity/ReplayAudit.hs
--- a/test/conformance-v2/Generated/HospitalCapacity/ReplayAudit.hs
+++ b/test/conformance-v2/Generated/HospitalCapacity/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-v2/Generated/HospitalCapacity/Reservation/BehaviorContract.hs b/test/conformance-v2/Generated/HospitalCapacity/Reservation/BehaviorContract.hs
--- a/test/conformance-v2/Generated/HospitalCapacity/Reservation/BehaviorContract.hs
+++ b/test/conformance-v2/Generated/HospitalCapacity/Reservation/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-v2/Generated/HospitalCapacity/Reservation/Codec.hs b/test/conformance-v2/Generated/HospitalCapacity/Reservation/Codec.hs
--- a/test/conformance-v2/Generated/HospitalCapacity/Reservation/Codec.hs
+++ b/test/conformance-v2/Generated/HospitalCapacity/Reservation/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Codec (
     reservationCodec,
     parseReservationEvent,
diff --git a/test/conformance-v2/Generated/HospitalCapacity/Reservation/Domain.hs b/test/conformance-v2/Generated/HospitalCapacity/Reservation/Domain.hs
--- a/test/conformance-v2/Generated/HospitalCapacity/Reservation/Domain.hs
+++ b/test/conformance-v2/Generated/HospitalCapacity/Reservation/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Domain where
 
 import Data.Proxy (Proxy (..))
diff --git a/test/conformance-v2/Generated/HospitalCapacity/Reservation/EventStream.hs b/test/conformance-v2/Generated/HospitalCapacity/Reservation/EventStream.hs
--- a/test/conformance-v2/Generated/HospitalCapacity/Reservation/EventStream.hs
+++ b/test/conformance-v2/Generated/HospitalCapacity/Reservation/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.EventStream
   ( reservationCategory
   , reservationCommandCategory
diff --git a/test/conformance-v2/Generated/HospitalCapacity/Reservation/Harness.hs b/test/conformance-v2/Generated/HospitalCapacity/Reservation/Harness.hs
--- a/test/conformance-v2/Generated/HospitalCapacity/Reservation/Harness.hs
+++ b/test/conformance-v2/Generated/HospitalCapacity/Reservation/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Harness (harnessAssertions) where
 
 import Generated.HospitalCapacity.Reservation.Domain
diff --git a/test/conformance-v2/Generated/HospitalCapacity/Reservation/Projection.hs b/test/conformance-v2/Generated/HospitalCapacity/Reservation/Projection.hs
--- a/test/conformance-v2/Generated/HospitalCapacity/Reservation/Projection.hs
+++ b/test/conformance-v2/Generated/HospitalCapacity/Reservation/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Projection
   ( transferDecisionsProjection
   , transferDecisionsStatusFor
diff --git a/test/conformance-v2/Generated/HospitalCapacity/Reservation/Transducer.hs b/test/conformance-v2/Generated/HospitalCapacity/Reservation/Transducer.hs
--- a/test/conformance-v2/Generated/HospitalCapacity/Reservation/Transducer.hs
+++ b/test/conformance-v2/Generated/HospitalCapacity/Reservation/Transducer.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE OverloadedLabels #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Transducer
   ( reservationTransducer
   , reservationFoldFingerprint
diff --git a/test/conformance-workflow-full/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs b/test/conformance-workflow-full/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs
--- a/test/conformance-workflow-full/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs
+++ b/test/conformance-workflow-full/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
 module Generated.HospitalCapacity.HospitalTransferReservation.WorkflowFacts (WorkflowFacts (..), workflowFacts, workflowFactValues) where
 
 -- | The workflow's deterministic decisions, pinned as typed pure facts.
diff --git a/test/conformance-workflow-full/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs b/test/conformance-workflow-full/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs
--- a/test/conformance-workflow-full/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs
+++ b/test/conformance-workflow-full/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
 module Generated.HospitalCapacity.HospitalTransferReservation.WorkflowRuntime
   ( workflowName
   , AwaitBinding
diff --git a/test/conformance-workflow-runtime/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs b/test/conformance-workflow-runtime/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs
--- a/test/conformance-workflow-runtime/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs
+++ b/test/conformance-workflow-runtime/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
 module Generated.HospitalCapacity.HospitalTransferReservation.WorkflowFacts (WorkflowFacts (..), workflowFacts, workflowFactValues) where
 
 -- | The workflow's deterministic decisions, pinned as typed pure facts.
diff --git a/test/conformance-workflow-runtime/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs b/test/conformance-workflow-runtime/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs
--- a/test/conformance-workflow-runtime/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs
+++ b/test/conformance-workflow-runtime/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
 module Generated.HospitalCapacity.HospitalTransferReservation.WorkflowRuntime
   ( workflowName
   , AwaitBinding
diff --git a/test/conformance-workflow/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs b/test/conformance-workflow/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs
--- a/test/conformance-workflow/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs
+++ b/test/conformance-workflow/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowFacts.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
 module Generated.HospitalCapacity.HospitalTransferReservation.WorkflowFacts (WorkflowFacts (..), workflowFacts, workflowFactValues) where
 
 -- | The workflow's deterministic decisions, pinned as typed pure facts.
diff --git a/test/conformance-workflow/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs b/test/conformance-workflow/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs
--- a/test/conformance-workflow/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs
+++ b/test/conformance-workflow/Generated/HospitalCapacity/HospitalTransferReservation/WorkflowRuntime.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 5) from workflow HospitalTransferReservation; do not edit.
 module Generated.HospitalCapacity.HospitalTransferReservation.WorkflowRuntime
   ( workflowName
   , AwaitBinding
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/BehaviorSourceMap.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/BehaviorSourceMap.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/BehaviorSourceMap.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context workspace-nominal-proof behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context workspace-nominal-proof behavior source map; do not edit.
 module Generated.WorkspaceNominalProof.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Nominals.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Nominals.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Nominals.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Nominals.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveAnyClass #-}
 {-# LANGUAGE TypeFamilies #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context workspace-nominal-proof generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context workspace-nominal-proof generated nominal declarations; do not edit.
 module Generated.WorkspaceNominalProof.Nominals
   ( ProjectId
   , parseProjectId
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Nominals/Internal.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Nominals/Internal.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Nominals/Internal.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Nominals/Internal.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context workspace-nominal-proof generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context workspace-nominal-proof generated nominal ID internals; do not edit.
 module Generated.WorkspaceNominalProof.Nominals.Internal
   ( ProjectId
   , parseProjectId
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/BehaviorContract.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/BehaviorContract.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/BehaviorContract.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
 module Generated.WorkspaceNominalProof.Project.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Codec.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Codec.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Codec.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
 module Generated.WorkspaceNominalProof.Project.Codec (
     projectCodec,
     parseProjectEvent,
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Domain.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Domain.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Domain.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
 module Generated.WorkspaceNominalProof.Project.Domain where
 
 import Data.Proxy (Proxy (..))
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/EventStream.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/EventStream.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/EventStream.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
 module Generated.WorkspaceNominalProof.Project.EventStream
   ( projectCategory
   , projectCommandCategory
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Harness.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Harness.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Harness.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
 module Generated.WorkspaceNominalProof.Project.Harness (harnessAssertions) where
 
 import Generated.WorkspaceNominalProof.Project.Domain
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Projection.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Projection.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Projection.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
 module Generated.WorkspaceNominalProof.Project.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Transducer.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Transducer.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Transducer.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Project/Transducer.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE OverloadedLabels #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate Project; do not edit.
 module Generated.WorkspaceNominalProof.Project.Transducer
   ( projectTransducer
   , projectFoldFingerprint
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/BehaviorContract.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/BehaviorContract.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/BehaviorContract.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
 module Generated.WorkspaceNominalProof.ProjectArtifact.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Codec.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Codec.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Codec.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
 module Generated.WorkspaceNominalProof.ProjectArtifact.Codec (
     projectArtifactCodec,
     parseProjectArtifactEvent,
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Domain.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Domain.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Domain.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
 module Generated.WorkspaceNominalProof.ProjectArtifact.Domain where
 
 import Data.Proxy (Proxy (..))
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/EventStream.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/EventStream.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/EventStream.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
 module Generated.WorkspaceNominalProof.ProjectArtifact.EventStream
   ( projectArtifactCategory
   , projectArtifactCommandCategory
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Harness.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Harness.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Harness.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
 module Generated.WorkspaceNominalProof.ProjectArtifact.Harness (harnessAssertions) where
 
 import Generated.WorkspaceNominalProof.ProjectArtifact.Domain
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Projection.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Projection.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Projection.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
 module Generated.WorkspaceNominalProof.ProjectArtifact.Projection () where
 
 -- No projection declarations are present; this module keeps the generated manifest inventory total.
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Transducer.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Transducer.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Transducer.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ProjectArtifact/Transducer.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE OverloadedLabels #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from aggregate ProjectArtifact; do not edit.
 module Generated.WorkspaceNominalProof.ProjectArtifact.Transducer
   ( projectArtifactTransducer
   , projectArtifactFoldFingerprint
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ReplayAudit.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ReplayAudit.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ReplayAudit.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context workspace-nominal-proof replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context workspace-nominal-proof replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/NominalLeaves.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/NominalLeaves.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/NominalLeaves.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/NominalLeaves.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context workspace-nominal-proof structural nominal leaves; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context workspace-nominal-proof structural nominal leaves; do not edit.
 module Generated.WorkspaceNominalProof.Structural.NominalLeaves where
 
 import Data.Aeson (Value (..), withText)
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/Shape/ArtifactClaim.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/Shape/ArtifactClaim.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/Shape/ArtifactClaim.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/Shape/ArtifactClaim.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural ArtifactClaim; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural ArtifactClaim; do not edit.
 module Generated.WorkspaceNominalProof.Structural.Shape.ArtifactClaim (ArtifactClaimShape (..)) where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/Shape/ProjectClaim.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/Shape/ProjectClaim.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/Shape/ProjectClaim.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/Structural/Shape/ProjectClaim.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from mapped structural ProjectClaim; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from mapped structural ProjectClaim; do not edit.
 module Generated.WorkspaceNominalProof.Structural.Shape.ProjectClaim (ProjectClaimShape (..)) where
 
 import GHC.Generics (Generic)
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/StructuralConformance.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/StructuralConformance.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/StructuralConformance.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/StructuralConformance.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context workspace-nominal-proof structural conformance; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context workspace-nominal-proof structural conformance; do not edit.
 module Generated.WorkspaceNominalProof.StructuralConformance
   ( structuralConformanceAssertions
   ) where
diff --git a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/StructuralProjections.hs b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/StructuralProjections.hs
--- a/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/StructuralProjections.hs
+++ b/test/conformance-workspace-nominals/Generated/WorkspaceNominalProof/StructuralProjections.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TypeFamilies #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 6) from context workspace-nominal-proof mapped structural facade; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 6) from context workspace-nominal-proof 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.
diff --git a/test/conformance/Generated/HospitalCapacity/BehaviorSourceMap.hs b/test/conformance/Generated/HospitalCapacity/BehaviorSourceMap.hs
--- a/test/conformance/Generated/HospitalCapacity/BehaviorSourceMap.hs
+++ b/test/conformance/Generated/HospitalCapacity/BehaviorSourceMap.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity behavior source map; do not edit.
 module Generated.HospitalCapacity.BehaviorSourceMap
   ( BehaviorSourceLocation (..)
   , behaviorSourceLocation
diff --git a/test/conformance/Generated/HospitalCapacity/Nominals.hs b/test/conformance/Generated/HospitalCapacity/Nominals.hs
--- a/test/conformance/Generated/HospitalCapacity/Nominals.hs
+++ b/test/conformance/Generated/HospitalCapacity/Nominals.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveAnyClass #-}
 {-# LANGUAGE TypeFamilies #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal declarations; do not edit.
 module Generated.HospitalCapacity.Nominals
   ( BedType (..)
   , bedTypeText
diff --git a/test/conformance/Generated/HospitalCapacity/Nominals/Internal.hs b/test/conformance/Generated/HospitalCapacity/Nominals/Internal.hs
--- a/test/conformance/Generated/HospitalCapacity/Nominals/Internal.hs
+++ b/test/conformance/Generated/HospitalCapacity/Nominals/Internal.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity generated nominal ID internals; do not edit.
 module Generated.HospitalCapacity.Nominals.Internal
   ( CommandId
   , parseCommandId
diff --git a/test/conformance/Generated/HospitalCapacity/ReplayAudit.hs b/test/conformance/Generated/HospitalCapacity/ReplayAudit.hs
--- a/test/conformance/Generated/HospitalCapacity/ReplayAudit.hs
+++ b/test/conformance/Generated/HospitalCapacity/ReplayAudit.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from context hospital-capacity replay-audit assembly; do not edit.
 --
 -- Deployment contract:
 --   * replay-neutral diff: no data audit is required;
diff --git a/test/conformance/Generated/HospitalCapacity/Reservation/BehaviorContract.hs b/test/conformance/Generated/HospitalCapacity/Reservation/BehaviorContract.hs
--- a/test/conformance/Generated/HospitalCapacity/Reservation/BehaviorContract.hs
+++ b/test/conformance/Generated/HospitalCapacity/Reservation/BehaviorContract.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.BehaviorContract
   ( BehaviorKey (..)
   , unBehaviorKey
diff --git a/test/conformance/Generated/HospitalCapacity/Reservation/Codec.hs b/test/conformance/Generated/HospitalCapacity/Reservation/Codec.hs
--- a/test/conformance/Generated/HospitalCapacity/Reservation/Codec.hs
+++ b/test/conformance/Generated/HospitalCapacity/Reservation/Codec.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Codec (
     reservationCodec,
     parseReservationEvent,
diff --git a/test/conformance/Generated/HospitalCapacity/Reservation/Domain.hs b/test/conformance/Generated/HospitalCapacity/Reservation/Domain.hs
--- a/test/conformance/Generated/HospitalCapacity/Reservation/Domain.hs
+++ b/test/conformance/Generated/HospitalCapacity/Reservation/Domain.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE TemplateHaskell #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Domain where
 
 import Data.Proxy (Proxy (..))
diff --git a/test/conformance/Generated/HospitalCapacity/Reservation/EventStream.hs b/test/conformance/Generated/HospitalCapacity/Reservation/EventStream.hs
--- a/test/conformance/Generated/HospitalCapacity/Reservation/EventStream.hs
+++ b/test/conformance/Generated/HospitalCapacity/Reservation/EventStream.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.EventStream
   ( reservationCategory
   , reservationCommandCategory
diff --git a/test/conformance/Generated/HospitalCapacity/Reservation/Harness.hs b/test/conformance/Generated/HospitalCapacity/Reservation/Harness.hs
--- a/test/conformance/Generated/HospitalCapacity/Reservation/Harness.hs
+++ b/test/conformance/Generated/HospitalCapacity/Reservation/Harness.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE OverloadedLabels #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Harness (harnessAssertions) where
 
 import Generated.HospitalCapacity.Reservation.Domain
diff --git a/test/conformance/Generated/HospitalCapacity/Reservation/Projection.hs b/test/conformance/Generated/HospitalCapacity/Reservation/Projection.hs
--- a/test/conformance/Generated/HospitalCapacity/Reservation/Projection.hs
+++ b/test/conformance/Generated/HospitalCapacity/Reservation/Projection.hs
@@ -1,4 +1,4 @@
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Projection
   ( transferDecisionsProjection
   , transferDecisionsStatusFor
diff --git a/test/conformance/Generated/HospitalCapacity/Reservation/Transducer.hs b/test/conformance/Generated/HospitalCapacity/Reservation/Transducer.hs
--- a/test/conformance/Generated/HospitalCapacity/Reservation/Transducer.hs
+++ b/test/conformance/Generated/HospitalCapacity/Reservation/Transducer.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE OverloadedLabels #-}
 {-# LANGUAGE QualifiedDo #-}
--- @generated by keiro-dsl 0.21.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
+-- @generated by keiro-dsl 0.22.0.0 (language keiro-dsl 4) from aggregate Reservation; do not edit.
 module Generated.HospitalCapacity.Reservation.Transducer
   ( reservationTransducer
   , reservationFoldFingerprint
diff --git a/test/consumer-enum-literal-sampling-test.sh b/test/consumer-enum-literal-sampling-test.sh
new file mode 100644
--- /dev/null
+++ b/test/consumer-enum-literal-sampling-test.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+# Compiled proof that a consumer nominal enum compared with a qualified literal
+# yields a transducer that compiles under the generated-output -Werror and a
+# harness that samples by canonical key rather than supplied fixture order.
+# The nominal-scalars fixture and its hand-owned fixture order are mutated,
+# the suite is regenerated and run, and every byte is restored afterwards.
+set -euo pipefail
+cd "$(git rev-parse --show-toplevel)"
+
+FIXTURE="keiro-dsl/test/fixtures/nominal-scalars.keiro"
+ROOT="keiro-dsl/test/conformance-nominal-scalars"
+BINDINGS="$ROOT/NominalConformance/Bindings.hs"
+HARNESS="$ROOT/Generated/NominalScalars/NominalLedger/Harness.hs"
+BACKUP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/keiro-consumer-enum-literal.XXXXXX")"
+case "$BACKUP_DIR" in
+  *keiro-consumer-enum-literal.*) ;;
+  *) echo "FAIL: unexpected backup path: $BACKUP_DIR"; exit 1 ;;
+esac
+cp "$FIXTURE" "$BACKUP_DIR/fixture.keiro"
+cp -R "$ROOT" "$BACKUP_DIR/root"
+LOG="$BACKUP_DIR/suite.log"
+
+restore() {
+  cp "$BACKUP_DIR/fixture.keiro" "$FIXTURE"
+  cp -R "$BACKUP_DIR/root/." "$ROOT/"
+  rm -rf "$BACKUP_DIR"
+}
+trap restore EXIT
+
+python3 - "$FIXTURE" "$BINDINGS" <<'PY'
+import sys
+from pathlib import Path
+
+fixture, bindings = Path(sys.argv[1]), Path(sys.argv[2])
+source = fixture.read_text()
+old = 'guard cmd.orderId == reg.orderId && cmd.status == reg.status'
+if source.count(old) != 1:
+    raise SystemExit('expected exactly one nominal-scalars guard')
+fixture.write_text(source.replace(old, 'guard cmd.orderId == reg.orderId && cmd.status == OrderStatus.Draft'))
+source = bindings.read_text()
+old = '''        [ NominalFixture "draft" (String "draft") AwaitingApproval
+        , NominalFixture "submitted" (String "submitted") Accepted
+        ]'''
+new = '''        [ NominalFixture "submitted" (String "submitted") Accepted
+        , NominalFixture "draft" (String "draft") AwaitingApproval
+        ]'''
+if source.count(old) != 1:
+    raise SystemExit('expected exactly one OrderStatus fixture list')
+bindings.write_text(source.replace(old, new))
+PY
+
+cabal run -v0 keiro-dsl-corpus-regen -- regenerate --allow-dirty --only "$ROOT" >"$LOG" 2>&1 || {
+  sed -n '1,120p' "$LOG"
+  echo "FAIL: regeneration with a literal-guarded consumer enum failed"
+  exit 1
+}
+if ! grep -Fq 'fieldWitnessGet NominalProjections.orderStatusEqualityWitness value == "draft"' "$HARNESS"; then
+  echo "FAIL: generated harness does not sample the consumer enum by canonical key"
+  exit 1
+fi
+if ! cabal test -v0 keiro-dsl:test:keiro-dsl-conformance-nominal-scalars --test-show-details=direct >"$LOG" 2>&1; then
+  sed -n '1,200p' "$LOG"
+  echo "FAIL: literal-guarded consumer enum suite failed with the non-matching fixture first"
+  exit 1
+fi
+echo "PASS: consumer enum literal guard compiles and samples by canonical key"
diff --git a/test/fixtures/mapped-structural-enum-data-only-fold.golden b/test/fixtures/mapped-structural-enum-data-only-fold.golden
new file mode 100644
--- /dev/null
+++ b/test/fixtures/mapped-structural-enum-data-only-fold.golden
@@ -0,0 +1,14 @@
+8b4128a98997f93292b0cdc3a2dd4413
+semantic-contract:keiro-dsl/projection-catalog/1
+semantic-contract:keiro-dsl/runtime-semantics/2
+state:Ready|terminal=false
+state:Done|terminal=true
+reg:requiredScope:RequiredScope=initial
+mapped-register:RequiredScope|wire=0b2821aba8872fd3|canonical=conformance.RequiredScope.v1|binding=Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeBinding|binding-version=1|initial=Conformance.MappedStructuralEnumEquality.Bindings.initialScope
+transition:live|Ready|Match|implementation=generated|guard=|writes=requiredScope:=cmd.requiredScope|emits=Matched|outputs=Matched=generated-command-identity:Match[requiredScope=requiredScope:RequiredScope,request=request:Request]|goto=Done
+transition:live|Ready|Differ|implementation=generated|guard=|writes=requiredScope:=cmd.requiredScope|emits=Differed|outputs=Differed=generated-command-identity:Differ[requiredScope=requiredScope:RequiredScope,request=request:Request]|goto=Done
+transition:live|Ready|EqRight|implementation=generated|guard=|writes=requiredScope:=cmd.requiredScope|emits=EqRightAccepted|outputs=EqRightAccepted=generated-command-identity:EqRight[requiredScope=requiredScope:RequiredScope,request=request:Request]|goto=Done
+transition:live|Ready|EqLeft|implementation=generated|guard=|writes=requiredScope:=cmd.requiredScope|emits=EqLeftAccepted|outputs=EqLeftAccepted=generated-command-identity:EqLeft[requiredScope=requiredScope:RequiredScope,request=request:Request]|goto=Done
+transition:live|Ready|NeRight|implementation=generated|guard=|writes=requiredScope:=cmd.requiredScope|emits=NeRightAccepted|outputs=NeRightAccepted=generated-command-identity:NeRight[requiredScope=requiredScope:RequiredScope,request=request:Request]|goto=Done
+transition:live|Ready|NeLeft|implementation=generated|guard=|writes=requiredScope:=cmd.requiredScope|emits=NeLeftAccepted|outputs=NeLeftAccepted=generated-command-identity:NeLeft[requiredScope=requiredScope:RequiredScope,request=request:Request]|goto=Done
+transition:live|Ready|Self|implementation=generated|guard=|writes=requiredScope:=cmd.requiredScope|emits=SelfAccepted|outputs=SelfAccepted=generated-command-identity:Self[requiredScope=requiredScope:RequiredScope,request=request:Request]|goto=Done
diff --git a/test/fixtures/mapped-structural-enum-equality-history/binding-v2.keiro b/test/fixtures/mapped-structural-enum-equality-history/binding-v2.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/mapped-structural-enum-equality-history/binding-v2.keiro
@@ -0,0 +1,100 @@
+language keiro-dsl 6
+context mapped-structural-enum-equality
+
+mapped structural enum RequiredScope {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=RequiredScope
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeBinding"
+  binding-version = "2"
+  canonical-type = "conformance.RequiredScope.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeFixtures"
+  initial = "Conformance.MappedStructuralEnumEquality.Bindings.initialScope"
+  wire string { PipelineScope as "pipeline" DiagnosticScope as "diagnostic" }
+}
+
+mapped structural record Request {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=Request
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requestBinding"
+  binding-version = "2"
+  canonical-type = "conformance.Request.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.requestFixtures"
+  wire object constructor=Request unknown-fields=reject {
+    requiredScope as "requiredScope" : RequiredScope required
+  }
+}
+
+aggregate ScopeGate
+  regs
+    requiredScope RequiredScope = initial
+  states Ready Done!
+  command Match { requiredScope:RequiredScope request:Request }
+  command Differ { requiredScope:RequiredScope request:Request }
+  command EqRight { requiredScope:RequiredScope request:Request }
+  command EqLeft { requiredScope:RequiredScope request:Request }
+  command NeRight { requiredScope:RequiredScope request:Request }
+  command NeLeft { requiredScope:RequiredScope request:Request }
+  command Self { requiredScope:RequiredScope request:Request }
+  event Matched = fields(Match)
+  event Differed = fields(Differ)
+  event EqRightAccepted = fields(EqRight)
+  event EqLeftAccepted = fields(EqLeft)
+  event NeRightAccepted = fields(NeRight)
+  event NeLeftAccepted = fields(NeLeft)
+  event SelfAccepted = fields(Self)
+
+
+  Ready -- Match -->
+    guard cmd.requiredScope == reg.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit Matched
+    goto Done
+
+  Ready -- Differ -->
+    guard cmd.requiredScope != reg.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit Differed
+    goto Done
+
+  Ready -- EqRight -->
+    guard cmd.requiredScope == RequiredScope.PipelineScope
+    write requiredScope := cmd.requiredScope
+    emit EqRightAccepted
+    goto Done
+
+  Ready -- EqLeft -->
+    guard RequiredScope.PipelineScope == cmd.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit EqLeftAccepted
+    goto Done
+
+  Ready -- NeRight -->
+    guard cmd.requiredScope != RequiredScope.DiagnosticScope
+    write requiredScope := cmd.requiredScope
+    emit NeRightAccepted
+    goto Done
+
+  Ready -- NeLeft -->
+    guard RequiredScope.DiagnosticScope != cmd.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit NeLeftAccepted
+    goto Done
+
+  Ready -- Self -->
+    guard cmd.requiredScope == cmd.requiredScope && (cmd.requiredScope != cmd.requiredScope || cmd.requiredScope == cmd.requiredScope)
+    write requiredScope := RequiredScope.PipelineScope
+    emit SelfAccepted
+    goto Done
+
+  wire kind=ctorName fields=camelCase schemaVersion=1
+  snapshot every 1
+    state-codec version=1 shape-hash="scope-gate-v1"
+
+aggregate ScopeControl
+  regs value Text = ""
+  states Ready Done!
+  command Store { value:Text }
+  event Stored = fields(Store)
+  Ready -- Store -->
+    write value := cmd.value
+    emit Stored
+    goto Done
+  wire kind=ctorName fields=camelCase schemaVersion=1
diff --git a/test/fixtures/mapped-structural-enum-equality-history/data-only.keiro b/test/fixtures/mapped-structural-enum-equality-history/data-only.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/mapped-structural-enum-equality-history/data-only.keiro
@@ -0,0 +1,93 @@
+language keiro-dsl 6
+context mapped-structural-enum-equality
+
+mapped structural enum RequiredScope {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=RequiredScope
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeBinding"
+  binding-version = "1"
+  canonical-type = "conformance.RequiredScope.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeFixtures"
+  initial = "Conformance.MappedStructuralEnumEquality.Bindings.initialScope"
+  wire string { PipelineScope as "pipeline" DiagnosticScope as "diagnostic" }
+}
+
+mapped structural record Request {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=Request
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requestBinding"
+  binding-version = "1"
+  canonical-type = "conformance.Request.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.requestFixtures"
+  wire object constructor=Request unknown-fields=reject {
+    requiredScope as "requiredScope" : RequiredScope required
+  }
+}
+
+aggregate ScopeGate
+  regs
+    requiredScope RequiredScope = initial
+  states Ready Done!
+  command Match { requiredScope:RequiredScope request:Request }
+  command Differ { requiredScope:RequiredScope request:Request }
+  command EqRight { requiredScope:RequiredScope request:Request }
+  command EqLeft { requiredScope:RequiredScope request:Request }
+  command NeRight { requiredScope:RequiredScope request:Request }
+  command NeLeft { requiredScope:RequiredScope request:Request }
+  command Self { requiredScope:RequiredScope request:Request }
+  event Matched = fields(Match)
+  event Differed = fields(Differ)
+  event EqRightAccepted = fields(EqRight)
+  event EqLeftAccepted = fields(EqLeft)
+  event NeRightAccepted = fields(NeRight)
+  event NeLeftAccepted = fields(NeLeft)
+  event SelfAccepted = fields(Self)
+
+
+  Ready -- Match -->
+    write requiredScope := cmd.requiredScope
+    emit Matched
+    goto Done
+
+  Ready -- Differ -->
+    write requiredScope := cmd.requiredScope
+    emit Differed
+    goto Done
+
+  Ready -- EqRight -->
+    write requiredScope := cmd.requiredScope
+    emit EqRightAccepted
+    goto Done
+
+  Ready -- EqLeft -->
+    write requiredScope := cmd.requiredScope
+    emit EqLeftAccepted
+    goto Done
+
+  Ready -- NeRight -->
+    write requiredScope := cmd.requiredScope
+    emit NeRightAccepted
+    goto Done
+
+  Ready -- NeLeft -->
+    write requiredScope := cmd.requiredScope
+    emit NeLeftAccepted
+    goto Done
+
+  Ready -- Self -->
+    write requiredScope := cmd.requiredScope
+    emit SelfAccepted
+    goto Done
+
+  wire kind=ctorName fields=camelCase schemaVersion=1
+  snapshot every 1
+    state-codec version=1 shape-hash="scope-gate-v1"
+
+aggregate ScopeControl
+  regs value Text = ""
+  states Ready Done!
+  command Store { value:Text }
+  event Stored = fields(Store)
+  Ready -- Store -->
+    write value := cmd.value
+    emit Stored
+    goto Done
+  wire kind=ctorName fields=camelCase schemaVersion=1
diff --git a/test/fixtures/mapped-structural-enum-equality-history/fixture-only.keiro b/test/fixtures/mapped-structural-enum-equality-history/fixture-only.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/mapped-structural-enum-equality-history/fixture-only.keiro
@@ -0,0 +1,100 @@
+language keiro-dsl 6
+context mapped-structural-enum-equality
+
+mapped structural enum RequiredScope {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=RequiredScope
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeBinding"
+  binding-version = "1"
+  canonical-type = "conformance.RequiredScope.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.changedFixtures"
+  initial = "Conformance.MappedStructuralEnumEquality.Bindings.initialScope"
+  wire string { PipelineScope as "pipeline" DiagnosticScope as "diagnostic" }
+}
+
+mapped structural record Request {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=Request
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requestBinding"
+  binding-version = "1"
+  canonical-type = "conformance.Request.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.requestFixtures"
+  wire object constructor=Request unknown-fields=reject {
+    requiredScope as "requiredScope" : RequiredScope required
+  }
+}
+
+aggregate ScopeGate
+  regs
+    requiredScope RequiredScope = initial
+  states Ready Done!
+  command Match { requiredScope:RequiredScope request:Request }
+  command Differ { requiredScope:RequiredScope request:Request }
+  command EqRight { requiredScope:RequiredScope request:Request }
+  command EqLeft { requiredScope:RequiredScope request:Request }
+  command NeRight { requiredScope:RequiredScope request:Request }
+  command NeLeft { requiredScope:RequiredScope request:Request }
+  command Self { requiredScope:RequiredScope request:Request }
+  event Matched = fields(Match)
+  event Differed = fields(Differ)
+  event EqRightAccepted = fields(EqRight)
+  event EqLeftAccepted = fields(EqLeft)
+  event NeRightAccepted = fields(NeRight)
+  event NeLeftAccepted = fields(NeLeft)
+  event SelfAccepted = fields(Self)
+
+
+  Ready -- Match -->
+    guard cmd.requiredScope == reg.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit Matched
+    goto Done
+
+  Ready -- Differ -->
+    guard cmd.requiredScope != reg.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit Differed
+    goto Done
+
+  Ready -- EqRight -->
+    guard cmd.requiredScope == RequiredScope.PipelineScope
+    write requiredScope := cmd.requiredScope
+    emit EqRightAccepted
+    goto Done
+
+  Ready -- EqLeft -->
+    guard RequiredScope.PipelineScope == cmd.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit EqLeftAccepted
+    goto Done
+
+  Ready -- NeRight -->
+    guard cmd.requiredScope != RequiredScope.DiagnosticScope
+    write requiredScope := cmd.requiredScope
+    emit NeRightAccepted
+    goto Done
+
+  Ready -- NeLeft -->
+    guard RequiredScope.DiagnosticScope != cmd.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit NeLeftAccepted
+    goto Done
+
+  Ready -- Self -->
+    guard cmd.requiredScope == cmd.requiredScope && (cmd.requiredScope != cmd.requiredScope || cmd.requiredScope == cmd.requiredScope)
+    write requiredScope := RequiredScope.PipelineScope
+    emit SelfAccepted
+    goto Done
+
+  wire kind=ctorName fields=camelCase schemaVersion=1
+  snapshot every 1
+    state-codec version=1 shape-hash="scope-gate-v1"
+
+aggregate ScopeControl
+  regs value Text = ""
+  states Ready Done!
+  command Store { value:Text }
+  event Stored = fields(Store)
+  Ready -- Store -->
+    write value := cmd.value
+    emit Stored
+    goto Done
+  wire kind=ctorName fields=camelCase schemaVersion=1
diff --git a/test/fixtures/mapped-structural-enum-equality-history/guarded.keiro b/test/fixtures/mapped-structural-enum-equality-history/guarded.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/mapped-structural-enum-equality-history/guarded.keiro
@@ -0,0 +1,100 @@
+language keiro-dsl 6
+context mapped-structural-enum-equality
+
+mapped structural enum RequiredScope {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=RequiredScope
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeBinding"
+  binding-version = "1"
+  canonical-type = "conformance.RequiredScope.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeFixtures"
+  initial = "Conformance.MappedStructuralEnumEquality.Bindings.initialScope"
+  wire string { PipelineScope as "pipeline" DiagnosticScope as "diagnostic" }
+}
+
+mapped structural record Request {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=Request
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requestBinding"
+  binding-version = "1"
+  canonical-type = "conformance.Request.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.requestFixtures"
+  wire object constructor=Request unknown-fields=reject {
+    requiredScope as "requiredScope" : RequiredScope required
+  }
+}
+
+aggregate ScopeGate
+  regs
+    requiredScope RequiredScope = initial
+  states Ready Done!
+  command Match { requiredScope:RequiredScope request:Request }
+  command Differ { requiredScope:RequiredScope request:Request }
+  command EqRight { requiredScope:RequiredScope request:Request }
+  command EqLeft { requiredScope:RequiredScope request:Request }
+  command NeRight { requiredScope:RequiredScope request:Request }
+  command NeLeft { requiredScope:RequiredScope request:Request }
+  command Self { requiredScope:RequiredScope request:Request }
+  event Matched = fields(Match)
+  event Differed = fields(Differ)
+  event EqRightAccepted = fields(EqRight)
+  event EqLeftAccepted = fields(EqLeft)
+  event NeRightAccepted = fields(NeRight)
+  event NeLeftAccepted = fields(NeLeft)
+  event SelfAccepted = fields(Self)
+
+
+  Ready -- Match -->
+    guard cmd.requiredScope == reg.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit Matched
+    goto Done
+
+  Ready -- Differ -->
+    guard cmd.requiredScope != reg.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit Differed
+    goto Done
+
+  Ready -- EqRight -->
+    guard cmd.requiredScope == RequiredScope.PipelineScope
+    write requiredScope := cmd.requiredScope
+    emit EqRightAccepted
+    goto Done
+
+  Ready -- EqLeft -->
+    guard RequiredScope.PipelineScope == cmd.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit EqLeftAccepted
+    goto Done
+
+  Ready -- NeRight -->
+    guard cmd.requiredScope != RequiredScope.DiagnosticScope
+    write requiredScope := cmd.requiredScope
+    emit NeRightAccepted
+    goto Done
+
+  Ready -- NeLeft -->
+    guard RequiredScope.DiagnosticScope != cmd.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit NeLeftAccepted
+    goto Done
+
+  Ready -- Self -->
+    guard cmd.requiredScope == cmd.requiredScope && (cmd.requiredScope != cmd.requiredScope || cmd.requiredScope == cmd.requiredScope)
+    write requiredScope := RequiredScope.PipelineScope
+    emit SelfAccepted
+    goto Done
+
+  wire kind=ctorName fields=camelCase schemaVersion=1
+  snapshot every 1
+    state-codec version=1 shape-hash="scope-gate-v1"
+
+aggregate ScopeControl
+  regs value Text = ""
+  states Ready Done!
+  command Store { value:Text }
+  event Stored = fields(Store)
+  Ready -- Store -->
+    write value := cmd.value
+    emit Stored
+    goto Done
+  wire kind=ctorName fields=camelCase schemaVersion=1
diff --git a/test/fixtures/mapped-structural-enum-equality-history/reordered.keiro b/test/fixtures/mapped-structural-enum-equality-history/reordered.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/mapped-structural-enum-equality-history/reordered.keiro
@@ -0,0 +1,100 @@
+language keiro-dsl 6
+context mapped-structural-enum-equality
+
+mapped structural enum RequiredScope {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=RequiredScope
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeBinding"
+  binding-version = "1"
+  canonical-type = "conformance.RequiredScope.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeFixtures"
+  initial = "Conformance.MappedStructuralEnumEquality.Bindings.initialScope"
+  wire string { DiagnosticScope as "diagnostic" PipelineScope as "pipeline" }
+}
+
+mapped structural record Request {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=Request
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requestBinding"
+  binding-version = "1"
+  canonical-type = "conformance.Request.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.requestFixtures"
+  wire object constructor=Request unknown-fields=reject {
+    requiredScope as "requiredScope" : RequiredScope required
+  }
+}
+
+aggregate ScopeGate
+  regs
+    requiredScope RequiredScope = initial
+  states Ready Done!
+  command Match { requiredScope:RequiredScope request:Request }
+  command Differ { requiredScope:RequiredScope request:Request }
+  command EqRight { requiredScope:RequiredScope request:Request }
+  command EqLeft { requiredScope:RequiredScope request:Request }
+  command NeRight { requiredScope:RequiredScope request:Request }
+  command NeLeft { requiredScope:RequiredScope request:Request }
+  command Self { requiredScope:RequiredScope request:Request }
+  event Matched = fields(Match)
+  event Differed = fields(Differ)
+  event EqRightAccepted = fields(EqRight)
+  event EqLeftAccepted = fields(EqLeft)
+  event NeRightAccepted = fields(NeRight)
+  event NeLeftAccepted = fields(NeLeft)
+  event SelfAccepted = fields(Self)
+
+
+  Ready -- Match -->
+    guard cmd.requiredScope == reg.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit Matched
+    goto Done
+
+  Ready -- Differ -->
+    guard cmd.requiredScope != reg.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit Differed
+    goto Done
+
+  Ready -- EqRight -->
+    guard cmd.requiredScope == RequiredScope.PipelineScope
+    write requiredScope := cmd.requiredScope
+    emit EqRightAccepted
+    goto Done
+
+  Ready -- EqLeft -->
+    guard RequiredScope.PipelineScope == cmd.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit EqLeftAccepted
+    goto Done
+
+  Ready -- NeRight -->
+    guard cmd.requiredScope != RequiredScope.DiagnosticScope
+    write requiredScope := cmd.requiredScope
+    emit NeRightAccepted
+    goto Done
+
+  Ready -- NeLeft -->
+    guard RequiredScope.DiagnosticScope != cmd.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit NeLeftAccepted
+    goto Done
+
+  Ready -- Self -->
+    guard cmd.requiredScope == cmd.requiredScope && (cmd.requiredScope != cmd.requiredScope || cmd.requiredScope == cmd.requiredScope)
+    write requiredScope := RequiredScope.PipelineScope
+    emit SelfAccepted
+    goto Done
+
+  wire kind=ctorName fields=camelCase schemaVersion=1
+  snapshot every 1
+    state-codec version=1 shape-hash="scope-gate-v1"
+
+aggregate ScopeControl
+  regs value Text = ""
+  states Ready Done!
+  command Store { value:Text }
+  event Stored = fields(Store)
+  Ready -- Store -->
+    write value := cmd.value
+    emit Stored
+    goto Done
+  wire kind=ctorName fields=camelCase schemaVersion=1
diff --git a/test/fixtures/mapped-structural-enum-equality-history/wire-v2.keiro b/test/fixtures/mapped-structural-enum-equality-history/wire-v2.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/mapped-structural-enum-equality-history/wire-v2.keiro
@@ -0,0 +1,100 @@
+language keiro-dsl 6
+context mapped-structural-enum-equality
+
+mapped structural enum RequiredScope {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=RequiredScope
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeBinding"
+  binding-version = "1"
+  canonical-type = "conformance.RequiredScope.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeFixtures"
+  initial = "Conformance.MappedStructuralEnumEquality.Bindings.initialScope"
+  wire string { PipelineScope as "pipeline-v2" DiagnosticScope as "diagnostic" }
+}
+
+mapped structural record Request {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=Request
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requestBinding"
+  binding-version = "1"
+  canonical-type = "conformance.Request.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.requestFixtures"
+  wire object constructor=Request unknown-fields=reject {
+    requiredScope as "requiredScope" : RequiredScope required
+  }
+}
+
+aggregate ScopeGate
+  regs
+    requiredScope RequiredScope = initial
+  states Ready Done!
+  command Match { requiredScope:RequiredScope request:Request }
+  command Differ { requiredScope:RequiredScope request:Request }
+  command EqRight { requiredScope:RequiredScope request:Request }
+  command EqLeft { requiredScope:RequiredScope request:Request }
+  command NeRight { requiredScope:RequiredScope request:Request }
+  command NeLeft { requiredScope:RequiredScope request:Request }
+  command Self { requiredScope:RequiredScope request:Request }
+  event Matched = fields(Match)
+  event Differed = fields(Differ)
+  event EqRightAccepted = fields(EqRight)
+  event EqLeftAccepted = fields(EqLeft)
+  event NeRightAccepted = fields(NeRight)
+  event NeLeftAccepted = fields(NeLeft)
+  event SelfAccepted = fields(Self)
+
+
+  Ready -- Match -->
+    guard cmd.requiredScope == reg.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit Matched
+    goto Done
+
+  Ready -- Differ -->
+    guard cmd.requiredScope != reg.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit Differed
+    goto Done
+
+  Ready -- EqRight -->
+    guard cmd.requiredScope == RequiredScope.PipelineScope
+    write requiredScope := cmd.requiredScope
+    emit EqRightAccepted
+    goto Done
+
+  Ready -- EqLeft -->
+    guard RequiredScope.PipelineScope == cmd.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit EqLeftAccepted
+    goto Done
+
+  Ready -- NeRight -->
+    guard cmd.requiredScope != RequiredScope.DiagnosticScope
+    write requiredScope := cmd.requiredScope
+    emit NeRightAccepted
+    goto Done
+
+  Ready -- NeLeft -->
+    guard RequiredScope.DiagnosticScope != cmd.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit NeLeftAccepted
+    goto Done
+
+  Ready -- Self -->
+    guard cmd.requiredScope == cmd.requiredScope && (cmd.requiredScope != cmd.requiredScope || cmd.requiredScope == cmd.requiredScope)
+    write requiredScope := RequiredScope.PipelineScope
+    emit SelfAccepted
+    goto Done
+
+  wire kind=ctorName fields=camelCase schemaVersion=1
+  snapshot every 1
+    state-codec version=1 shape-hash="scope-gate-v1"
+
+aggregate ScopeControl
+  regs value Text = ""
+  states Ready Done!
+  command Store { value:Text }
+  event Stored = fields(Store)
+  Ready -- Store -->
+    write value := cmd.value
+    emit Stored
+    goto Done
+  wire kind=ctorName fields=camelCase schemaVersion=1
diff --git a/test/fixtures/mapped-structural-enum-equality.keiro b/test/fixtures/mapped-structural-enum-equality.keiro
new file mode 100644
--- /dev/null
+++ b/test/fixtures/mapped-structural-enum-equality.keiro
@@ -0,0 +1,89 @@
+language keiro-dsl 6
+context mapped-structural-enum-equality
+
+mapped structural enum RequiredScope {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=RequiredScope
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeBinding"
+  binding-version = "1"
+  canonical-type = "conformance.RequiredScope.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.requiredScopeFixtures"
+  initial = "Conformance.MappedStructuralEnumEquality.Bindings.initialScope"
+  wire string { PipelineScope as "pipeline" DiagnosticScope as "diagnostic" }
+}
+
+mapped structural record Request {
+  haskell package=keiro-dsl module=Conformance.MappedStructuralEnumEquality.Domain type=Request
+  binding = "Conformance.MappedStructuralEnumEquality.Bindings.requestBinding"
+  binding-version = "1"
+  canonical-type = "conformance.Request.v1"
+  fixtures = "Conformance.MappedStructuralEnumEquality.Bindings.requestFixtures"
+  wire object constructor=Request unknown-fields=reject {
+    requiredScope as "requiredScope" : RequiredScope required
+  }
+}
+
+aggregate ScopeGate
+  regs
+    requiredScope RequiredScope = initial
+  states Ready Done!
+  command Match { requiredScope:RequiredScope request:Request }
+  command Differ { requiredScope:RequiredScope request:Request }
+  command EqRight { requiredScope:RequiredScope request:Request }
+  command EqLeft { requiredScope:RequiredScope request:Request }
+  command NeRight { requiredScope:RequiredScope request:Request }
+  command NeLeft { requiredScope:RequiredScope request:Request }
+  command Self { requiredScope:RequiredScope request:Request }
+  event Matched = fields(Match)
+  event Differed = fields(Differ)
+  event EqRightAccepted = fields(EqRight)
+  event EqLeftAccepted = fields(EqLeft)
+  event NeRightAccepted = fields(NeRight)
+  event NeLeftAccepted = fields(NeLeft)
+  event SelfAccepted = fields(Self)
+
+
+  Ready -- Match -->
+    guard cmd.requiredScope == reg.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit Matched
+    goto Done
+
+  Ready -- Differ -->
+    guard cmd.requiredScope != reg.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit Differed
+    goto Done
+
+  Ready -- EqRight -->
+    guard cmd.requiredScope == RequiredScope.PipelineScope
+    write requiredScope := cmd.requiredScope
+    emit EqRightAccepted
+    goto Done
+
+  Ready -- EqLeft -->
+    guard RequiredScope.PipelineScope == cmd.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit EqLeftAccepted
+    goto Done
+
+  Ready -- NeRight -->
+    guard cmd.requiredScope != RequiredScope.DiagnosticScope
+    write requiredScope := cmd.requiredScope
+    emit NeRightAccepted
+    goto Done
+
+  Ready -- NeLeft -->
+    guard RequiredScope.DiagnosticScope != cmd.requiredScope
+    write requiredScope := cmd.requiredScope
+    emit NeLeftAccepted
+    goto Done
+
+  Ready -- Self -->
+    guard cmd.requiredScope == cmd.requiredScope && (cmd.requiredScope != cmd.requiredScope || cmd.requiredScope == cmd.requiredScope)
+    write requiredScope := RequiredScope.PipelineScope
+    emit SelfAccepted
+    goto Done
+
+  wire kind=ctorName fields=camelCase schemaVersion=1
+  snapshot every 1
+    state-codec version=1 shape-hash="scope-gate-v1"
diff --git a/test/mapped-structural-enum-equality-mutation-test.sh b/test/mapped-structural-enum-equality-mutation-test.sh
new file mode 100644
--- /dev/null
+++ b/test/mapped-structural-enum-equality-mutation-test.sh
@@ -0,0 +1,89 @@
+#!/usr/bin/env bash
+set -euo pipefail
+cd "$(git rev-parse --show-toplevel)"
+python3 - <<'PY'
+from pathlib import Path
+import subprocess
+
+root = Path('keiro-dsl/test/conformance-mapped-structural-enum-equality')
+binding = root / 'Conformance/MappedStructuralEnumEquality/Bindings.hs'
+projection = root / 'Generated/MappedStructuralEnumEquality/StructuralProjections.hs'
+originals = {path: path.read_bytes() for path in (binding, projection)}
+command = ['cabal', 'test', '-v0', 'keiro-dsl-conformance-mapped-structural-enum-equality', '--test-show-details=direct']
+
+def run():
+    return subprocess.run(command, text=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+
+def restore():
+    for path, contents in originals.items():
+        if path.read_bytes() != contents:
+            path.write_bytes(contents)
+
+# Each mutation must reach its specific runtime assertion. A compiler error or
+# a missing solver cannot stand in for a detected binding-law failure.
+mutations = [
+    ('collapsed binding', binding, 'toShape Domain.DiagnosticScope = Scope.DiagnosticScope', 'toShape Domain.DiagnosticScope = Scope.PipelineScope', 'FAIL  exhaustive enum shape round-trip: conformance.RequiredScope.v1'),
+    ('omitted fixture branch', binding, '[("diagnostic", Domain.DiagnosticScope)]', '[]', 'FAIL  fixture coverage: conformance.RequiredScope.v1'),
+    ('omitted finite-domain alternative', projection, 'finiteProjectionDomain ("pipeline" :| ["diagnostic"])', 'finiteProjectionDomain ("pipeline" :| [])', 'FAIL  projection owner law: conformance.RequiredScope.v1'),
+    ('wrong inverse', binding, 'fromShape Scope.DiagnosticScope = Domain.DiagnosticScope', 'fromShape Scope.DiagnosticScope = Domain.PipelineScope', 'FAIL  exhaustive enum shape round-trip: conformance.RequiredScope.v1'),
+]
+try:
+    baseline = run()
+    if baseline.returncode:
+        raise RuntimeError('baseline failed:\n' + baseline.stdout)
+    for label, path, old, new, expected in mutations:
+        restore()
+        contents = path.read_text()
+        if contents.count(old) != 1:
+            raise RuntimeError('mutation anchor is not unique: ' + label)
+        path.write_text(contents.replace(old, new))
+        result = run()
+        if result.returncode == 0 or expected not in result.stdout:
+            raise RuntimeError('mutation did not fail its named assertion: ' + label + '\n' + result.stdout)
+        print('PASS  mutation: ' + label, flush=True)
+    restore()
+    # Swapping both directions is still a bijection. Only expected wire meaning
+    # can reject this accidental change; round-trip assertions alone cannot.
+    contents = binding.read_text()
+    contents = contents.replace('toShape Domain.PipelineScope = Scope.PipelineScope', 'toShape Domain.PipelineScope = Scope.DiagnosticScope')
+    contents = contents.replace('toShape Domain.DiagnosticScope = Scope.DiagnosticScope', 'toShape Domain.DiagnosticScope = Scope.PipelineScope')
+    contents = contents.replace('fromShape Scope.PipelineScope = Domain.PipelineScope', 'fromShape Scope.PipelineScope = Domain.DiagnosticScope')
+    contents = contents.replace('fromShape Scope.DiagnosticScope = Domain.DiagnosticScope', 'fromShape Scope.DiagnosticScope = Domain.PipelineScope')
+    binding.write_text(contents)
+    result = run()
+    if result.returncode == 0 or 'FAIL  expected enum wire meanings' not in result.stdout:
+        raise RuntimeError('bijective swap escaped expected-wire assertion:\n' + result.stdout)
+    print('PASS  mutation: bijective meaning swap', flush=True)
+    # Fixture order is not a harness contract: generated sampling selects by
+    # projected wire key and register initial, so a reordered supply must pass.
+    restore()
+    contents = binding.read_text()
+    old = 'FixtureCases (("pipeline", Domain.PipelineScope) :| [("diagnostic", Domain.DiagnosticScope)])'
+    new = 'FixtureCases (("diagnostic", Domain.DiagnosticScope) :| [("pipeline", Domain.PipelineScope)])'
+    if contents.count(old) != 1:
+        raise RuntimeError('fixture order anchor is not unique')
+    binding.write_text(contents.replace(old, new))
+    result = run()
+    if result.returncode != 0:
+        raise RuntimeError('reordered fixtures broke the generated harness:\n' + result.stdout)
+    print('PASS  control: fixture order is not a sampling contract', flush=True)
+    for label, old, new, marker in [
+        ('missing binding symbol', 'requiredScopeBinding = StructuralBinding toShape fromShape', 'requiredScopeBinding = missingScopeBinding', 'missingScopeBinding'),
+        ('wrong binding signature', 'requiredScopeBinding :: StructuralBinding Domain.RequiredScope', 'requiredScopeBinding :: StructuralBinding Domain.Request', "Couldn't match type"),
+    ]:
+        restore()
+        contents = binding.read_text()
+        if contents.count(old) != 1:
+            raise RuntimeError('compiler mutation anchor is not unique: ' + label)
+        binding.write_text(contents.replace(old, new))
+        result = run()
+        if result.returncode == 0 or 'error:' not in result.stdout or marker not in result.stdout:
+            raise RuntimeError('compiler mutation did not reach its specific diagnostic: ' + label + '\n' + result.stdout)
+        print('PASS  mutation: ' + label, flush=True)
+finally:
+    restore()
+baseline = run()
+if baseline.returncode:
+    raise RuntimeError('restored baseline failed:\n' + baseline.stdout)
+print('PASS  restored baseline', flush=True)
+PY
